ทำ 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



จบครับ ง่ายไหมครับ


ความคิดเห็น

  1. เยี่ยมมากเลยค่ะ

    ตอบลบ
  2. ช่วยทำตัวอย่าง Linebot ติดต่อกับฐานข้อมูลที่เราต้องการตอบกลับหน่วยครับ ขอบคุณครับ

    ตอบลบ
    คำตอบ
    1. ขออีเมล์ครับ เดี๋ยวส่งให้ครับ

      ลบ
    2. ขอด้วยครับ thanee@se-ed.com

      ลบ
    3. รบกวนขอด้วยคนนะครับ

      cphantom10@gmail.com

      ขอบคุณครับ

      ลบ
    4. ขอด้วยครับ hs4tpt@gmail.com

      ลบ
    5. ไม่ระบุชื่อ21 มกราคม 2561 เวลา 17:10

      รบกวนขอด้วยครับ t_o_tar_dexza@windowslive.com

      ลบ
    6. รบกวนด้วยครับ piyapongchaisri@gmail.com

      ลบ
    7. ขอด้วยครับ komkrit.pa@gmail.com ขอบคุณครับ

      ลบ
    8. รบกวนด้วยครับคนครับ
      Detchanin@hotmail.com
      ขอบคุณครับ

      ลบ
    9. รบกวนขอด้วยครับ ยังทันไหม naphat.ana@gmail.com

      ลบ
    10. รบกวนด้วยครับ babysparker@live.com

      ลบ
    11. รบกวนขอด้วยครับ narong_mit@hotmail.com

      ลบ
  3. ผมขอด้วยคนครับ doctorcomp24@gmail.com ขอบพระคุณครับ

    ตอบลบ
  4. ขอด้วยครับ sangsiri@gmail.com ขอบคุณครับ

    ตอบลบ
  5. ขอด้วยครับ bosspatjaikub@gmail.com ขอบคุณครับ

    ตอบลบ
  6. ขออนุญาตครับ มือใหม่ ลองทำตามแล้วไม่ได้เลย ไม่รู้ว่าติดตรงไหนครับ

    ตอบลบ
  7. ขอด้วยครับ supersharp3310@gmail.com

    ตอบลบ
  8. ใช้Herokuเป็นServer จะเชื่อมกับMySQLได้ไหมคะ แล้วsetให้มันเตือนยังไงอ่าคะ

    ตอบลบ
    คำตอบ
    1. https://cron-job.org/ ใช้เว็บนี้ตั้งค่าสั่งให้ run คัรบ

      ลบ
  9. รบกวนขอด้วยคนครับผม
    aranyuth@gmail.com

    ตอบลบ
  10. ยังทันไหมครับ supornchai2525@gmail.com ขอบคุณครับ

    ตอบลบ
  11. ช่วยทำตัวอย่าง Linebot ติดต่อกับฐานข้อมูลที่เราต้องการตอบกลับหน่วยครับ ขอบคุณครับ

    ตอบลบ
  12. ทำตามโค้ดด้านบนไม่สามารถส่งรูปได้ค่ะ Invalid image.

    ตอบลบ
  13. รบกวนขอตัวอย่าง Linebot ติดต่อกับฐานข้อมูลหน่อยนะคะ ขอบคุณค่ะ

    ตอบลบ
  14. ไม่เคยใช้ ไพธอน เลย ตต้องติดตั้งอะไรเพิ่มเติมบ้างคะ ใช้อะไรเป็น data base

    ตอบลบ

แสดงความคิดเห็น