สวัสดีครับ หลังจากห่างหายไปนาน วันนี้ตั้งใจมาแชร์สิ่งที่น่าจะเป็นประโยชน์กับหลายท่านในช่วงนี้ นั่นก็คือการส่งแจ้งเตือน / ส่งข้อความไปทาง LINE ด้วย LINE Messaging API
ที่มา
ก่อนหน้านี้การที่จะทำให้ระบบใดๆก็ตามส่งข้อความหา User ผ่านทางแอป LINE ได้ วิธีการที่ง่ายที่สุดก็คือการใช้งาน LINE Notify ซึ่งเป็นวิธียอดนิยม มีการเผยแพร่วิธีการ สอนการใช้งาน LINE Notify กับหลากหลายระบบ รวมถึงการใช้งานกับ Power Automate ด้วยเช่นกัน
แต่… ในช่วงปลายปี 2024 ทาง LINE ได้ประกาศยุติการให้บริการ LINE Notify โดยบริการนี้จะสามารถใช้งานได้วันสุดท้ายถึงวันที่ 31 มีนาคม 2025 ซึ่งนับจากตอนนี้ก็เหลือไม่กี่เดือนแล้ว
หลาย ๆ ที่ไม่ว่าจะเป็น developer บุคคลธรรมดา หรือในนามบริษัท ก็กำลังวุ่นกับการหาเครื่องมือใหม่มาทดแทน ซึ่งแน่นอนว่าก็พอมีตัวเลือกอื่นอยู่
แต่เราต้องไม่ลืมว่า คนที่เป็น End user นั้น ไม่ใช่ทุกคนจะยอมเปลี่ยน ยิ่งโดยธรรมชาติของคนไทยเอง คุ้นชินกับการใช้ LINE มากอยู่แล้ว เลยไม่ใช่เรื่องแปลกที่หลาย ๆ ที่ยังจำเป็นต้องใช้ LINE เหมือนเดิม
ซึ่งทาง LINE ก็มีบริการที่สามารถนำมาใช้แทนได้ นั่นก็คือ LINE Messaging API
วันนี้เลยเป็นโอกาสดีที่ผมจะมาแสดงตัวอย่าง ของการใช้งาน LINE Messaging API ร่วมกันกับ Power Automate
สิ่งที่ต้องเตรียม
1. LINE Business ID
สมัครใช้งานได้ที่ https://account.line.biz/login
2. LINE Developer
สมัครใช้งานได้ที่ https://developers.line.biz/console/
3. Power Automate Premium
การใช้เรียกใช้งาน API ภายนอกด้วย Power Automate นั้น จำเป็นต้องใช้ license ตัวนี้
หากทั้งหมดนี้พร้อมแล้ว งั้นเราไปเริ่มกันเลย!
สร้าง Provider
Provider นั้นเปรียบเสมือนการระบุผู้เผยแพร่ หรือก็คือผู้ที่สร้าง ผู้ที่เป็นเจ้าของการใช้งาน API ของ LINE ดังนั้นเราจำเป็นต้องสร้างสิ่งนี้เป็นอย่างแรก ซึ่งทำได้ง่าย ๆ ผ่านหน้าเว็บ LINE Developers >> https://developers.line.biz/console/
โดยเราสามารถตั้งชื่อว่าอะไรก็ได้ ตั้งเป็นชื่อเรา หรือว่าชื่อบริษัทก็ได้เช่นกัน
สร้าง Channel
หลังจากเราได้ Provider มาแล้ว ถัดมาเราจะสร้าง Channel ซึ่งเปรียบเสมือนตัวตนของ Bot ของเราที่จะใช้ในการส่งข้อความ
กด Create a Messaging API channel กด Create a Messaging API channel
ซึ่ง ณ ตอนที่เขียนบทความนี้ การจะสร้าง Channel นั้น เราต้องสร้างบัญชี LINE Official Account ขึ้นมา ดังนั้นกด Create ไปได้เลย
เปิดใช้งาน Messaging API สำหรับ LINE OA
บัญชี LINE OA ที่สร้างขึ้นนั้นในตอนแรกจะยังไม่ได้เปิดใช้งาน Messaging API ซึ่งเราต้องไปเปิดก่อน โดยการเข้าไปที่ Setting ของ LINE OA
ทำการเลือก Provider ที่ได้สร้างไว้ในขั้นตอนก่อนหน้านี้
เพียงเท่านี้ LINE OA ของเราก็พร้อมใช้งาน Messaging API แล้ว หากลองกลับไปดูที่ LINE Developers จะเห็นว่ามีชื่อ LINE OA ของเราเพิ่มขึ้นมา
สร้าง Power Automate Flow สำหรับรองรับ Webhook
ข้อนี้ถ้าใครไม่คุ้นเคยกับการทำ API อาจไม่คุ้นเคย อธิบายง่าย ๆ Webhook คือการที่เซิฟเวอร์จะส่งสัญญาณ (HTTP Request) มาหาเรา เมื่อมีเหตุการณ์ใด ๆ เกิดขึ้น ซึ่งเราต้องมีเซิฟเวอร์ปลายทางของเราเอาไว้รับสัญญาณนี้เช่นกัน ซึ่งเราจะใช้ Power Automate เป็นปลายทาง
ซึ่งในกรณี LINE Webhook นี้ คนที่จะส่งสัญญาณมาหาเราก็คือ LINE โดยเหตุการณ์ที่ LINE จะส่งสัญญาณมาก็มีหลายอย่าง ยกตัวอย่างเช่น
- มีคนส่งข้อความหาบอทของเรา
- มีคนเพิ่มบอทของเราเป็นเพื่อน
- มีคนกดบล็อค/ปลดบล็อคบอทของเรา
- มีคนดึงบอทเข้าแชทกลุ่ม
ซึ่งเราต้องใช้ข้อมูลตรงนี้ เพราะว่าการที่เราจะส่งข้อความหาบุคคลหรือส่งเข้ากลุ่มใน LINE ได้ เราต้องรู้ ID ของคน/กลุ่มนั้นเสียก่อน ซึ่งข้อมูลที่ได้จาก Webhook จะเป็นตัวบอกเรา
ดังนั้น เราไปที่หน้าเว็บของ Power Automate และสร้าง Flow ได้เลย โดยตั้งค่าดังนี้
- Type: Instant cloud flow
- Trigger: When an HTTP request is received
เมื่อเข้าสู่หน้า Flow Designer แล้ว อย่างแรกเลยคือให้ปรับ Who can trigger the flow ให้เป็น Anyone ก่อน ไม่อย่างงั้น LINE จะส่ง Request มาที่ flow นี้ได้
ถัดมา ให้เพิ่ม Action ที่ชื่อ Compose เข้ามา และใส่ Body ที่ได้มากจาก Trigger ด้านบนเข้าใน Inputs ของ Compose
รียบร้อย ในส่วนของ Webhook เราทำแค่นี้ กด Save flow ได้เลย
เมื่อ Save เรียบร้อยให้ลองคลิกที่ Trigger manual ของเรา สังเกตว่า HTTP URL ตรงนี้มีข้อมูลขึ้นมาแล้ว ให้ก๊อปตรงนี้ไว้
(เก็บ URL นี้ไว้ให้ดี อย่าให้รั่วไหล เพราะใครก็ตามที่มี URL นี้ จะสามารถใช้งาน flow นี้ได้ด้วย)
กลับมาที่ LINE Developers ให้กดเข้าที่ Channel ที่เราเพิ่งสร้างมา แล้วไปที่แท็ป Messaging API
กด Edit Webhook URL
วาง URL ที่ได้จาก Power Automate แล้วกด Update
กดเปิด Use webhook ด้วย
เพียงเท่านี้ LINE ก็พร้อมที่จะส่ง Request มาหาเราเมื่อมีเหตุการณ์ใด ๆ เกิดขึ้น
แอดเพื่อนกับบอท / ดึงบอทเข้ากลุ่ม
ขั้นตอนนี้เราจะดูว่า Webhook ของเราใช้งานได้ไหม ลองแอดเพื่อนหาบอท หรือดึงบอทเข้ากลุ่มดู
การจะดึงบอทเข้ากลุ่มได้ ต้องไปปรับตรง Allow bot to join group chats ให้เป็น Enabled เสียก่อน
ลองแอดเพื่อนกับบอทดู
ลองดึงบอทเข้ากลุ่มด้วย กรณีอยากให้บอทส่งข้อความเข้ากลุ่ม
ทีนี้ลองมาดู Run history ของ flow จะเห็นว่า flow ของเราเริ่มทำงานแล้ว นั่นก็เพราะ LINE เริ่มส่ง Webhook มาที่ flow ของเราแล้วนั่นเอง
ซึ่งตรงนี้เราจะได้ User ID ของคนที่แอดเพื่อนมาหาบอทแล้ว ให้เก็บตรงนี้ไว้ เพราะเวลาเราจะส่งข้อความหาใคร เราต้องใช้ User ID
เช่นเดียวกันกับกรณีที่ดึงบอทเข้ากลุ่ม เราจะได้ Group ID มาแทน
หากได้ User ID หรือ Group ID ที่ต้องการใช้ครบแล้ว ปิด flow นี้ไปก่อนได้ครับ เพราะหลังจากนี้เราจะไม่ได้ใช้แล้ว เราใช้แค่เพราะเราต้องการ ID ของคน/ของกลุ่มเท่านั้น
สร้าง Token สำหรับเรียก Messaging API
ตอนนี้เรามีทุกอย่างพร้อมแล้ว เรามี User ID / Group ID ที่เราจะส่งข้อความหาแล้ว ใกล้ได้เวลาที่จะให้บอทส่งข้อความแล้ว
แต่ก่อนหน้านั้น เราต้องมีกุญแจ (Token) ที่เป็นเสมือนกุญแจ ที่จะทำให้ Power Automate สามารถสั่งงาน LINE Messaging API ได้เสียก่อน
ซึ่งจริงๆแล้วทาง LINE มี Token หลายแบบให้ใช้ ซึ่งตอนนี้เราจะเลือกใช้ตัวที่ง่ายที่สุดคือ “Long-lived channel access token”
วิธีการจะได้มาก็ง่าย ๆ แค่กด Issue จากหน้า Channel ของบอทของเรา
กดแล้วเราจะได้ Token ยาวๆแบบนี้มา เก็บให้ดี!
อย่าเผยแพร่ token นี้ให้คนอื่นทราบเป็นอันขาด
สร้าง Flow สำหรับส่งข้อความ
เอาล่ะ ได้เวลาที่จะส่งข้อความจริงๆแล้ว ซึ่งในขั้นตอนนี้ flow ของแต่ละท่านอาจจะแตกต่างกันออกไปตามแต่การใช้งานเลย ซึ่งผมจะยกตัวอย่างเป็น Instant cloud flow ง่ายๆที่เมื่อกด Run ตัว flow ก็จะสั่งให้บอทส่งข้อความทันที ซึ่งแต่ละท่านก็นำไปประยุกต์เข้ากับตัวเองได้เลย
เราจะใช้ action HTTP ในการส่งข้อมูลออกไป โดยตั้งค่าดังนี้
- URI: https://api.line.me/v2/bot/message/push
- Method: POST
- Authentication: Raw
Bearer [token]
ส่วน Body ใส่เป็น JSON ลักษณะนี้
{
"to": "UserID/GroupID",
"messages": [
{
"type": "text",
"text": "สวัสดี นี่คือข้อความที่ส่งจาก Power Automate"
},
{
"type": "text",
"text": "เพื่อทดสอบ Messaging API"
}
]
}
เสร็จแล้วลอง Save และ Run flow ดู
เราก็จะได้รับข้อความที่ส่งมาจากบอทของเราเรียบร้อยแล้ว
เป็นอันเรียบร้อย เราสามารถส่งข้อความได้แบบเดิมแล้ว เพียงแต่เปลี่ยนรูปแบบแค่นั้นเอง
ซึ่งตัว LINE Messaging API นั้นสามารถใช้ได้อีกยาวนานเลยทีเดียว
ค่าใช้จ่าย
เรื่องที่ไม่พูดถึงไม่ได้นั่นก็คือค่าใช้จ่าย ตัว LINE Messaging API นั้นมีจำกัดโควตาการใช้ฟรี หากต้องการส่งข้อความจำนวนมาก ๆ ก็จะมีค่าใช้จ่ายเพิ่มเติม ซึ่งมีค่าใช้จ่ายดังนี้
สามารถอัพเกรดหรือดูรายละเอียดเพิ่มเติมได้จาก
บัญชี LINE OA ของท่าน > Settings > Monthly plan
ข้อควรระวังคือจำนวนข้อความที่นับนั้น ถ้าเป็นการส่งข้อความเข้าในกลุ่มที่มีสมาชิก 10 คน การส่ง 1 ข้อความนั้นจะถูกนับเป็น 10 ข้อความทันที ดังนั้นอย่าลืมคำนวณค่าใช้จ่ายให้พอดีนะครับ!
แหล่งข้อมูลเพิ่มเติม
ในบทความนี้สาธิตตัวอย่างการใช้งาน LINE Messaging API และ LINE Webhook แบบง่าย ๆ เท่านั้น ซึ่งทั้งหมดยังมีรายละเอียดอีกมากที่สามารถทำและศึกษาเพิ่มเติมได้ครับ
- https://developers.line.biz/en/docs/messaging-api/overview/
- https://developers.line.biz/en/docs/messaging-api/receiving-messages/
แหล่งที่มา : PAWIT.PW