Petch Kruapanich
readmoreth
Published in
3 min readApr 19, 2018

--

ลองทำแชทบอทง่ายๆด้วย Dialogflow กันเถอะ

จากบทความก่อนที่ได้พูดถึงแนวทางการพัฒนาแชทบอทด้วย Rule based approach และ AI based approach มาแล้ว ทีนี้ลองมาลองทำแชทบอทแบบง่ายๆ กันดูบ้างดีกว่า ซึ่งในการทำก็ขอเอาเครื่องมือที่ชื่อว่า Dialogflow มาช่วยในการจัดการ Intent ต่างๆ

Dialogflow คืออะไร แล้วทำไมต้อง Dialogflow

ปัจจุบันในตลาดการทำแชทบอท จะมีแพลตฟอร์มที่มาช่วยในการพัฒนาเยอะขึ้นเรื่อยๆ โดยแต่ละตัวก็จะมีจุดเด่น จุดด้อย แตกต่างกันไป วันนี้เลยจะขอมาแนะนำแพลตฟอร์มที่ชื่อว่า Dialogflow ที่จะมาช่วยให้การทำแชทบอทง่ายมากยิ่งขึ้น

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

ถ้าว่ากันตามตรง Dialogflow ไม่ใช่แพลตฟอร์มที่ช่วยให้เราสร้างแชทบอทได้ง่ายที่สุด แต่จุดเด่นของมันคือการรองรับการทำ Natural Language understanding โดยที่เราแทบไม่ต้องเขียนโปรแกรมอะไรเพิ่มเติม หรือพูดแบบละเอียดได้ว่า Dialogflow สามารถแปลง input หรือ query ของผู้ใช้งานให้เป็น Intent โดยผ่านกระบวนการ Natural Language processing ซึ่งจะช่วยให้แชทบอทสามารถหา Intent และทำ Entity Recognition ต่างๆได้โดยไม่ต้องเขียนโปรแกรมเพิ่ม และสิ่งที่สำคัญที่สุดก็คือ ใช้งานฟรี!!!!!

ปัจจุบัน Dialogflow รองรับการทำ Natural Language processing มากกว่า 20 ภาษารวมถึงภาษาไทย ซึ่งรวมๆก็ให้ผลลัพธ์ได้ค่อนข้างโอเค นอกจากนี้ Dialogflow ก็ยังรองรับการเชื่อมต่อกับ Channel ได้ค่อนข้างหลากหลายไม่ว่าจะเป็น Facebook Messenger, Twitter, Line และเว็บไซท์ของตัวเอง

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

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

https://dialogflow.com/docs/agents

Step 1: ลงทะเบียน/ล๊อกอินเข้า Dialogflow
ในการสร้าง Agent เราต้องลงทะเบียนเข้าใช้งานก่อนนะ โดยไปยังหน้าเว็บของ Dialogflow และกดที่ Go Console จากนั้นก็เข้าสู่ขั้นตอนการ Login หรือลงทะเบียน

Step 2: สร้าง Agent
หลังจาก Login สำเร็จเราก็จะเจอกับ Workplace ในการทำแชทบอทละ ให้ไปที่เมนูด้านซ้าย และเลือก Create Agent ก็จะพบกับหน้าจอสำหรับตั้งค่าแชทบอทของเรา โดยต้องสามารถตั้งชื่อ ภาษา และ Timezone ที่ต้องการ

Step 3: สอนบอทให้พูดทักทาย
เมื่อสร้างเสร็จแล้วเราจะพบกับ Default Intents มา 2 ตัวก็คือ Default Welcome Intent และ Default Fallback Intent มาให้ ตอนนี้ยังไม่ต้องสนใจมันนะ เพราะเราจะลองสร้าง Intent ใหม่เลยโดยตั้งชื่อว่า Greeting

ในการสร้างให้กดที่ปุ่ม Create Intent และตั้งชื่อ Intent นี้ว่า Greeting โดยเราตั้งใจจะให้ Intent นี้ โต้ตอบกับผู้ใช้งาน เวลาที่ผู้ใช้ต้องการที่จะทักทายกับแชทบอท ที่เราสร้างขึ้นมา

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

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

ตรงส่วนของ Responses เราสามารถเพิ่มข้อความ หรือเพิ่ม balloon message ให้ต่อกันหลายๆอันได้ โดยกดที่ปุ่ม Add Responses และถ้าต้องการตั้งค่าว่า intent นี้เป็น intent สุดท้ายในการสนทนากัน ก็สามารถเปิด Checkbox Set this intent as end of conversation ซึ่งเดียวเราค่อนมาคุยกันแบบละเอียดอีกครั้ง ตอนที่ต้องทำ Contexts กันอีกครั้ง

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

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

ถ้าดูจากภาพจะพบว่า ถ้าเราพิมพ์คำบางคำที่ไม่ได้มีอยู่ใน Training phrases อย่างคำว่า ดีจ้า ตัว Dialogflow ก็ฉลาดพอที่จะจับได้ว่านี่คือคำที่อยู่ในกลุ่มเดียวกับ สวัสดี ซึ่งเป็นคำทักทาย ที่เรากำหนดว่ามันคือ Intent Greeting นั้นเอง

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

จะเห็นได้ว่าเราสามารถเริ่มต้นการพัฒนาแชทบอทของเราได้ โดยที่ไม่ต้องเขียนโปรแกรมเลย เพราะ Dialogflow ก็มี UI ที่ช่วยให้เราสามารถสร้าง Intent ได้แบบชิวๆ นอกจากนี้ก็ยังฉลาดพอที่จะเรียนรู้ และทำความเข้าใจประโยคที่เป็นประโยคพื้นฐานได้ ไว้เดียวตอนต่อไป เดียวเราจะลองมา Deploy แชทบอทของเราไปใส่ Facebook Messenger และ Line กันดูดีกว่า ว่าจะออกมาหน้าตาเป็นยังไง :)

--

--

Petch Kruapanich
readmoreth

Full time Developer, Part time writer, Vinyl lover