ก่อนหน้านี้ผมเคยลองทำ LINE Bot เล่นบ้างอยู่เหมือนกัน แต่ตอนนั้น LINE เขายังไม่มี Official API ออกมาให้ ทำให้เราต้องแอบเล่นผ่าน Unofficial API ที่มีคนแกะออกมาจากตัวโปรแกรมของไลน์อีกที ข้อดีคือมันใช้กับ Account ธรรมดาของเราได้ แต่ด้วยความที่มันไม่ใช่ Official API ก็ไม่มีอะไรการันตีให้เราได้ว่ามันจะทำงานสมบูรณ์ หลังๆ มานี้ LINE เขาเอาใจ Developer มากขึ้น เขามี Official API ออกมาให้ใช้งานแล้ว แต่ว่าจะใช้งานกับ Account ธรรมดาไม่ได้ ต้องใช้กับ account ที่เป็น LINE@ เท่านั้น ซึ่งเราสมัครใช้งานได้ฟรีๆ อยู่แล้ว
โดยระบบที่เราจะทดสอบทำกันวันนี้ จะเป็นการรอรับข้อความจากผู้ใช้และตอบกลับข้อความนั้นๆ ด้วยข้อความที่เราเตรียมไว้ และทำการส่งข้อความหาผู้ใช้ที่แอ็ดเป็นเพือนกับบอทของเราเพื่อใช้สำหรับสร้างระบบแจ้งเตือนต่างๆ เช่นแจ้งผู้บุกรุก แจ้งราคาน้ำมัน แจ้งราคาทองอะไรประมาณนั้น
มาเริ่มกันเลย ในการสร้าง LINE Bot ให้เราล๊อกอินเข้าไปที่ LINE Business Center และทำการกรอกข้อมูลและลงทะเบียนให้เรียบร้อย อันนี้ทำเองนะครับ พอดีผมไม่ได้ print screen หน้าจอเอาไว้ เข้าไปทำอีกรอบไม่ได้ ฮาาา
เมื่อลงทะเบียนเสร็จแล้วให้เข้าไปที่เมนู Service -› Messaging API และคลิกที่ปุ่ม Start using Developer Trial
อัพเดท: เนื่องจากทาง LINE มีการแก้ไขในส่วนของการลงทะเบียน Messenger API รูปในบทความนี้อาจจะไม่ตรงกับหน้าลงทะเบียนใหม่ ให้ท่านใช้บทความนี้เป็นแนวทางในการศึกษาและอ่านเอกสารและวิธีลงทะเบียนได้จากลิงค์นี้นะครับ https://developers.line.me/en/services/messaging-api/ ส่วนขั้นตอนการเขียนโปรแกรมยังสามารถใช้งานได้เหมือนเดิม
ทำการตั้งชื่อบอท เลือกรูปภาพ และกรอกข้อมูลอื่นๆ ให้เรียบร้อย จากนั้นกดปุ่ม OK ด้านล่าง
ตรวจสอบข้อมูลต่างๆ ให้เรียบร้อยแล้วกด Apply
เมื่อสร้างเรียบร้อยแล้วให้คลิกที่ LINE@ Manager
จากนั้นกดที่ปุ่ม “ใช้ API” และกด “ยืนยัน” (อ้าว ภาษาไทยได้ไงหว่า)
จะเห็นว่าตอนนี้เราสามารถใช้งาน API ได้ 2 ฟังชั่นคือ REPLY_MESSAGE และ PUSH_MESSAGE โดยสามารถดูรายละเอียดการใช้งานทั้ง 2 ฟังชั่นนี้ได้จาก REPLY_MESSAGE และ PUSH_MESSAGE คลิกเข้าไปดูจะเห็นว่าเขียนไม่ยากครับ แค่รอรับและส่งข้อมูลกลับไปกลับมาเท่านั้น
ในหน้านี้จะเห็นว่าด้านขวามือมีชื่อของบอทของเราอยู่ พร้อมกับ LINE@ ID ของบอท เราสามารถแอ็ดเฟรนจาก ID นี้เลยก็ได้ หรือจะใช้ QR Code ในขั้นตอนถัดไปก็ได้ครับ และในส่วนของการตั้งค่าให้เลือก webhook เป็น “อนุญาต” และเลือก Bot เข้าร่วมกลุ่มแชท, ข้อความตอบรับอัตโนมัติ, คำทักทายเริ่มต้นสำหรับการเพิ่มเพื่อนใหม่ เป็น “ไม่อนุญาต” ทั้งหมด แต่ถ้าหากใครจะลองเปิดไว้ก็ได้นะครับ ทาง LINE เขามีระบบตอบรับข้อความอัตโนมัตไว้ให้อยู่แล้ว แทบไม่ต้องทำอะไรเพิ่มเลย เมื่อเลือกเสร็จแล้วกด “บันทึก” เมื่อกดบันทึกเรียบร้อยแล้วให้กดที่ LINE Developers ต่อได้เลยครับ เดียวเราต้องไปใส่ URL ของ webhook ในหน้านั้นอีกที
ในหน้านี้จะเห็นว่ามี QR Code เราสามารถใช้ QR Code ตัวนี้เพื่อทำการแอ็ดเฟรนกับบอทได้เลยครับ หรือจะแอ็ดโดยใช้ LINE@ ID จากหน้าที่แล้วก็ได้ แต่ ID มันสุ่มมาให้อาจจะพิมพ์ตามยากหน่อย และในหน้าเดียวกันจะเห็นว่าในช่อง Webhook URL ยังไม่มีค่าอะไร ให้กด Edit
ทำการใส่ Webhook URL ของเราลงไปครับ URL ตรงนี้จะเป็น URL ที่ใช้รับข้อความจาก LINE โดยจะต้องเป็น HTTPS เท่านั้นนะครับ
หลังจากที่เราใส่ Webhook URL เข้าไปแล้ว ขั้นตอนถัดไปเป็นขั้นตอนการหา Access Token เพื่อเอาไปใช้กับโปรแรกมของเรา ให้คลิกเข้าไปที่ ISSUE ระบบก็จะแสดง Access Token ขึ้นมาให้
เอาหละ เกือบเสร็จแล้ว ขั้นตอนถัดไปคือการเขียนโปรแกรมครับ copy โค้ดตามนี้และทำความเข้าใจกันเอาเองอธิบายไม่ถูกหละ โดยโค้ดชุดนี้จะเป็นการรอรับข้อความที่ถูกส่งเข้ามา และเราจะตอบกลับข้อความนั้นกลับไปว่า ID ของเขาชื่ออะไร หรือหากว่าใครจะเพิ่มคำสั่งอื่นลงไปก็เพิ่มเข้าไปเองเลยครับ และเราจะต้องใช้ ID ตัวนี้ในการส่งข้อความแจ้งเตือนโดยไม่ต้องรอให้ผู้ใช้ทักเข้ามาด้วย (ดูโค้ดแล้วทำการแก้ไข ACCESS_TOKEN เป็น Token ของตัวเองให้เรียบร้อยนะครับ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?php $strAccessToken = "ACCESS_TOKEN"; $content = file_get_contents('php://input'); $arrJson = json_decode($content, true); $strUrl = "https://api.line.me/v2/bot/message/reply"; $arrHeader = array(); $arrHeader[] = "Content-Type: application/json"; $arrHeader[] = "Authorization: Bearer {$strAccessToken}"; if($arrJson['events'][0]['message']['text'] == "สวัสดี"){ $arrPostData = array(); $arrPostData['replyToken'] = $arrJson['events'][0]['replyToken']; $arrPostData['messages'][0]['type'] = "text"; $arrPostData['messages'][0]['text'] = "สวัสดี ID คุณคือ ".$arrJson['events'][0]['source']['userId']; }else if($arrJson['events'][0]['message']['text'] == "ชื่ออะไร"){ $arrPostData = array(); $arrPostData['replyToken'] = $arrJson['events'][0]['replyToken']; $arrPostData['messages'][0]['type'] = "text"; $arrPostData['messages'][0]['text'] = "ฉันยังไม่มีชื่อนะ"; }else if($arrJson['events'][0]['message']['text'] == "ทำอะไรได้บ้าง"){ $arrPostData = array(); $arrPostData['replyToken'] = $arrJson['events'][0]['replyToken']; $arrPostData['messages'][0]['type'] = "text"; $arrPostData['messages'][0]['text'] = "ฉันทำอะไรไม่ได้เลย คุณต้องสอนฉันอีกเยอะ"; }else{ $arrPostData = array(); $arrPostData['replyToken'] = $arrJson['events'][0]['replyToken']; $arrPostData['messages'][0]['type'] = "text"; $arrPostData['messages'][0]['text'] = "ฉันไม่เข้าใจคำสั่ง"; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$strUrl); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $arrHeader); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrPostData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close ($ch); ?> |
หลังจากเขียนโค้ดและอัพโหลดขึ้นเซิฟเวอร์เรียบร้อยก็ลองทักบอทของเราได้เลยครับ มันตอบคำถามได้บ้างหละ
ขึ้นตอนถัดไปเราจะทำระบบ Push message ฟังชั่นนี้เอาไว้ทำระบบแจ้งเตือนต่างๆ เช่นการแจ้งเตื่อนผู้บุกรุกจากอุปกรณ์ IoT หรือแจ้งเตือนราคาน้ำมัน ราคาทองอะไรก็แล้วแต่ โดยเราต้องใช้ ID ของผู้รับจากขั้นตอนที่แล้วในการส่ง เราอาจจะเก็บ User ID ลง Databsae เพื่อเอามาไว้ใช้ทีหลังอะไรก็แล้วแต่นะครับ แต่สำหรับโค้ดตัวอย่างนี้ผมจะใส่ User Id ลงไปตรงๆ (แก้ ACCESS_TOKEN และ USER_ID ให้เรียบร้อยและลองรันได้เลยครับ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $strAccessToken = "ACCESS_TOKEN"; $strUrl = "https://api.line.me/v2/bot/message/push"; $arrHeader = array(); $arrHeader[] = "Content-Type: application/json"; $arrHeader[] = "Authorization: Bearer {$strAccessToken}"; $arrPostData = array(); $arrPostData['to'] = "USER_ID"; $arrPostData['messages'][0]['type'] = "text"; $arrPostData['messages'][0]['text'] = "นี้คือการทดสอบ Push Message"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$strUrl); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $arrHeader); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrPostData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close ($ch); ?> |
หลังจากตรงนี้ไป ก็ไปต่อยอดกันเอาเองครับ แล้วแต่จินตนาการกันเช่นเคย
อ้างอิง :
https://developers.line.me/messaging-api/getting-started
https://developers.line.me/en/services/messaging-api/
https://developers.line.me/console/register/messaging-api/provider/
https://devdocs.line.me/en/