การสร้าง HotelBot เพื่อการจองห้องพักโรงแรมที่ง่ายขึ้น Creating a Chatbot with Dialogflow

สวัสดีครับ ผมได้สร้างแชทบอทเกี่ยวกับการจองโรงแรมขึ้นมา จึงมาสอนการสร้างด้วย Dialogflow กัน คือ HotelBot บอทนี้จะเกี่ยวกับการจองห้องพักของโรงแรม เช็คราคาห้องพัก และรายละเอียดของโรงแรม  โดยเราจะให้ Bot ของเราสามารถใช้งานผ่าน Line ได้ การทำงานหลักๆ ก็ตามแผนผัง ครับ

เมื่อพร้อมแล้วก็ลงมือทำกันเลยครับ

  1. ไปที่https://dialogflow.com แล้วกด GO TO CONSOLE ที่มุมด้านขวาบนครับ

2. เมื่อมาถึงหน้า Console แล้วกด Expand ที่ agent แล้วคลิกที่ Create new agent เลย

3. ตั้งชื่อบอทที่ Agent name ในส่วนของ Default Language เราเลือกเป็นภาษาไทย เสร็จแล้วก็กด Create ได้เลยครับ

4. หลังจากนี้ เราจะมา edit Default Welcome Intent ให้อยู่ในรูปแบบของ Card เพื่อให้ user สามารถเลือก Topic ได้ จาก Use case ของเราก็จะมี 3 หัวข้อ นั่นก็คือ

  • ห้องพักของโรงแรม
  • จองห้องพัก
  • รายละเอียดโรงแรม

ในส่วนของ Training phrases เราสามารถเพิ่มได้ต้องการที่คิดว่าผู้ใช้จะพิมพ์มาครับ

ในส่วนของ Response เราจะให้ Bot ตอบทักทายเป็น Text และเป็น Rich messages ในรูปแบบของ Card ครับ โดยที่ line สามารถคลิกที่เมนูได้เลย

5. กด + ที่ข้างๆ DEFAULT และเลือก line

6. ปิด response จาก DEFAULT และคลิก ADD RESPONSE เลือก Text Response

ใส่ text ทักทาย “สวัสดีครับ  ต้องการติดต่อเรื่องอะไรครับ”

7. คลิก ADD RESPONSE เลือก Card ใส่รายละเอียดต่างๆใน Card และคลิก Save

  • Image URL
  • Title ซึ่งอันนี้เป็น Required field ต้องใส่ด้วยจ้า
  • Subtitle
  • Button title
  • URL or text postback

เมื่อเสร็จแล้วก็กด Save ได้เลยครับ

8. ที่ Tab ด้านขวากด + ที่ Intents เพื่อสร้าง ใส่ชื่อ Intent ครับ โดยเราจะให้ชื่อว่า

  • Reservations (จองห้องพัก)
  • Description (รายละเอียดโรงแรม)
  • Room (ห้องพักของโรงแรม)

เมื่อใส่ชื่อ Intents แล้วก็กด Save ได้เลยครับ

เนื่องจากเราใช้ Card ในการสร้างเมนูให้ผู้สามารถคลิกเลือกแล้วให้ โชว์ข้อความที่ตั้งไว้ ทำให้ในส่วนของ Training phrases ของทั้งสาม ใส่ข้อความที่เป็น title ครับ

9. เราจะมาทำในส่วนของ Room กันครับ คือใส่ความและภาพของพักครับ

ใน Responses เพิ่ม Text responses ข้อที่ต้องการใส่ เพิ่ม Image รูปที่ต้องโดยใส่เป็น URL ไปได้เลย แล้วเพิ่ม Card แบบเดียวกันที่ทำเป็นเมนูได้เลยครับ

10. Description ในส่วนนี้ก็ทำแบบเดียวกันกับ Room แต่ใส่เป็นรูปของจุดน่าสนใจในโรงแรม เบอร์โทรของโรงแรม ครับ

11. สำหรับการทำ Reservations เราจะเก็บข้อมูลของลูกค้าเพื่อใช้ในการติดต่อกลับครับ โดยเราจะทำการเก็บข้อมูลดังนี้

  • ห้องที่ต้องการ
  • วันที่ เดือน ปี ที่จะเข้าพัก
  • ชื่อ เบอร์โทร

Reservations  ในส่วน Responses ใส่ข้อความถามว่า “ต้องการจองห้องพัก เตียงเดี่ยว หรือ เตียงคู่ ครับ”

12. กลับไปหน้า Intents เพื่อเพิ่ม Follow-up intents ให้กับ Reservations และเลือกเป็นประเภท Custom

เข้าไปเปลี่ยนชื่อเป็น Reservations – room

13. Add Training phrases เป็นลักษณะห้องพักและ ใส่ entity ให้กับข้อความ โดยการลาก Highlight แล้วจะมี popup ขึ้นมาให้ และตามด้วยการ set response text ที่กำหนด เมื่อใส่ entity หลังจากนั้นก็เปลี่ยนชื่อ parameter เป็น room เสร็จแล้ว เราจะได้ parameter มา หลังจากนั้น set context ให้กับ intents นั้นที่ output  เราตั้งชื่อไว้ว่า room

เนื่องจากเราจะมีการ access ถึง parameter จาก intents อื่นค่า เมื่อเสร็จแล้วให้ Set Response Text เป็น “วันที่ เดือน ปี ที่ต้องการเข้าพักครับ”

14. เพิ่ม Follow up intents ต่อจาก intents ก่อนหน้า เพื่อทำการสอบถาม วันที่จะเข้าพักของลูกค้า เราเพิ่ม output context ชื่อว่า time และเราจะใส่ตัวอย่างวันที่ ให้ใส่ entity @sys.date รู้จักว่านี่คือ format ของวันที่ ได้เลยครับ

 

15. เพิ่ม Follow up intents ต่อจาก intents ก่อนหน้า และใส่ training phrases ให้รู้จักประโยคที่มีชื่อและเบอร์โทรติดต่อ ๆ เพื่อทำการสอบถามชื่อ เบอร์โทร หลังจากนั้น ก็ highlight entity ในที่ นี้ก็คือชื่อและเบอร์โทรศัพท์ เราใส่ให้เป็น @sys.any ซึ่งเราสามารถสร้างใหม่ได้เช่นกันจ้า หลังจากนั้นก็เปลี่ยนชื่อ parameter เป็น name และ tel ตามรูปเลยครับ

ใส่ entity เสร็จทำการ Save ได้เลยครับ

จากนี้เราจะทำการ access ไปถึง parameter อื่นๆใน intent ก่อนหน้าค่ะ สังเกตว่าเมื่อเราสร้าง followup intent จะมีการ input context ติดมาด้วย นั่นคือ output context ของแต่ละ intent ก่อนหน้านั่นเอง คราวนี้เวลาเราจะ access parameter เราก็ refer ไปถึง input context แล้วตามด้วยชื่อ parameter ที่เราตั้งไว้

#outputcontext.parametername

16. เมื่อเสร็จแล้วก็ใส่ Response ตามนี้ “คุณ $name ได้ทำการจองห้องพักแบบ $room ในวันที่ $date ทางเราจะติดต่อคุณทาง $tel กลับเพื่อยืนยันการจองครับ” “ขอบคุณครับ”และเลือกให้เป็น set this intent as end of conversation ครับ

เราสามารถ เพิ่ม Training phrases ในแต่ละ intent ที่เราสอน bot เราไป เพื่อเพิ่มความฉลาดให้ bot เราได้อีกด้วยครับ

วิธีการเชื่อมต่อกับ Line App

  1. เข้า line developer แล้ว login
  2. Create New Provider ขึ้นมาครับ

3. ใส่ชื่อแล้ว Confirm และ Create

4. Create channel แบบ Messaging API

5. ใส่รูป icon ได้ที่ App icon แล้วใส่ข้อมูลให้ครบแล้ว create แล้วติ๊กถูกตามรูป แล้วก็ create อีกที

6. เข้าไปตั้งค่าให้เชื่อมต่อกลับ Dialogflow โดยไปที่ Dialogflow แล้วเข้า Integrations เลือก line เปิดใช้งาน

แล้วใช้ข้อมูลใน line developer ที่สร้างให้ครบ

Channel Access Token ให้กด Issue ใน line developer เพื่อสร้างออกมาแล้วนำไปใส่ Dialogflow

นำ Webhook URL จาก Dialogflow ไปใส่ใน line developer ที่ Use webhooks ให้เปลี่ยนเป็น Enabled และ Auto-reply messages ให้เปลี่ยนเป็น Disabled

ใน Dialogflow ให้กด START ได้เลยครับ

เมื่อเสร็จเรียบร้อยแล้วนำ QR Code ใน line developer  ไปทดสอบได้เลยครับ

คลิปการทดสอบ แชทบอท

ขอบคุณทุกท่านที่แวะเข้ามาอ่านครับผม

  •  
  •  
  •  
  •  
  •  
  •  
PORAWIT TATRAK
at GlurGeek.Com
นาย ปรวิทย์ ธาตุรักษ์ กำลังศึกษาอยู่ที่ มหาวิทยาลัยกรุงเทพ คณะ วิศวะกรรมศาสตร์ ภาค อิเล็กทรอนิกส์

Leave a Reply