มาลองเล่น LIFF และ Messaging API กัน
/ 6 min read
สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video
** บทความนี้เดี๋ยวอาจจะกลับมาเรียบเรียงใหม่ เนื่องจากเป็นบทความที่ใช้ short note ร่วมกับคลิปดังกล่าว หากอ่านแล้วงงอย่างไร ลองดูจากคลิปกันก่อนได้นะครับ 🙏
รู้จักกันก่อนว่า LIFF คืออะไร ?
LIFF (LINE Frontend-end Framework) คือ WebView ที่สามารถรันเว็บไซต์อยู่ภายในแอป LINE ได้โดยตรง
- มีความสามารถในการทำงานร่วมกับ LINE Login เพื่อทำการทำ Authentication คู่่กันกับ LINE ได้ = LINE auto login
- สามารถเข้าถึง User’s Profile (บางส่วน) ของ LINE ได้ เช่น ชื่อ, ภาพ
- เนื่องจากทำงานอยู่บน LINE = สามารถใช้งานร่วมกับ Chatbot ของ LINE ได้ (เดี๋ยวเราจะมาดูกันว่า ปัจจุบัน developer ทำอะไรกัน LINE แล้วได้บ้าง)
จุดเด่นที่ LIFF พยายามนำเสนอ
- ใช้งานร่วมกับ LINE = ไม่ต้องให้ลูกค้าจำ Login ตอนใช้งาน
- ใช้งานร่วมกับ LINE OA ที่มีอยู่แล้ว ทำให้ลูกค้ารู้สึกมีประสบการณ์ใช้งานเหมือนกับ application ของร้านค้าเอง
- ถ้ามี website อยู่แล้ว สามารถนำมาพัฒนาต่อยอดแล้วนำมาขึ้นบน LIFF ได้เลย
ปัจจุบัน Developer ทำอะไรกับ LINE ได้บ้าง
Ref: https://developers.line.biz/en/docs/
ปัจจุบันนั้น LINE มี service ที่ให้ developer มามีส่วนร่วมหลากหลาย service
เราจะเล่าเฉพาะ service ที่เกี่ยวข้องในวันนี้คือ
- Messaging API = เกี่ยวข้องกับการทำ chatbot บน LINE
- LINE Login = เกี่ยวข้องกับการทำเชื่อมต่อกับ LINE Account
- LIFF (LINE Frontend-end Framework) = Webview ที่สามารถเชื่อมต่อกับ Account ของ LINE ได้
ซึ่งทั้ง 3 service นี้สามารถสื่อสารผ่านตัวกลางหนึ่งที่ชื่อ userId ได้
- userId คือ unique key ที่เป็นตัวแทนของ user ในการสื่อสารกับ service provider ที่เราสร้างเป็น channel (ช่องทาง) ขึ้นมา
- ทุก service ที่อยู่ภายใต้ provider เดียวกัน จะใช้ userId (หรือ uid) เดียวกัน ในการสื่อสาร เช่น
- ถ้า LIFF service ได้ userID นี้มา
- จะเท่ากับ หากเราส่ง Messaging API เข้า userID เดียวกันก็จะสามารถส่งข้อความไปยังคนเดียวกันได้
เดี๋ยวเราจะลองมาเล่นๆไปพร้อมๆกันใน Session นี้
เราจะมา code อะไรกันบ้าง
Session นี้สิ่งที่เราจะทำคือ
- เพิ่มหน้าเว็บสำหรับ LIFF และ LINE Login เข้ามา
- เมื่อนำ LIFF ไปเปิดบน LINE (หรือ LINE Login) จะได้ userId มา เราจะนำ userId นั้นมาเล่นกับ 2 feature ของ Messaging API คือ LINE Message กับ Rich menu กัน
- เราจะลองรับข้อมูลจาก webhook (ที่ได้ userId) มาเหมือนกัน แล้วส่งข้อความกลับไปยัง LINE ของคนๆนั้น
เพื่อมา confirm และผู้ผลลัพธ์ไปพร้อมกันว่า userID ตรงกันหรือไม่
Strucuture project
Step แรก: สร้าง channel สำหรับการทำ LIFF และ Messaging API โดย
- เข้า https://developers.line.biz/ > Login LINE
- กดสร้างตรง Provider
- เสร็จแล้วเมื่อได้ provider มาให้สร้าง channel
- กดสร้าง LINE Login และ Messaiging API มาคู่กัน
index.html
Note
- เพิ่ม liff login (โดยผูกกับ channel ที่สร้างไว้)
- ทดสอบดึง profile โดยเมื่อดึง profile มาได้ = ให้แสดงออกมาที่หน้าเว็บ (แสดงภาพ, uid ออกมา)
ผลลัพธ์
server.js
Ref: https://developers.line.biz/en/reference/messaging-api/
Note
- เพิิ่ม API สำหรับการส่ง LINE Message (เข้า Messaging API) ผ่าน userId (ที่ได้จาก LIFF)
ลองเพิ่มตัวส่งจาก html
Rich menu API
Ref: https://developers.line.biz/en/docs/messaging-api/switch-rich-menus/#richmenu-switch-07
Note
- เราจะลองมาใช้ userID update richmenu กันบ้าง โดยยิงผ่าน Messaging API เพื่อไป update rich menu
- create rich menu
- upload rich menu
เท่ากับเป็นการสร้าง rich menu เรียบร้อย
- set default rich menu
- set link rich menu (กรณีที่อยาก link richmenu ไปมา)
- force update rich menu from webhook (รับ userId จาก webhook และ force ยิงเปลี่ยน rich menu จากข้อความ)
ที่ server.js
- เพิ่มคำสั่ง จัดการกับ rich menu ผ่าน webhook
Flex message
- ลองส่งเป็น Flex message
- ที่ server.js
- ลองนำ LIFF ขึ้นไปเล่นจริงบน LINE
อื่นๆเพิ่มเติม
LON (LINE Official Notification)
LINE shopping API (เชื่อม UID ไม่ได้)
Reference
Richmenu API
- https://medium.com/linedevth/richmenu-swich-action-ba3aa0a9f80a
- https://medium.com/linedevth/%E0%B8%88%E0%B8%B3-action-%E0%B9%84%E0%B8%94%E0%B9%89-%E0%B9%83%E0%B8%8A%E0%B9%89-action-%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99-%E0%B9%83%E0%B8%99-line-messaging-api-99cccc824dcb
- https://developers.line.biz/en/docs/messaging-api/switch-rich-menus/#richmenu-switch-07
- https://linedevth.line.me/th/liff#:~:text=LIFF%20%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3%3F,%E0%B9%81%E0%B8%AA%E0%B8%94%E0%B8%87%E0%B8%AA%E0%B8%B4%E0%B8%99%E0%B8%84%E0%B9%89%E0%B8%B2%E0%B8%88%E0%B8%B3%E0%B8%99%E0%B8%A7%E0%B8%99%E0%B8%A1%E0%B8%B2%E0%B8%81%20%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99%E0%B8%95%E0%B9%89%E0%B8%99
Github
https://github.com/mikelopster/liff-experiment
- รู้จักกับ Web Vitals guideline การสร้าง UX ที่ดีออกมากันมี Video
รู้จักกับคำศัพท์พื้นฐานของ Web Vitals และ use case ต่างๆของ Web Vitals กัน
- มาเรียนรู้พื้นฐาน Functional Programming กันมี Video
มาเรียนรู้พื้นฐาน Functional Programming กันว่ามันคืออะไร
- มาลองทำ Upload file แต่ละเคสกันมี Video มี Github
มาลองทำ upload ไฟล์ โดยจะลองมาทำ upload แบบทั่วไป, ทำ progress upload, validate file และ ยกเลิกการ upload
- ทำไมถึงต้องใช้ Nuxt ทั้งๆที่มี Vue อยู่แล้ว ?มี Video
มาทำความรู้จัก Nuxt กันว่ามันคืออะไร มีความแตกต่างกับ Vue ยังไงบ้าง และเคสแบบไหนควรใช้ Nuxt บ้าง