มาลองสร้าง LINE Bot ง่ายๆ กันเถอะ
เนื่องจากจะมีงาน LINE Developer Meetup #2 ซึ่งก็สมัครไปแล้วแต่ก็ไม่รู้ว่าจะได้บัตรไหม วันนี้ผมเลยอยากลองมาสร้าง LINE bot ง่ายๆ ดีกว่า 👨🏻💻
เริ่มต้นด้วย Messaging API
Messaging API ยอมให้ข้อมูลส่งกันระหว่าง server ของ bot application กับ LINE platform เมื่อ user ส่ง message มายัง bot ตัว webhook จะ trigger ให้ LINE ส่ง request ไปยัง webhook URL ของ bot application และจำส่ง request กลับไปยัง LINE เพื่อตอบสนองไปยัง user โดยที่ request จะส่งผ่าน HTTPS ใน JSON format
สร้าง Channel ใหม่
- เข้าสู่ระบบ LINE Developer console ด้วย email/password ของ LINE account ที่เรามีอยู่แล้ว (ถ้าไม่มีก็สมัคร LINE account ใหม่ได้)
- ลงทะเบียนตัวเราให้เป็น Developer เปรียบเสมือนเปลี่ยนสถานะเราจากผู้ใช้งานธรรมดาให้เป็น Developer mode เพื่อใช้งานเครื่องมือต่างๆ ของ LINE Developer console ได้ (ทำครั้งเดียวตอนเปลี่ยนสถานะ)
- สร้าง Provider ใหม่ในบัญชีของเรา โดยใช้ชื่ออะไรก็ได้ (ชื่อของ Provider น่าจะอยู่ภายใต้ account เราเลย หรืออาจจะซ้ำไม่ได้ เพราะลองใช้ชื่อ LINE จะไม่ได้)
- สร้าง Channel ใหม่ใน Provider ที่เราสร้างขึ้นมา โดยใส่ข้อมูลต่างๆ ให้ครบ (อาจจะใส่รูปด้วยก็ได้) และ confirm ข้อมูลต่างๆ แล้วกด Create เพื่อสร้าง หลังจากนั้นก็จะได้ Channel ใหม่ใน Provider ของเรา
สร้าง bot ง่ายๆ ด้วย Heroku
โดยการสร้าง bot ของ LINE Developer guid แนะนำให้ใช้ Heruku ดังนั้นเราจะต้องมี Heruku account ก่อน (ถ้ายังไม่มีก็สร้างขึ้นมาใหม่ ผมเองก็สร้างใหม่) โดยการใช้ Messessing API SDK for Java ซึ่ง LINE เองก็ยังรองรับภาษาอื่นๆ อีกด้วย อย่างเช่น Go, PHP, Perl, Ruby, Python และ Node.js
Deploy “echo” simple bot
- เอา Channel access token และ Channel secret จากหน้า Channel Setting ของ LINE Developer console (อันนี้ความลับ อย่าบอกใครน่ะ) ถ้าหาก access token ไม่มี ก็ให้สร้างใหม่ โดยการกดที่ Issue
- คลิ๊กปุ่ม Deploy to Heroku ในหน้า README.md ใน
sample-spring-boot-echo
ของ Github ดังรูป
- ใส่ข้อมูลของ App ที่จะสร้างในช่องต่างๆ ของ Create New App ที่สำคัญคือ Channel access token และ Channel secret ที่ได้จากขั้นตอนแรก และกดปุ่ม Deploy app และรอ processing (สักพักใหญ่ … ) ให้เรียบร้อย
- กลับมาที่ LINE Developer console ใส่ Webhook URL โดยใช้ format นี้
https://{HEROKU_APP_NAME}.herokuapp.com/callback
โดยที่HEROKU_APP_NAME
ก็คือชื่อของ App ใน Heroku ในที่นี้คือiphayao-app
(อาจจะต้อง enable “Use webhooks” ถ้าส่งข้อความหา bot แล้ว bot ไม่ตอบ)
- เพิ่ม bot เป็นเพื่อนของคุณ ด้วยการ scan QR code ในส่วนด้านล่างของหน้า Channel Setting ใน LINE Developer console
- ลองส่งข้อความหา bot ดูว่ามีข้อความตอบรับไหม โดยที่ จะตอบกลับเป็นข้อความที่เราส่งไป
Update bot ด้วย “kitchensink” sample bot
- clone line-bot-sdk-java จาก GitHub มาในเครื่องของเรา
- เปิดไฟล์
Procfile
ซึ่งเป็น process file ของ Heroku แก้คำว่าecho
เป็นkitchensink
// Before
web: java $JAVA_OPTS -jar sample-spring-boot-echo/build/libs/sample-spring-boot-echo-*.jar --server.port=$PORT
// After
web: java $JAVA_OPTS -jar sample-spring-boot-kitchensink/build/libs/sample-spring-boot-kitchensink-*.jar --server.port=$PORT
- copy ไฟล์ sample-spring-boot-kitchensink/src/main/resources/application -template.yml เป็น
application.yml
และใส่channel-token
กับchannel-secret
เหมือนกับที่ใส่ใน “echo” simple bot อย่าลืมลบข้อความ This is tempalte file for configuration. Please copy as application.yml and change your value ออกด้วยน่ะครับ ถ้าไม่ลบจะไม่ config ได้ถูกต้อง - กลับมายังโฟล์เดอร์ line-bot-sdk-java และเพิ่ม Heroku git remote ซึ่งชื่อของ app ก็เหมือนกับ “echo” simple bot
$ heroku git:remote -a {HEROKU_APP_NAME}
- เพิ่มไฟล์ที่แก้เข้าไปใน git และ commit/push
$ git add .
$ git commit -m 'First commit'
$ git push heroku master
ทดลองส่งข้อความดังนี้เพื่อทดสอบ
- ส่งข้อความ “profile” จะได้ข้อมูลเกี่ยวกับ user profile
- ส่งข้อความ “buttons” “confirm” หรือ “carousal” จะได้ข้อมูลเกี่ยวกับ template message
- ส่งข้อความ “imagemap” เพื่อส่ง imagemap message
- ลอง invite bot เข้าไปในกลุ่ม และส่งข้อความ “bye” เพื่อให้ bot ออกจากกลุ่มเอง (จะต้อง enable “Allow bot to join group chats” ก่อน)
- ส่ง image, audio, video หรือ location ให้ bot โดย bot จะรับข้อมูลดังกล่าวแล้วส่งกลับหาเรา
เป็นอันเสร็จเรียบร้อยกับ LINE bot แบบง่ายๆๆ และไม่ได้เขียน code เองด้วยใช้จาก LINE ทั้งหมด แต่ก็ได้รู้ว่าเราทำ LINE bot อย่างไรให้ WORK !!!