แนะนำ Dialogflow: Intent, Parameters และ Fulfillment

จากบทความตอนที่แล้ว เราได้รู้จักกับ Dialogflow ที่ช่วยให้เราสามารถสร้าง chatbot ขึ้นมาได้ง่ายๆ และจะเห็นว่า chatbot ที่ดี จะช่วยเสริมสร้างประสบการณ์ให้กับลูกค้าได้ ทั้งความรวดเร็วในการตอบ และความแม่นยำของคำตอบ ที่เกิดจากความสามารถในการตีความสิ่งที่ผู้ใช้งานพิมพ์มาหาได้

การจับคู่ intent

โดยทั่วไป โปรแกรมหรือแอพพลิเคชันที่มีการใช้งานกันนั้น จะมีการระบุ input จากผู้ใช้อย่างชัดเจน เช่นการกดปุ่มคำสั่ง หรือการเลือกข้อมูลจากตัวเลือกที่เตรียมไว้ให้ แต่ในกรณีของ chatbot นั้น input ที่เราได้จากผู้ใช้จะเป็นประโยค ซึ่งจะมีความหลากหลายมาก เนื่องจากผู้ใช้แต่ละคน แม้ว่าจะต้องการส่งคำสั่งเดียวกัน ก็อาจจะพิมพ์ประโยคที่แตกต่างกัน ดังนั้น ความสามารถของ chatbot ที่ดี คือสามารถตีความข้อมูลที่ได้รับ และสกัดข้อมูลจาก unstructured input (ประโยคที่ผู้ใช้พิมพ์เข้ามา) ให้อยู่ในรูปแบบ structured data เพื่อให้เราสามารถเขียน logic เพื่อโต้ตอบกับ input นั้นได้อย่างถูกต้อง และจับคู่ input นั้น กับ intent ได้อย่างถูกต้อง (มีคำอธิบายเรื่อง intent ต่อด้านล่าง)

Dialogflow มี NLU (Natural Language Understanding) ช่วยให้จับคู่ intent ได้แม่นยำ

การทำงานของ intent

Intent แปลตรงตัวว่า เจตนา มันคือการนิยามคำสั่งของ chatbot ว่าจะให้ chatbot รับคำสั่งอะไรได้บ้าง โดย intent จะประกอบด้วย
  • Training phrases: เป็นการใส่ตัวอย่าง input จาก user ซึ่ง Dialogflow จะใช้ตัวอย่างนี้ในการ train model 
  • Action and Parameters: คือการแกะค่าตัวแปรที่สำคัญออกมาจากประโยค เพื่อนำมาใช้งานต่อ โดยเราสามารถระบุตัวอย่างของ parameter ได้ใน training phrases
  • Responses: ระบุข้อความที่ต้องการให้ chatbot ตอบกลับตาม intent นั้นๆ
ตัวอย่างการทำงานของ intent จะอธิบายคู่กับภาพด้านล่างนี้



ในกรณีนี้ เป็นตัวอย่างของ intent ที่จะตอบข้อมูลพยากรณ์อากาศ (Forecast intent) โดย parameter ที่ต้องใช้ในการพยากรณ์อากาศมี 2 ตัวคือ เวลา ($time) และ สถานที่ ($location)

ทางด้านซ้ายสุดคือ input จากผู้ใช้ ซึ่งมีความหลากหลาย และมี parameter ไม่เท่ากัน ประโยคบนสุด ไม่บอกเวลาและสถานที่ ประโยคกลาง มีเวลา ส่วนประโยคล่างสุดมีครบทั้งเวลาและสถานที่

ในตัวอย่างนี้ Dialogflow จะ match input ทั้ง 3 แบบเข้ากับ Forecast intent (Dialogflow เข้าใจว่าผู้ใช้ต้องการข้อมูลพยากรณ์อากาศ) และสกัด parameter ทั้ง $time และ $location ออกมาจากประโยคให้ด้วย ทำให้เราสามารถนำ parameter ทั้ง 2 ตัวนี้ ไป query ระบบพยากรณ์อากาศ และนำคำตอบมาตอบกลับผู้ใช้งานได้ด้วย fulfillment

การทำงานของ fulfillment

โดยปกติ เราสามารถระบุ response ใน intent ได้เลยเป็น static response ข้อความที่ตอบกลับจะตายตัว (อย่างมากคือมีการนำ parameter มาใส่ใน response) แต่หากเราต้องการ response ที่ไม่ตายตัว เราสามารถใช้ fulfillment แทน response ได้

ใน fulfillment นั้น เราสามารถใช้ parameter ที่สกัดออกมา และส่งไปเรียก API ของระบบอื่นๆ เพื่อให้ได้คำตอบ และนำคำตอบนั้นกลับมาตอบกับผู้ใช้งานได้ ตามแผนภาพด้านล่าง



หากใครสนใจ อยากเริ่มต้น หรือทดลองใช้งาน chatbot ด้วย Dialogflow สามารถติดต่อเข้ามาได้ที่ www.tangerine.co.th ครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเรียกใช้งาน Google Apps Script

ลดเวลาการเรียก API ใน Apps Script ด้วย fecthAll

ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub