สร้าง LINE Chatbot ด้วยภาษา Python และ Heroku

Dr. Winn Voravuthikunchai
LINE Developers Thailand
4 min readMar 25, 2020

ในการสร้างแชทบอทจะประกอบด้วย

A. Channel หรือช่องทางของแชทบอทที่ไว้สื่อสาร ในที่นี้ช่องทางสื่อสารคือแอพลิเคชั่น LINE ครับ

B. Bot Engine หรือ server ที่โต้ตอบกับข้อความที่เข้ามา สำหรับภาษาที่ใช้ในการเขียน Bot Engine คือภาษา Python และจะใช้ Heroku webserver

หลังจากนั้นเราต้องเชื่อมต่อ Channel กับ Bot Engine ผ่าน Webhook ครับ โดยเราจะเอา channel token ที่ได้จาก Channel ไปใส่ที่ Bot Engine server และเราก็จะเอา server url ไปใส่ที่ Channel

A. สร้าง LINE channel ด้วย Messaging API

  1. สมัคร Line Developer -> คลิก คนที่เพิ่งสมัครเป็นครั้งแรกจะให้กรอกรายละเอียดของตัวเองครับ

2. Create provider โดยให้กดปุ่ม Create a new provider ให้นึกถึงว่า provider เหมือนบริษัทของเรา เราอาจจะมีหลายบริษัท และแต่ละบริษัทก็อาจจะมีแชทบอทได้หลายตัว

ตั้งชื่อบริษัทของเรา

3. Create a Message API channel กดปุ่มนี้เพื่อสร้างแชทบอทครับ แล้วก็กรอกข้อมูลที่ require อัพโหลดรูปภาพของแชทบอทเรา ตั้งชื่อ Channel name ก็คือ ชื่อของแชทบอทเรา

4. หลังจากนั้น LINE ก็จะสร้าง แชทบอทให้เรา ให้กดตรง tab Messaging API แล้วก็ใช้โทรศัพท์เรา scan QR code ก็จะได้แชทบอทใน LINE ข้อความอัตโนมัติก็จะเด้งขึ้นมา แล้วถ้าทักอะไร ก็จะตอบประมาณว่า ขอบคุณที่ส่งข้อความเข้ามา แต่บอทยังตอบไม่ได้

5. สร้าง Channel access token

ด้านล่างสุดของ tab Messaging API จะมี หัวข้อ Channel access token อยู่ข้างล่างสุดเลย ก็ให้กดปุ่มสร้าง ก็จะได้ token ยาว ๆ ก็ save ใส่ editor ไว้ ซึ่งเราต้องเอาไปใช้ใส่ในฝั่ง Bot Engine

6. เลื่อนกลับไปข้างบนอีกนิด เพื่อปิดในส่วนของ Auto-reply เพราะเราไม่ต้องการให้แชทบอทตอบข้อความ default

7. ใส่ค่า webhook URL ซึ่งก็จะเป็นชื่อ Bot engine server ของเรา ของผมก็จะเป็น https://botnoiengine.herokuapp.com/webhook เดี๋ยวทุกคนก็จะได้ url ของตัวเองหลังจากที่สร้าง Bot engine ของตัวเองในขั้นตอนต่อไป

ก็จบในส่วนแรก ของการสร้าง channel หลังจากนั้นเราจะมาสร้าง Bot Engine กัน ด้วย ภาษา Python และ web server Heroku

B. Heroku webserver

  1. สมัคร account -> คลิก แล้วกด Sign UP แล้วกรอกข้อมูลให้ครบ ก็จะส่ง E-mail ให้เราตั้ง password

2. สร้าง app โดยกดปุ่ม Create a new app ตั้งชื่อ app แล้วก็เลือก region จะเป็นที่ USA หรือ Europe ก็ได้ ตั้งชื่อ app ของตัวเองนะครับ ของผมตั้งชื่อว่า botnoiengine

3. พอสร้างเสร็จแล้ว Heroku ก็จะสร้าง Git repo ให้เราเลย ก็สะดวกดี เราก็สามารถที่จะ push source code เราขึ้นไปบน server Heroku ได้ผ่าน Command Line แต่ว่าต้องติดตั้ง Heroku CLI ก่อนนะครับ ลองทำตามขั้นตอนดูครับไม่ยาก ไม่ได้ทำให้ดูเพราะ Windows, Mac, Linux จะไม่เหมือนกัน สิ่งที่ต้องระวัง คือให้ดูคือการ set path ให้สามารถเรียก heroku ได้จาก command line

4. เตรียม source code ที่เป็นภาษา Python แล้วก็ รันคำสั่งดังกล่าว

ผมได้เตรียมไว้ให้สามารถดาวน์โหลดได้จากที่นี่ -> คลิก ซึ่งจะประกอบด้วย ไฟล์ ทั้งหมด 4 ไฟล์​ ด้วยกัน ก็สร้าง folder ตามชื่อของ app heroku ที่ได้ตั้งไว้ และหย่อนไฟล์ทั้ง 4 ไว้ใน folder

อธิบายในส่วนของ code สักหน่อย ทุก event ที่สร้างขึ้นจากการที่คนคุยกับแชทบอทใน LINE ก็จะเข้ามาในฟังก์ชั่น callback() จากที่เราตั้งค่า webhook ไว้ที่ https://botnoiengine.herokuapp.com/webhook code ส่วนนี้จะรับ event แล้วส่งต่อไปยังฟังก์ชั่น event_handle

ในส่วนของ event_handle ก็จะสกัด element ต่าง ๆ ใน event ซึ่งอยู่ในรูปแบบของ json เช่น replytoken message type แล้วหลังจากนั้นเราก็จะสร้างคำตอบ ซึ่งอาจจะสร้างเป็น text หรือ sticker แล้วก็ตอบกลับ ด้วย line_bot_api.reply_message

ใน code ส่วนนี้ จะเห็นได้ว่า ข้อความที่สกัดเข้ามา ก็จะส่งกลับไปด้วยข้อความเดิม หากข้อความ msgType ไม่ใช่ “text” ก็จะ random เลือก sticker และส่ง sticker กลับไป

5. เอา channel secret token ที่ได้ตอนสร้าง channel กลับไปบน ๆ A.5. แล้วมาก๊อปแปะในบรรทัดที่ 19 ของ code app.py

6. หลังจากนั้นก็ save แล้วก็รัน

  • git init
  • heroku git:remote -a botnoiengine (ชื่อของ app เรา)
  • git add.
  • git commit -am “first commit”
  • git push heroku master

7. กลับไปเชคอีกรอบ ว่าเราได้ใส่ url ของ heroku ถูกมั้ย ใน A.7.

https://botnoiengine.herokuapp.com/webhook

ก็จะได้ แชทบอทใน LINE เรียบร้อย ถ้าพิมพ์ ข้อความก็จะส่งข้อความเดิมกลับมา แต่ถ้าส่งข้อความอย่างอื่น เช่น สติ๊กเกอร์ รูปภาพ แชทบอทก็จะส่ง sticker แบบสุ่มมาให้ ในคราวหน้า ก็จะสอนในส่วนการโต้ตอบใช้ NLP ครับ

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

สำหรับใครที่สนใจ AI สนใจ Data science สามารถ join group Botnoi Classroom ตอนนี้มีสมาชิกสองพันกว่าคน จะคอยอัพเดทเทรนด์ ความรู้ ทางด้าน AI และ Data science แล้วก็คอยประกาศอีเวนท์ หรือเปิดคลาสสอนด้วย

ส่วนหากใครสนใจใช้บริการ BOTNOI ในสร้างแชทบอท หรือให้คำปรึกษาเกี่ยวกับ AI & Data science ติดต่อได้ผ่านเวป -> Botnoi และ FB Page Botnoi Consulting นะครับ

--

--

Dr. Winn Voravuthikunchai
LINE Developers Thailand

obtained his PhD in AI from Caen University, France. He was Chief Data Scientist at Telenor. Currently, he is Founder & CEO of Botnoi Group, and LINE API Expert