สร้าง Line Chatbot ของเราเองง่ายๆ ด้วย Dialogflow

Ekkalak Leelasornchai
AltoTech
Published in
4 min readAug 24, 2018

Chatbot เริ่มเข้ามามีบทบาทในชีวิตของเรามากขึ้นเรื่อยๆ เพราะว่า Chatbot สามารถนำไปใช้ได้ในหลายๆด้าน ทั้งใช้เป็นตัวช่วยตอบลูกค้าของ Customer Service เป็นตัวช่วยดำเนินการแทน Call Center ต่างๆ แล้วยังไปใช้เพื่อเป็นช่องทางให้ลูกค้าเข้าถึงบริษัทของเราได้มากขึ้นด้วย

แต่เนื่องจากยังมีหลายๆคนที่ไม่รู้ว่า จริงๆแล้ว เราสามารถสร้าง Chatbot ของเราด้วยตัวเองได้ โดยที่ไม่จำเป็นต้องมี Programming skill หรือความรู้ทาง Math ที่โหดๆเลย ผมจึงทำ Blog นี้ขึ้นมา เพื่อให้ทุกคนได้ลองสร้าง Chatbot ของตัวเองกันครับ

ใน Blog นี้จะไม่บรรยายสรรพคุณของ Chatbot มากนะครับ เพราะน่าจะพอรู้จักกันอยู่แล้ว เดี๋ยวขอสอนการทำ Chatbot ด้วย Dialogflow เลยครับ (จริงๆแล้ว มีตัวช่วยทำ Chatbot อยู่หลายเจ้า แต่ผมจะขอใช้ Dialogflow ครับ)

แนะนำ Dialogflow คร่าวๆ

Dialogflow เป็น Service ของ Google ซึ่งจะไม่ใช่ Chatbot ที่ทำได้แค่ตั้ง If Else ธรรมดา เพราะว่ามันมี AI (ที่ใช้ Machine Learning) อยู่เบื้องหลัง ทำให้สามารถทำอะไรที่ฉลาดๆได้ เช่น หา Intent ของข้อความ หรือหา Name Entity ในข้อความ ซึ่ง Dialogflow นั้น“รองรับภาษาไทย”ครับ ก็คือ AI ของ Dialogflow สามารถทำงานบนภาษาไทยได้

ดังนั้นมาเริ่มกันเลยดีกว่า !

สร้าง Channel ในฝั่งของ Line

เนื่องจากเราจะเอา Dialogflow มา Integrate กับ Line ดังนั้น เราจึงจำเป็นต้องสร้าง Channel ใน Line ขึ้นมาก่อน

ให้เข้าไปที่ https://developers.line.me/console/ เลยครับ

จากนั้นก็ Log in เลยครับ โดยเราสามารถใช้ username และ password ปกติของ Line เราได้นะครับ ซึ่งถ้า Log in ใน Line Developer เป็นครั้งแรก จะต้องไปใส่ Developer Name กับ Email ต่อครับ

หลังจากนั้นให้กด Create New Provider นะครับ แล้วก็ใส่ข้อมูลต่างๆของ Provider ไปครับ และเมื่อเราสร้าง Provider เสร็จ เราจะเจอหน้าที่ให้กดเพิ่ม Channel ครับ

กด Create new channel ครับ

จากนั้นเลือก Messaging API ครับ แล้วตั้งชื่อ Channel กับใส่ Detail ครับ ซึ่งเวลาคนอื่นแอด Line Chatbot ของเรา จะเห็นชื่อของมันเป็นชื่อ Channel เนี่ยแหละครับ

เมื่อสร้าง Channel เราจะอยู่ที่ Tab Channel Settings ครับ ซึ่งจะเป็นข้อมูลต่างๆ ของ Channel เราครับ ซึ่งถ้าเลื่อนไปด้านล่างสุด เราจะเจอ QR Code ครับ ซึ่งสามารถ Scan เพื่อแอด Chatbot เราได้ครับ ให้ทุกคนลองแอดดูเลยครับ แล้วจะเจอ Chatbot ของเรา ที่จะตอบตาม Default ของ Line ครับผม (แต่ยังตอบตามที่เราต้องการไม่ได้) ตอนนี้เราก็ได้ Chatbot ของเรามาแล้วครับ แต่ยังไม่ Cool พอครับ เราต้องไปทำให้มันตอบตามที่เรากำหนดได้ด้วยครับ

ได้ Chatbot ง่ายๆของเราเองแล้วค้าบ

หมายเหตุ: ในขั้นตอนนี้จะไม่ได้อธิบายรายละเอียดของ Provider และ Channel ไว้ ซึ่งสามารถหาอ่านเพิ่มเติมได้ครับ เพราะใน Blog นี้ จะเน้นให้ลองทำออกมาก่อนครับ

ถึงคิว Dialogflow แล้วครับ

เมื่อเราได้ Line Chatbot แล้ว ต่อไปก็จะเป็นการนำ Dialogflow มารวมกับ Line ครับ

ให้เข้าไปที่ https://dialogflow.com/ ครับ แล้วกด Go to console ครับ ซึ่งเว็บจะให้เรา Sign In ครับ สามารถ Sign in ด้วย Gmail ได้เลยครับ

จากนั้นให้เราทำการ Create Agent ครับ ซึ่ง Agent จะเหมือนกับตัวที่จะคอยมาตอบให้เรา อย่าลืมเลือกเป็นภาษาไทยนะครับ

ทำการสร้าง Agent เลยครับ

สร้าง Intent กันก่อนดีกว่า

Intent คือ กลุ่มประโยคที่มีความต้องการเหมือนกัน ซึ่งเราสามารถสอนให้ Agent ของเราเรียนรู้และกำหนดคำตอบสำหรับแต่ละ Intent ได้ เช่น สมมติเราตั้ง Intent ว่า Greeting ซึ่งเรา train ด้วยข้อความว่า “สวัสดี”, “ฮัลโหล”, “ดีครับ”, “โย่วๆ” ไป จากนั้นเมื่อ Chatbot ของเราได้รับข้อความที่มีความคล้ายกับข้อความข้างต้น เช่น “หวัดดี” หรือ “ฮัลโหลวค้าบ” Chatbot ก็ยังเข้าใจว่าได้รับข้อความเหมือนกับข้อความว่า “สวัสดี​” ซึ่งเราก็สามารถกำหนดได้ว่าจะให้ตอบไปว่าอะไร

สร้าง Intent ด้วยการกดเครื่องหมายบวกด้านหลังคำว่า Intent

ตั้งชื่อ Intent เลือก Add Training phrases แล้วพิมพ์ข้อความที่จะสอน Intent นี้แล้วกด Enter

Add Response แล้วเพิ่มข้อความที่จะตอบ เมื่อได้รับข้อความใน Intent นี้กด Enter เพื่อเพิ่มคำตอบใหม่ ถ้ามีหลาย Response Agent จะเลือกสุ่มตอบไป Response เดียว

ในตอนนี้คือ ถ้าผู้ใช้ส่งข้อความอะไรที่คล้ายๆกับ “ฮัลโหลวว”, “โย่วๆ”, “ทักทายครับ”, “สวัสดีจ้า” (มี intent เป็นการทักทาย) ทางบอทเราจะตอบกลับไปว่า “หวัดดีเราบอทเองงง”, “ดีจ้าาา” หรือไม่ก็ “ฮัลโหลค้าบบบบ”

เรียบร้อยแล้วก็กด Save เลย

เมื่อ save แล้วจะได้แบบนี้ (อย่าลืมตั้งชื่อ Intent นะครับ)

ตอนนี้เราได้บอทที่ตอบได้ตาม intent ที่ได้รับมาแล้ว แต่เรายังไม่ได้รวมกับไลน์เลย

เชื่อม Dialogflow กับ Line

ไปที่ Integration ที่เมนูทางด้านซ้ายมือ

เมื่อกดไปเราจะเจอ Platform สำหรับ Chat เต็มเลยครับ ซึ่งทั้งหมดนี่ถูกรองรับด้วย Dialogflow ทั้งหมดเลย

หาของ Line ให้เจอครับแล้วกด Switch เลยครับ แล้วเราจะเจอหน้าต่างแบบนี้

ตรงนี้ให้เรากลับไปดูที่ Line Developer ที่ผมให้เปิดเก็บไว้ครับ ตรงหน้า Channel Setting ครับ ให้เราหา Channel ID, Channel Secret เมื่อเจอก็ Copy ไปแปะที่หน้าต่างใน Dialogflow ได้เลยครับ ส่วน Channel Access Token จะอยู่อีกส่วนนึงครับ

ในรูป เราจะเห็นว่ามันไม่มี Channel Access Token ครับ ซึ่งเราต้องไปกด Issue ครับ ซึ่งเราจะต้องกำหนดอายุของ Token เราไปครับ ก็ใส่ไปแล้วกด Issue อีกทีก็จะได้ Channel Access Token มาครับ

หลังจากนำทั้งหมดไปใส่ใน Dialogflow แล้ว เราจะเห็นว่าในหน้าต่างจะมีส่วนของ Webhook URL ด้วย ให้ Copy ไว้ครับ

หมายเหตุ: Webhook URL จะเป็น URL ที่ให้ Line ใช้ส่งข้อความจาก Line เข้ามาที่ Dialogflow ของเราได้

จากนั้น กลับไปที่ Line Developer ครับ ตรงข้างล่าง Channel Access Token เราจะเจอ Use webhooks ซึ่งเป็น Disable อยู่ ให้เรากด Edit แล้วเลือกเป็น Enable แล้ว Update เลยครับ

หลังจากแก้ไขแล้ว จะได้เป็น Enable แบบนี้

จากนั้นดูข้างล่าง Use webhooks มาอีก จะเจอ Webhook URL ที่เขียนต่อไว้ว่า Require SSL ให้เรากด Edit แล้วนำ Webhook URL จากใน Dialogflow มาแปะ หลังจากนั้น ไปกด Start ที่หน้าต่างของ Dialogflow ครับ

ตรง Button จะกลายเป็นคำว่า Stop แปลว่าตอนนี้ Dialogflow พร้อมตอบข้อความให้เราแล้วครับ

แต่ว่าใน Line ยังตอบข้อความอัติโนมัติอยู่ ซึ่งเราสามารถไปปิดได้ หาคำว่า Auto-reply messages แล้ว Disable มันครับ จะทำให้ Chatbot ของเรา ตอบแค่สิ่งที่กำหนดไว้ใน Dialogflow ครับ จากนั้นลองไปคุยกับบอทเราอีกทีเลย

จะเห็นว่า ถ้าเราส่งคำที่คล้ายๆกับสิ่งที่ใส่ไว้ใน Traning Phase ของ Greeting ตัวบอทจะ Random ตอบตาม Response ที่เราตั้งไว้ แต่จะเห็นว่าตอนที่พิมพ์ไปว่า “อิอิ” มันไม่ตรงกับ Intent Greeting ที่เราตั้งไว้ ทำให้บอทถามกลับไปว่าฉันไม่เข้าใจค่ะ ซึ่งเป็น Default ของ Dialogflow นั่นเองครับ

ตอนนี้เราก็มี Chatbot ของเราเองแล้ว เราจะเอามาตอบคนนู้นคนนี้อแทนเราก็ทำได้ครับ ซึ่งจริงๆแล้ว Dialogflow นั้นมีอะไรให้เล่นอีกเยอะเลย เช่น เอาข้อความที่ได้รับมา Train เพิ่ม หรือทำ Name Entity หรือพวก Context หรืออื่นๆก็ตาม ทุกคนสามารถไปศึกษาเพิ่มเติมได้ครับ อ่านใน Document ของ Dialogflow เองได้เลยครับ

จริงๆแล้ว ทางทีม Altotech ของเราก็ได้นำเรื่องการสร้าง Line Chatbot ที่มี AI ด้วย Dialogflow ไปสอนที่คอร์ส Basic AI ที่ มทส. (มหาวิทยาลัยเทคโนโลยีสุรนารี) มาครับ ซึ่งได้รับ Feedback มาว่าเรื่องนี้น่าสนใจ น่าสนุกครับ จึงได้เขียน Blog นี้ขึ้นมา และหวังว่าบทความนี้จะมีประโยชน์กับหลายๆคนนะครับ

ติดตาม Blog สาระๆ ทั้งด้าน Software Development, AI, Machine Learning ได้ที่ medium.com/altotech นะคร้าบบ

--

--

Ekkalak Leelasornchai
AltoTech

Software Engineer @ SCB10X, Full-Stack Developer, Interested in AI, Data Science, Software Development