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

    ตอบลบ

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

โพสต์ยอดนิยมจากบล็อกนี้

แจ้งเตือนเข้าไลน์กลุ่ม ผ่าน Line notify เมื่อมีคน login เข้า server ของเราผ่าน SSH (linux) หรือ remote desktop เข้ามา (windows server)

การทำ cloud iot ด้วย thingsboard ไว้ใช้เองครับ

การประยุกต์ใช้ line notify ในการแจ้งปัญหาการใช้งาน สำหรับ php