avatar
thiti.dev
Learning Profile Contact Us
สร้าง Line bot ง่ายๆ ด้วย Dialogflow
26 May 2019
Dialogflow Line Line bot

Dialogflow จากเดิมใช้ชื่อว่า Api.ai ถูกพัฒนาขึ้นโดย Speaktoit และต่อมาภายหลังถูก Google ซื้อ และนำไปพัฒนาต่อยอดในปี 2016 และพึ่งเปลี่ยนชื่อมาเป็น Dialogflow เมื่อไม่นานมานี้

Dialogflow เป็นนึงในหลายๆ แพลตฟอร์มที่ช่วยให้เราสร้าง Chat bot ได้ง่ายๆโดยแทบจะไม่ต้องเขียนโปรแกรมอะไรเลย ที่สําคัญมันสามารถทํา Natural Language Understanding คือสามารถเรียนรู้ และเข้าใจความหมายของประโยคได้ เช่น เมื่อ Input เป็น "สวัสดี", "ดีๆ", "ดีครับ" ระบบจะเข้าใจได้ว่าข้อความเหลานี้เป็น ข้อความทักทาย ซึ่งจะ map กับกลุ่มคําที่เราเพิ่มเข้าไปในระบบ (Intents) และตอบกลับมาเป็นประโยคตามที่เรากําหนดไว้ ทั้งหมดนี้เราสามารถทําได้โดยไม่ต้องเขียนโปรแกรมเลย

Dialogflow รองรับการทํา Natural Language Understanding ได้มากกว่า 20 ภาษา และสามารถ Integrate เชื่อมต่อกับ Chat bot ที่หลากหลายไม่ว่าจะเป็น Line, Facebook, ฯลฯ แม้แต่เว็บไซต์ของตัวเองก็สามารถทําได้เช่นเดียวกัน

Image

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

มาดูการทํางานของ Dialogflow กันก่อน การทํางานของ Dialogflow จะมีการทํางานตามรูปนี้

Image

จากรูปจะเริ่มจาก User ส่งข้อความ Chat มายัง Chat bot ข้อความนั้นจะถูกส่งมายัง Dialogflow Agent ซึ่งจะเป็นส่วนที่ควบคุม Bot ของเราทั้งระบบ Dialogflow Agent จะทําการ Match ข้อความกับ Intent เมื่อตรงกับ Intent ไหนก็จะ เริ่มทํางานใน Intent นั้นๆ ว่าจะให้ตอบข้อความ หรืออะไรก็แล้วแต่ตามที่เราต้องการ

ขอขยายความของ Intent นิดนึง มันคือ กลุ่มของคําที่เราสร้างไว้บอกระบบว่าเมื่อมีข้อความประเภทนี้เข้ามา จะให้ระบบทําอะไร เช่น กลุ่มของทําทักทาย "สวัสดี", "ดีๆ", "ดีจ้า" กําหนดให้ตอบกลับเป็นข้อความ "สวัสดีครับ ยินดีที่ได้รู้จัก"

เริ่มสร้าง Dialogflow Agent กันเลยครับตามนี้

Step1: สมัคร Account ของ Dialogflow ให้เรียบร้อย และก็เข้าไปยังหน้า Console

Step2: ให้เลือกเมนู "Create new agent" ที่เมนูด้านซ้าย

Image

Step3: ตั้งชื่อของ Agent ตามต้องการ (หมายเลข1) เลือกภาษาของ Chat bot ตามที่ต้องการ ให้เลือกภาษาไทย (หมายเลข2) แล้วกด "CREATE" (หมายเลข3)

Image

Step4: จะพบกับหน้าจอของการจัดการ Intent โดยระบบจะสร้าง Intent มาให้เราสองอันคือ

  • Default Fallback Intent คือ เมื่อข้อความที่เข้ามาไม่ Match กับ Intent ใดเลย ให้เข้ามาทํางานใน Intent นี้
  • Default Welcome Intent คือ เป็นตัวอย่าง Intent

ขั้นตอนนี้เราจะสร้าง Intent โดยกดปุ่ม "CREATE INTENT" (หมายเลข1)

Image

Step5: จะพบกับหน้าจอนี้

Image

ในการสร้าง Intent อันดับแรกให้เราตั้งชื่อ Intent ก่อน (หมายเลข1) ต่อมาตรง หมายเลข2 คือส่วนที่เราจะบอก Dialogflow ว่าให้ทํางานอย่างไรโดยมีรายละเอียดในแต่ละหัวข้อดังนี้

  • Context เป็นการกําหนดว่า input มาจากไหน และ output ไปไหนต่อ
  • Event บอกว่าเป็น trigger จาก Event ไหน
  • Training phrases คำที่เราใช้สอน Dialogflow หรือ bot ของเรา ว่าอันไหนเข้าบริบทนี้ เช่น คำทักทาย มีอะไรบ้าง ใส่ได้หลายคําตามใจชอบครับ
  • Action & Parameter รับคำที่ user พิมพ์มา เก็บไว้ในตัวแปร แล้วเอามาใช้ต่อ เช่นถามส่วนสูง หรือนําหนักเข้ามา
  • Responses เป็นส่วนที่เราบอกกับ bot ว่า เมื่อข้อความที่ User ส่งเข้ามา Match กับ Training phrases ใน Intent นี้ จะตอบอะไรกลับไป
  • Fulfillment ส่วนนี้จะเป็นส่วนที่เราสามารถปิด-เปิดใช้งาน webhook หรือ Fulfillment (จะเป็นส่วนของ coding javascript เพิ่มเติม)

หลังจากที่รู้ความหมายของแต่ละส่วนแบบคร่าวๆ กันไปแล้ว ในบทความนี้เราจะมาสร้าง Bot แบบพื้นฐานซึ่งเราจะสนใจสองส่วนด้วยกันครับคือ ส่วนของ Training phrases และ Responses โดยผมจะยกตัวอย่างการสร้าง Bot ที่สามารถตอบเราได้ว่าชื่ออะไร เมื่อเราถามชื่อ ตัวอย่าง เมื่อเราถามว่า "ชื่ออะไร" Bot จะตอบว่า "ชื่อ ธิติ"

Step6: ใส่ข้อมูลในส่วนของ Training phrases ประมาณนี้ครับ เพื่อบอกว่า เมื่อมีข้อความที่มีความหมายเกี่ยวกับการถามชื่อ ให้ทํางาน Intent นี้

Image

Step7: ใส่ข้อมูลในส่วนของ Responses เพื่อบอกว่าเมื่อมีข้อความที่เข้ามา Match กับกลุ่มคําที่เราใส่ใน Step6 ให้ทําการ Response ข้อความอะไรออกไป

Image

เราสามารถใส่ไปหลายๆประโยคได้ ระบบจะสุ่มประโยคเหล่านี้ Response กลับไปยัง User ให้เอง หลังจากนั้นก็กด Save เท่านี้ก็เรียบร้อย

มาถึงตรงนี้เราก็ได้ Bot ที่สามารถตอบ User ได้ว่าชื่ออะไร เมื่อ User ถาม ในขั้นตอนต่อไปเราจะเชื่อมต่อ Dialogflow อันนี้เข้ากับ Line ที่เรามีอยู่

เชื่อมต่อ Dialogflow กับ Line

ตอนนี้เราก็มาถึงขั้นตอนสําคัญแล้วนะครับคือ ขั้นตอนการเชื่อมต่อระหว่าง Dialogflow กับ Line มีขั้นตอนดังนี้

Step1: ใน Dialogflow ให้เลือกเมนู "Integrations"

Image

Step2: ในหน้าจอ Integrations ให้เลือกเปิด "Line" และจะพบกับหน้าจอนี้

Image

ให้เราใส่ข้อมูล ซึ่งเป็นข้อมูลที่เราจะต้องไปเอาจาก Line office Account โดยไปที่ https://manager.line.biz" จะพบกับหน้าจอนี้

Image

ไปที่ Account ที่ต้องการจะเชื่อมต่อ(หมายเลข1) ต่อมาให้กดตรงหมายเลข2 ครับ แล้วจะเจอหน้า Setting ของ Response mode

Image

ให้เลือกตามรูปตั้งแต่หมายเลข1-3 ได้เลยครับ แล้วกดตรงหมายเลข4 จะเจอหน้าจอนี้ครับ

Image

ให้นําข้อมูลเหล่านี้ไปใส่ในหน้า Integrations ของ Dialogflow ครับ

  • Channel ID
  • Channel secret

จะเห็นว่ายังขาดในส่วนของ Channel Access Token เราสามารถไปเอาได้จาก Line developer https://developers.line.biz/console/" โดยเลือก Provider และ Channel ที่ต้องการตามรูป

Image

จะเจอกับหน้าจอ Setting ให้เลื่อนมาในส่วนของ Channel access token กด issue เราจะได้ Token มาครับ

Image

ให้นํามาใส่ในหน้า Integrations ของ Dialogflow

Image

ต่อมานํา Webhook URL จากหน้า Integrations ของ Dialogflow ไปใส่ใน Account Line ตามรูปครับ แล้วกด Save ได้เลยครับ

Image

เท่านี้ก็เรียบร้อยครับ

ทดลองใช้งานโดยส่งข้อความ "ซื่ออะไร" ไป Bot จะตอบมาว่า "ซื่อ ธิติ ครับ" ตามรูปครับ

Image

จบเพียงเท่านี้ครับ แล้วเจอกันบทความต่อไปครับ :)

thiti.dev © 2019 Thiti Yamsung