ทำ line bot อวยพรวันเกิดให้คนในที่ทำงานแบบอัตโนมัติผ่านไลน์กลุ่ม
ด้วยอีก 2 วัน จะถึงวันเกิดของคนในแผนก ก็เลยทำระบบอวยพรอัตโนมัติแจ้งเตือนผ่านไลน์ พร้อม การ์ดอวยพร แบบอัตโนมัติ (กันลืม)
วิธีการทำ (คร่าว ๆ )
1.อย่างแรกก็ต้องมีฐานข้อมูลวันเกิดของคนในแผนกก่อน เก็บไว้ใน mysql แล้วก็เขียน php ดึงออกมาให้ได้ก่อนว่าถ้าเกิดตรงกับวันนี้ก็ให้แสดงค่าออกมา
2.สร้าง line notify แล้วเอา line token มาใส่ใน line api php (มีตัวอย่างในเว็บ )
3.สำหรับ windows server ก็ไปตัั้ง task ให้ run file php ในข้อ 1 ของเราทุกวัน ๆ วันละ ในเวลา 05:30 ถ้ามีคนเกิดตรงกับวันนั้น มันก็จะส่งคำอวยพรเข้า Line กลุ่ม แต่ถ้าไม่มีใครเกิด ระบบก็จะไม่แสดงอะไร
ผมว่าน่ะครับ ถ้าการ์ดอวยพรนั้น ผู้บริหารทำเอง ผู้รับก็จะภูมิใจครับ ได้ใจลูกน้องไปเลยครับ เอาไปลองทำกันดูน่ะครับ
เพียงเท่านี้ ก็จะไม่มีวันลืมอวยพรวันเกิดของคนในแผนกเลย ยกเว้น server ดับ
ขั้นตอนการลงมือทำจริง
1.สร้าง ฐานข้อมูลเก็บข้อมูลวันเกิด ตัวอย่างน่ะครับ
คำสั่งสร้าง database mysql
CREATE TABLE `contacts` (
`id` int(3) NOT NULL auto_increment,
`name` varchar(300) character set utf8 NOT NULL,
`position` varchar(300) character set utf8 NOT NULL,
`email` varchar(300) character set utf8 default NULL,
`mobile` varchar(100) character set utf8 default NULL,
`telephones` varchar(100) character set utf8 default NULL,
`id_position` int(4) default NULL,
`birth` date default NULL,
`id_group` int(2) default NULL,
`level` int(2) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
2.เข้าเว็บ https://notify-bot.line.me เพื่อสมัคร line notify ไม่อธิบายน่ะครับ ลองหาอ่านดู เมื่อสมัครเสร็จแล้ว ก็เอา line notify token มาใช้ และ add line notify ที่ไหนเข้ากลุ่มในแผนกเรา
3.สร้างไฟล์ line api php ครับ
///////
<?php
$message = $_REQUEST['message'];
$chOne = curl_init();
curl_setopt( $chOne, CURLOPT_URL, "https://notify-api.line.me/api/notify");
// SSL USE
curl_setopt( $chOne, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt( $chOne, CURLOPT_SSL_VERIFYPEER, 0);
//POST
curl_setopt( $chOne, CURLOPT_POST, 1);
// Message
curl_setopt( $chOne, CURLOPT_POSTFIELDS, $message);
//ถ้าต้องการใส่รุป ให้ใส่ 2 parameter imageThumbnail และimageFullsize
curl_setopt( $chOne, CURLOPT_POSTFIELDS, "message=$message&imageThumbnail=http://10.10.10.10/birthday.jpg&imageFullsize=http://10.10.10.10/birthday.jpg");
// follow redirects
curl_setopt( $chOne, CURLOPT_FOLLOWLOCATION, 1);
//ADD header array
$headers = array( 'Content-type: application/x-www-form-urlencoded', 'Authorization: Bearer ใส่ไลน์ token ลงไปแทน', );
curl_setopt($chOne, CURLOPT_HTTPHEADER, $headers);
//RETURN
curl_setopt( $chOne, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec( $chOne );
//Check error
if(curl_error($chOne)) { echo 'error:' . curl_error($chOne); }
else { $result_ = json_decode($result, true);
echo "status : ".$result_['status']; echo "message : ". $result_['message']; }
//Close connect
curl_close( $chOne );
?>
*** ถ้าหากมีปัญหาเรื่องภาษาไทยที่ส่งอ่านไม่ออก ให้เข้าเว็บไซด์นี้ http://meyerweb.com/eric/tools/dencoder/ ใส่ข้อความลงไปแล้ว copy เอามาใช้ครับ
////////
4.สร้างไฟล์ check php ครับ ไฟล์นี้จะไปดึงข้อมูลมาจากฐานข้อมูลครับ
ไฟล์ connect databse con_db.php
<?php
$Setup_Server = 'localhost';
$Setup_User = 'xxxxx';
$Setup_Pwd = 'xxxxxxx';
$Setup_Database = 'ชื่อ database';
mysql_connect($Setup_Server,$Setup_User,$Setup_Pwd);
mysql_query("use $Setup_Database");
mysql_query("SET NAMES UTF8");
?>
ไฟล์ bot php ครับ
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
include('con_db.php');
$sql = "SELECT *,DATE_FORMAT(birth,'%d/%m/%Y') AS births,2560-YEAR(birth) AS ages ,DATE_FORMAT(birth,'%d/%m/%Y') AS birthday
FROM contacts
WHERE MONTH(STR_TO_DATE(birth,'%Y-%m-%d'))= MONTH(NOW()) AND
DAY(STR_TO_DATE(birth,'%Y-%m-%d'))= DAY(NOW()) AND id_group=4 ";
$resource = mysql_query($sql);
$count_row = mysql_num_rows($resource);
if($count_row > 0) {
while($result =mysql_fetch_array($resource)){
$name = $result['name'];
$birthday =$result['birthday'];
$age = $result['age'];
$message = "Happy birthday ".' '.$name." in ".' '.$birthday;
echo '<iframe src="bot.php?message='.$message.' "></iframe>';
}
}else{
//
}
?>
////////
5.ขั้นตอนสุดท้ายครับ ไปตั้ง task ของ windows สั่งให้ run boot.php ทุกๆ 05:00 หรือตามต้องการครับ หลังจากสร้าง task เสร็จแล้ว ก็ลองทดสอบ run ดูน่ะครับ ว่าทำงานไหม
ขั้นตอนการสร้าง task ครับ อ่านได้จากนี้ก็ได้ครับ https://havespirit.blogspot.com/2017/02/line-notify-login-server-ssh-linux.html
เพิ่มเติม 22 มี.ค. 2561
สามารถตั้งค่าให้รันได้โดยใช้ผ่าน เว็บนี้ครับ https://cron-job.org/ ใช้แทน windows schedule task ได้เลย
แต่ถ้าไม่มี server จริง ก็ใช้ ngrok จำลองเป็น webserver จริงได้ครับ จากบทความนี้ https://medium.com/@nattaponsirikamonnet/มาเข้าถึง-localhost-จาก-internet-ด้วย-ngrok-กันเถอะ-79ca1a350b92
จบครับ ง่ายไหมครับ
เยี่ยมมากเลยค่ะ
ตอบลบช่วยทำตัวอย่าง Linebot ติดต่อกับฐานข้อมูลที่เราต้องการตอบกลับหน่วยครับ ขอบคุณครับ
ตอบลบขออีเมล์ครับ เดี๋ยวส่งให้ครับ
ลบขอด้วยครับ thanee@se-ed.com
ลบรบกวนขอด้วยคนนะครับ
ลบcphantom10@gmail.com
ขอบคุณครับ
ขอด้วยครับ hs4tpt@gmail.com
ลบรบกวนขอด้วยครับ t_o_tar_dexza@windowslive.com
ลบรบกวนด้วยครับ piyapongchaisri@gmail.com
ลบขอด้วยครับ komkrit.pa@gmail.com ขอบคุณครับ
ลบรบกวนด้วยครับคนครับ
ลบDetchanin@hotmail.com
ขอบคุณครับ
รบกวนขอด้วยครับ ยังทันไหม naphat.ana@gmail.com
ลบรบกวนด้วยครับ babysparker@live.com
ลบรบกวนขอด้วยครับ narong_mit@hotmail.com
ลบผมขอด้วยคนครับ doctorcomp24@gmail.com ขอบพระคุณครับ
ตอบลบขอด้วยครับ sangsiri@gmail.com ขอบคุณครับ
ตอบลบขอด้วยครับ bosspatjaikub@gmail.com ขอบคุณครับ
ตอบลบขออนุญาตครับ มือใหม่ ลองทำตามแล้วไม่ได้เลย ไม่รู้ว่าติดตรงไหนครับ
ตอบลบขอด้วยครับ supersharp3310@gmail.com
ตอบลบใช้Herokuเป็นServer จะเชื่อมกับMySQLได้ไหมคะ แล้วsetให้มันเตือนยังไงอ่าคะ
ตอบลบhttps://cron-job.org/ ใช้เว็บนี้ตั้งค่าสั่งให้ run คัรบ
ลบรบกวนขอด้วยคนครับผม
ตอบลบaranyuth@gmail.com
ยังทันไหมครับ supornchai2525@gmail.com ขอบคุณครับ
ตอบลบช่วยทำตัวอย่าง Linebot ติดต่อกับฐานข้อมูลที่เราต้องการตอบกลับหน่วยครับ ขอบคุณครับ
ตอบลบทำตามโค้ดด้านบนไม่สามารถส่งรูปได้ค่ะ Invalid image.
ตอบลบรบกวนขอตัวอย่าง Linebot ติดต่อกับฐานข้อมูลหน่อยนะคะ ขอบคุณค่ะ
ตอบลบไม่เคยใช้ ไพธอน เลย ตต้องติดตั้งอะไรเพิ่มเติมบ้างคะ ใช้อะไรเป็น data base
ตอบลบ