แจ้งเตือน COVID-19 รายวัน ด้วย Line Message api23 June 2021Programing

แจ้งเตือน COVID-19 รายวัน ด้วย Line Message api

ช่วงเวลานี้ในปัจจุบันมีเรื่องที่เกิดขึ้นบนโลกของเรามากมายจนเราอัพเดตกันไม่ทัน ไม่ว่าจะเป็นข่าวการเมืองหรือเศษรฐกิจก็ตาม แต่มีเรื่องนึงที่จะต้องอัพเดตกันตลอดเวลา แน่นอนก็คงจะหนีไม่พ้นกับเรื่องของ ไวรัส Covid-19 เพราะความร้ายแรงก็เชื้อไวรัสตัวนี้ได้ทำให้คนเสียใจไปเยอะแล้วครับ ซึ่งครั้งนี้ผมจะมาลองดึงข้อมูลจากทาง กรมควบคุมโรค เพื่อเช็คยอดสถานการณ์ ของ Covid-19 ว่าเป็นยังไงบ้าง โดยใช้ Line message api ในการทำหน้าบ้าน เพื่อจะได้เช็คยอดได้อย่างรวดเร็ว และใช้ Node JS เป็นหลังบ้าน จะเป็นยังไงมาดูกัน

ขั้นตอนแรก ต้องสร้าง Line Office Account

  • search Google ว่า Line developer แล้วเลือกเมนูตามภาพ
  • มีปุ่ม Login อยู่มุมขวาบน ให้ทำการ Log In Account ของตัวเอง
  • เลือก Create Provider เพื่อสร้าง Line Office ของเรา

พอสร้างสำเร็จก็จะได้หน้าตาแบบนี้ครับ

  • ต่อมาเราจะทำการสร้าง Message API channel คลิกเมนูตามภาพ
  • ต่อมา กรอบข้อความให้ครบแล้วกดสร้างครับ

เราก็จะได้หน้าตา Line Office ของเราแล้วครับ ถ้าเลื่อนไปแถบ Message API ก็จะมี QR Code ให้เราเพิ่มเพื่อนไปยัง Line Office ของเราครับ

คราวนี้เราก็จะมี Line office เตรียมพร้อมแล้ว  ขั้นตอนต่อไปเราจะมาสร้างปุ่มเพื่อกดเช็คยอดกันครับ หรือที่เรียกว่า Rich Menu

  • ให้เลือกเมนู Message api แล้วเลื่อนลงมาด้านล่างสุดจะเห็นคำว่า Channel access token ให้กด ปุ่ม issue เพื่อที่จะได้ token ของ Channel นี้มา (อย่าให้คนอื่นรู้เด็ดขาดนะครับ ไม่งั่น Chnnel เราอาจจะโดนผู้ไม่ประสงค์ดี เอาไปใช้งานได้)
  • จากนั้นให้เปิด Postman ขึ้นมาแล้ว set ค่าตามนี้ครับ เราจะส่งค่าไปที่ api ของ Line ให้ไปสร้าง RichMenu

URL : https://api.line.me/v2/bot/richmenu

Method : POST

Header : Bearer <Channel access token>

body : JSON

set ข้อมูลเรียบร้อยแล้ว กด send ไปเราจะได้ค่า RichMenu ID กลับมา

  • ขั้นตอนต่อมาเราต้องอัพโหลดรูป ให้กับ RichMenu ตัวนี้ โดยการส่งไปที่ URL ตามข้างล่างนี้

URL : https://api-data.line.me/v2/bot/richmenu/<RichMenu ID>/content

Method : POST

Header : Bearer <Channel access token>

body : เลือก binary แล้ว เลือกรูปที่จะอัพขึ้นไป

จากนั้นก็กดส่ง ค่าที่ได้กลับมาก็จะเป็น {} คืออัพรูปสำเร็จแล้ว

แต่ถึงจะอัพโหลดรูปแล้ว เราจะต้องไป set Default เพื่อให้ไปแสดงใน Line Office ของเรา

  • set Default RichMenu

URL : https://api.line.me/v2/bot/user/all/richmenu/<RichMenu ID>

Method : POST

Header : Bearer <Channel access token>

เราก็จะได้ปุ่มเช็คยอดใน Line office ของเราเรียบร้อยครับตามภาพข้างล่างนี้

โอเค ตอนนี้ในทางฝั่ง หน้าบ้านของเราก็พร้อมแล้ว ขั้นตอนต่อไป เราจะต้องเขียนหลังบ้านโดยใช้ Node JS เพื่อไป เรียก Api ของกรมควบคุมโรค

โดยสามารถโหลด Code จากทางลิ้งด้านล่างนี้ได้เลยครับ

https://github.com/MaxZero-Zity/Covid-dev

  • จากนั้น cd เข้าไปใน project แล้วใช้คำสั่ง npm install เพื่อลง package ที่เตรียมไว้
  • เปิดไฟล์ที่ชื่อว่า /Covid-dev/controllers/covidLineMessageController แล้วในแก้ไข ตรง Channel access token ให้เป็นของตัวเอง
  • ขั้นตอนต่อไปก็ใช้คำสั่ง node index.js

ตอนนี้ server node ของเราก็พร้อมใช้งานเรียยร้อย แต่จะทำยังไงให้ Line มา เรียกที่ api ที่เราสร้าง เราต้อง deploy ขึ้น server จริงๆ แต่มันมีวิธีอยู่ที่จะให้สามารถเทสบนเครื่องได้ โดยใช้ ngrok ครับ

วิธีติดตั้งอยู่ในลิ้งด้านล่างนี้ครับ

https://ngrok.com/download

  • พอลง ngrok เรียบร้อยแล้วก็ใช้คำสั่งไปรันในพอร์ตที่ server Node ของเราทำงานอยู่ในที่คือ port 3000 โดยใช้คำสั่ง ./ngrok http 3000 ที่นี้เราก็จะได้ https ที่ใว้ใช้เรียก api ของเราแล้วครับ ให้ทำการ copy ไว้
  • นำ URL ที่ copy ไปใส่ใน Line devlopers ในช่อง webhook URL แล้วตามด้วย path ที่จะให้ ตัว Line ไปเรียกในที่คือ api/getStatusCovid/pushMessageLine
  • สุดท้าย ก็ลองกดปุ่ม ใน Line office ของเราได้เลย ก็จะได้ตามภาพแบบนี้ครับ

เท่านี้เราก็จะได้เช็คสถานการณ์ Covid-19 ได้ทุกวันไม่ว่าจะอยู่ที่ไหนก็ตาม โดยที่ต้อง deploy งานตัวนี้ขึ้น server ให้ online ซึ่งมีของฟรีให้ใช้อยู่ไม่ว่าจะเป็น Firebase Cloud Function  หรือจะเป็น Heruko อันนี้ก็ได้เหมือนกันครับ

ก่อนหน้า
ถัดไป