สร้าง LINE Chatbot ง่ายๆ ด้วย Dialogflow

NottDev
5 min readMay 27, 2019

--

ต่อจากนี้ไปการทำ chatbot จะมากยิ่งขึ้น แบบที่เราแทบไม่ต้องเขียนโปรแกรมอะไรเพิ่มเติม เมื่อคุณได้รู้จักกับเจ้า Dialogflow แล้วเจ้า Dialogflow มันคืออะไรล่ะ???

Dialogflow คืออะไร?

Dialogflow เป็น platform สำหรับสร้าง chatbot ของ Google ที่ใช้เทคนิคด้าน machine learning และ Natural Language Processing (NLP) มาช่วยในทำความเข้าใจถึงความต้องการ (intent) และสิ่งที่ต้องการ (entity) ในประโยคสนทนาของผู้ใช้งาน และตอบคำถามตามความต้องการของผู้ใช้งาน ตามกฎ หรือ flow ที่ผู้พัฒนาได้ออกแบบเอาไว้ ซึ่ง Dialogflow จะช่วยเพิ่มความยืดหยุ่นของประโยคที่ chatbot รับมา ว่าไม่จำเป็นต้องตรงตามเงื่อนไข แบบ rule based เป๊ะๆ ก็สามารถเข้าใจถึงความต้องการของผู้ใช้งานได้

Dialogflow ใช้เทคนิคด้าน machine learning และ natural language processing (NLP) ทำให้เข้าใจการสนทนาของมนุษย์ ตัวมันสามารถใช้ได้กับบริการหลากหลาย (ไม่จำกัดเฉพาะกูเกิล) เชื่อมต่อกับ Alexa, Facebook, Twitter, Slack, Cortana ได้หมด มันยังสามารถเชื่อมต่อกับบริการแปลงเสียงพูด Google Cloud Speech-to-Text ได้ด้วย และสิ่งที่สำคัญที่สุดก็คือ ใช้งานฟรีจ้าาาา!!!!!

สำหรับบทความนี้เราจะมาสร้าง Dialogflow ใช้งานกับ LINE Chatbot กัน ไม่รอช้าลุยกันเล๊ยยย++

โดยเนื้อหาจะประกอบไปด้วย 2 ส่วนหลักๆ คือ

  1. การสร้าง Dialogflow Agent
  2. การเชื่อมต่อ Agent กับ LINE@ Account

เริ่มต้นสร้าง Dialogflow Agent

Dialogflow Agent หรือส่วนที่ทำหน้าที่ทำความเข้าใจสิ่งที่ผู้ใช้งานพูด หรือสื่อสารออกมา ซึ่งถ้าดูจากภาพจะพบว่า Agent (แปลไทย ตัวแทน) ก็จะคือส่วนสีส้มๆ ที่มีหน้าที่ในการรับ Query หรือ Input ที่ผู้ใช้ส่งเข้ามา (ผ่านอุปกรณ์ใดๆ) จากนั้น Agent ก็จะทำ NLU เพื่อดูว่าผู้ใช้ต้องการอะไร หมายถึง Intent ไหน จากนั้นก็ Response Actionable data กลับไปหาผู้ใช้งาน โดยอาจจะมีการเชื่อมต่อกับระบบอื่นๆผ่าน API ในส่วนของ Fulfillment ตามภาพก็ได้

https://dialogflow.com/docs/agents

ก่อนอื่นเรามาทำดูรายละเอียดต่างๆ ใน Dialogflow แบบคร่าวๆ กันก่อนดีกว่าว่ามีอะไรบ้าง

  • Intent: ส่วนที่กำหนดส่วนของการพูดคุย หรือหัวข้อการพูดคุยกับบอท เช่น Greeting
  • Entities: เป็นกลไกของ Dialogflow สำหรับการระบุและแยกข้อมูลที่ต้องการ จาก input ของผู้ใช้
  • Knowledge: Knowledge Connector
  • Fulfillment: ส่วนของการเพิ่มเต็มให้บอทเราสามารถส่งค่าไปประมวลผลหรือดึงค่าบางอย่างมาแสดงจาก backend ได้ สามารถใส่ได้ 2 แบบ คือ ใส่ webhook ลงไป กับ พิมพ์ลงไปใน Inline Editor ซึ่ง มันเชื่อมกันกับ Cloud Function for Firebase
  • Integrations: ส่วนนี้คือ ส่วนที่นำบอทไปเชื่อมต่อกับ platform ต่างๆ เช่น Web Demo, Facebook Messenger , Slack, Twitter, Skype และ LINE เป็นต้น
  • Training: ส่วนนี้บอกว่าบอทของเราเจอคำนั้นๆ กี่ครั้ง วันไหน matching หรือไม่
  • History: ส่วนแสดงประวัติการพูดค่อยของผู้ใช้กับบอท
  • Analytics: ส่วนแสดงรายละเอียดการวิเคราะห์ สรุปผล ของการพูดคุยระหว่างผู้ใช้กับบอท

หลังจากที่เราพอรู้จักกับส่วนต่างๆของ Dialogflow แล้ว เรามาเริ่มลุยกันเลยดีกว่า..

การสร้าง Dialogflow Agent

Step 1: ลงทะเบียนเข้าใช้งาน Dialogflow

เข้าหน้าเว็บของ Dialogflow และคลิ๊กที่ Go to console จากนั้นเข้าสู่ขั้นตอน ล็อกอิน หรือ ลงทะเบียน

Step 2: สร้าง Agent

หลังจากล็อกอินเข้ามาเรียบร้อยแล้ว ให้เราไปที่เมนูด้านซ้าย เลือก Create Agent จากนั้นจะขึ้นหน้าต่างเหมือนภาพด้านล่าง ให้เราทำการกรอกรายละเอียด ให้ครบถ้วน (Agent Name, Default Language, Default Timezone) ในที่นี่ผมใช้ชื่อว่า GreetingBot

Step 3: สอนบอทให้พูดทักทาย

หลังจากที่เราสร้าง Agent เสร็จแล้วจะเข้ามาสู่หน้า Intent อัติโนมติ เราจะเห็นว่ามี Default Intents มา 2 ตัว คือ Default Welcome Intent และ Default Fallback Intent มาให้อยุ่แล้ว เราสามารถที่จะลบทิ้งหรือเก็บไว้ใช้ก็ได้ครับ

  • Default Welcome Intent: คำทักทายต่างๆ
  • Default Fallback Intent: คำสั่งหรือคำพูดที่บอทไม่เข้าใจ

ให้เราทดสอบสร้าง Intent ขึ้นมา โดยการคลิ๊กที่ Create Intent ตั้งชื่อว่า Greeting

จากนั้นไปที่ส่วนของ Training phrases หรือแนวประโยคที่เราจะสอนให้บอทเข้าใจว่า ถ้าพูดด้วยประโยคประมาณนี้ แสดงว่าผู้ใช้งานตั้งใจจะสื่อถึง Intent นี้ เช่น สวัสดี สวัสดีจ้า สวัสดีครับ hello เป็นต้น

จากนั้นไปตั้งค่าส่วนของ Responses หรือประโยคที่เราต้องการให้บอทตอบกลับ ในกรณีนี้ที่บอทสามารถจับได้ว่าผู้ใช้งานตั้งใจจะสื่อถึง Intent นี้ โดยจะตอบกลับว่า สวัสดีครับ สบายดีไหมครับ หรือ สวัสดีค่ะ สบายดีไหม ช่วงนี้ทำงานหนักไหมค่ะครับ โดยจะสุ่มขึ้นมาว่าจะตอบอันไหน

ตรงส่วนของ Responses เราสามารถเพิ่มข้อความ หรือเพิ่ม balloon message ให้ต่อกันหลายๆอันได้ โดยกดที่ปุ่ม Add Responses โดยสามารถเลือกเป็น Text reponse หรือ Custom payload ได้

และถ้าต้องการตั้งค่าว่า intent นี้เป็น intent สุดท้ายในการสนทนากัน ก็สามารถเปิด Checkbox Set this intent as end of conversation ได้เช่นกัน

Step 4: ทดสอบคุยกับบอท

หลังจากที่เราทำการสร้าง Greeting Intent และทำการสอนบอทเรียบร้อยแล้วก็ได้เวลาที่เราจะมาทดสอบพูดคุยกับบอทกันแล้วครับ ซึ่งทดสอบได้ผ่านกล่องสนทนาที่อยู่ทางด้านขวามือ โดยลองพิมพ์คำว่า สวัสดีครับ ลงไป ก็จะพบว่าแชทบอทจะตอบเรากลับมาว่า สวัสดีครับ สบายดีไหมครับ ตามที่เราตั้งค่าไว้ใน Responses นั้นเอง

ในกรณีที่เราส่งคำหรือประโยคที่ เราไม่ได้ทำการสอนบอทเอาไว้ คือในส่วนของ Training phrases ของ Greeting Intent จะทำให้บอทไม่เข้าใจคำหรือประโยคนั้น และจะเข้า Default Fallback Intent ซึ่งจะทำให้บอทตอบกลับด้วยประโยคที่ได้กำหนดไว้ในส่วนของ Response ของ Default Fallback Intent

จะเห็นได้ว่าเราสามารถเริ่มต้นการพัฒนาแชทบอทของเราได้ โดยที่ไม่ต้องเขียนโปรแกรมเลย เพราะ Dialogflow ก็มี UI ที่ช่วยให้เราสามารถสร้าง Intent ได้แบบง่ายๆ นอกจากนี้ก็ยังฉลาดพอที่จะเรียนรู้ และทำความเข้าใจประโยคที่เป็นประโยคพื้นฐานได้ด้วยเทคนิคของ machine learning และ Natural Language Processing (NLP)

การเชื่อมต่อ Agent กับ LINE@ Account

การเชื่อมต่อ Dialogflow Agent เข้ากับ LINE นั้น สิ่งสำคัญที่ต้องมีคือ Messaging API ที่ใช้สำหรับการรับส่งข้อความของ LINE

โดยมีขั้นตอนการทำดังนี้

  1. สร้าง LINE Messaging API
  2. Dialogflow’s LINE Integration Setup
  3. ทดสอบคุยกับบอท (Test)

Step 1: สร้าง LINE Messaging API

  • เข้าหน้าเว็บของ LINE Developer console และคลิ๊กที่ Log in จากนั้นเข้าสู่ขั้นตอน ล็อกอิน หรือ ลงทะเบียน เพื่อเข้าสู่ระบบ
  • ในกรณีที่ยังไม่มี Providers ให้ทำการสร้าง Providers ก่อน
  • จากนั้นให้ทำการคลิ๊ก Create new channel และเลือก Messaging API

จากนั้นให้ทำการกรอกข้อมูลที่เกี่ยวข้องเพื่อลงทะเบียน ตั้งชื่อ Channelว่า BOT Cute

Step 2: Dialogflow’s LINE Integration Setup

  1. ในขั้นตอนนี้เราจะทำการตั้งค่าให้ Agent เชื่อมต่อกับ Line Messaging API โดยให้เปิดหน้าเว็บของ Dialogflow และเข้าเมนู Integrations จากนั้นเปิด Checkbox Line จะขึ้น Popup ให้กรอกข้อมูลดังต่อไปนี้
  • Channel ID : หรือ ID ของ Messaging API ซึ่งสามารถเอามาได้จาก Line Developer ในขั้นตอนก่อนหน้า
  • Channel Secret : หรือ Secret ของ Messaging API ซึ่งสามารถเอามาได้จาก Line Developer ในขั้นตอนก่อนหน้าเช่นกัน
  • Channel Access Token : Access Key ที่สามารถเชื่อมต่อกันได้ โดยไป Section Messaging Setting ที่ Line Developer และกดปุ่ม Issue เพื่อสร้าง Channel access-token
  • Webhook URL: ส่วนของการรับข้อมูล ของ Event Trigger ต่างๆ จาก LINE ซึ่งเราต้องนำไปตั้งค่าใน Section Messaging Setting ที่ Line Developer

จากนั้นกด Start ได้เลย+++

จากนั้นเอา Webhook Url จาก Popup ใน Dialogflow ไปใส่ใน Section Messaging Setting ที่ Line Developer ภายใต้ Webhook URL และทำการ Enabled Use Webhooks เป็นอันเสร็จเรียบร้อย

และให้เราตั้งค่าค่าปิด (Disabled) function Auto-reply messages ตรง Section Using LINE@ features เพราะให้ Default Fallback Intent ใน Dialogflow จัดการให้ไปแล้ว

Step 3: ทดสอบคุยกับบอท (Test)
ก่อนจะคุยกับบอทได้นั้น ต้อง Add Friends กับ LINE@ ก่อน จากนั้นก็ทดสอบคุยได้เลย เมื่อเราคุยกับมันก็จะพบว่า แชทบอทของเราสามารถตอบกลับมาได้ตามที่ตั้งค่าไว้แล้ว Mission Complete!!!!!

จริงๆเเล้ว Dialogflow สามารถทำอะไรได้อีกเยอะมาก นี่เป็นเพียงการทดสอบแบบง่ายๆ เพื่อให้เข้าใจเกี่ยวกับ Dialogflow และการเชื่อมต่อเข้ากับ LINE เท่านั้น หากใครสนใจอยากลองเล่น function หรือ feature อื่นๆ สามารถเข้าไปอ่านในเว็บไซต์ Dialogflow document เพิ่มเติมได้ :)

References:

(ข้อมูลอาจมีข้อผิดพลาด ถ้าจะเอาบทความนี้ไปอ้างอิงที่อื่นให้ตรวจสอบให้ดีก่อนนะครับ ขอบคุณครับ)

สำหรับวันนี้ ต้องขอลาไปก่อน สวัสดีครับ NottDev :)

--

--

NottDev
NottDev

Written by NottDev

Your only limit is your mind.

No responses yet