Chatbot เป็นอีกหนึ่งเทคโนโลยีที่กำลังเข้ามามีบทบาทสำคัญในปัจจุบัน โดยเฉพาะภาคธุรกิจที่ต้องการสร้างประสบการใช้งานของลูกค้าที่ดี เวลาลูกค้าถามเข้ามาเพื่อซื้อสินค้าหรือบริการ ก็จะสามารถตอบกลับไปได้ทันที ซึ่งช่วยลดงานของเราไปในตัว
จะดีไหมถ้าเราสามารถสร้าง Chatbot ขึ้นมาสักตัวไว้ใช้งาน ซึ่งในบทความนี้เราจะมาสอนใช้งานและทำ Line Chatbot ด้วยภาษาไพธอน โดยการประยุกต์เทคโนโลยีต่าง ๆ เข้าด้วยกันไม่ว่าจะเป็น Line ซึ่งเป็นหนึ่งในแพลตฟอร์มแชทที่ได้รับความนิยมแทบจะเรียกได้ว่าสูงสุดของไทย รวมไปถึง Dialogflow ที่จะช่วยให้บอทของเราฉลาดขึ้น ตัดสินใจเองได้ และก็มี Flask ซึ่งเป็น Back-end Web Framework ของ Python ที่เราจะเอาไว้ใช้เขียนเพื่อรับ Request และส่ง Response ออกไป รวมไปถึงขั้นตอนสุดท้ายจะมีการ Deploy เซอร์วิสของเราไปที่ Heroku ซึ่งสามารถใช้งานได้ฟรีในเบื้องต้นครับ
สมัครใช้งาน Line Developers
ไปที่เว็บไซต์ https://developers.line.biz/en/
https://developers.line.biz/en/
https://developers.line.biz/en/
กด Login มุมขวาบน

สามารถ Login ด้วย ID หรือ Email LINE ของเราได้เลย

เมื่อ Login เข้ามาจะเจอหน้าเว็บไซต์ประมาณนี้ ซึ่งจะมีการแสดงโปรเจคต่าง ๆ ของเรา หากไม่มีไม่ต้องตกใจนะครับ

ให้เรากด Create ตรง Providers ได้เลย

ตั้งชื่อตามที่เราต้องการ

เสร็จแล้วจะได้หน้าเว็บไซต์ประมาณนี้ทางซ้ายมือกดที่ Providers จะเจอชื่อโปรเจคที่เราสร้างไว้


จากนั้นกดที่ Create a Messaging API channel ได้เลย

กรอกรายละเอียดต่าง ๆ ได้เลย โดยในส่วนของ Channel type ให้เลือกเป็น Messaging API และ Provider ให้เลือกเป็นโปรเจคของเรา ซึ่งปกติจะถูกตั้งมาให้อยู่แล้ว

จากนั้นกดยอมรับเงื่อนไขต่าง ๆ ของ LINE แล้วกด Create ได้เลย

เท่านี้เราก้ได้ตัว Messaging API เพื่อทำ Chatbot เรียบร้อยแล้ว

สำหรับการแอดบอทเป็นเพื่อนนั้นให้เรากดไปที่ Messaging API สามารถเลือกแอดแบบ ID หรือ QR Code ก็ได้

เท่านี้ก็เป็นอันเสร็จขั้นตอนการสร้าง LINE Messaging API สำหรับทำ Chatbot

.
ในส่วนของการตั้งค่าโปรไฟล์ต่างๆ นั้นเราสามารถตั้งค่าได้ที่ Basic settings จากนั้นกดที่ LINE official Account Manager

ในหน้านี้เราก็สามารถปรับแต่งโปรไฟล์ของเราได้ตามต้องการ

การใช้งาน Dialogflow ให้เข้าไปที่เว็บไซต์ https://dialogflow.cloud.google.com
ทำการ login ด้วย Gmail ได้เลย

เมื่อ login เข้ามาเราจะได้หน้าตาเว็บไซต์แบบนี้ ให้เรากด Create Agent ได้เลย

ทำการตั้งชื่อและเปลี่ยนภาษาตามนี้เลย จากนั้นกด CREATE

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

ต่อไปจะเป็นการเชื่อมต่อ Line เข้า กับ Dialogflow ของเรา ก่อนอื่นให้เรากลับไปที่ https://developers.line.biz/console/ เพื่อทำการเปิด Webhook และตั้งค่าให้ Line ของเราเชื่อมต่อกับ Dialogflow ได้ โดยสิ่งที่เราต้องคือ Channel ID / Channel secret / Channel access token
โดย Channel ID และ Channel secret จะอยู่ในส่วนของ Basic settings


และในส่วนของ Channel access token จะอยู่ใน Meassaging API

ให้กด Issue ได้เลย

ให้เราเก็บ Channel ID / Channel secret / Channel access token เอาไว้ก่อน

จากนั้นกลับไปที่ Dialogflow ของเราและกดที่ Integrations

จะเห็น logo LINE ให้เรากดเปิดได้เลย

จากนั้นเว็บไซต์จะเด้งหน้าต่างขึ้นให้เราใส่ Channel ID / Channel secret / Channel access token ได้เลย

ใส่ส่วนของ Webhook URL นั้นให้เรา copy เก็บไว้เช่นกัน

เมื่อกรอกครบแล้วให้กด Start ได้เลย

จากนั้นให้เรากลับมาที่ https://developers.line.biz/console/ แล้วกดไปที่ Messaging API

จากนั้นเลื่อนลงมาจะเจอ Webhook settings ให้นำ Webhook URL จาก Dialogflow มาใส่และกดเปิด Use webhook ตามภาพ

ต่อมาไปที่ Basic settings และเข้าไปที่ LINE official Manager

กดที่แทบเมนู แชท

ทำการปิดข้อความตอบกลับอัตโนมัติ เนื่องจากเราต้องการให้การตอบกลับเป็นหน้าที่ของ Dialogflow

เท่านี้ LINE ของเราก็เชื่อมต่อกับ Dialogflow พร้อมใช้งานแล้ว ต่อไปเราจะมาทดสอบ การทำงานของ Dialogflow กันครับ
Dialogflow คืออะไร ?
ขอเกริ่นเกี่ยวกับ Dialogflow สักเล็กน้อย ซึ่งหลาย ๆ คนก็น่าจะทราบมาบ้างแล้วครับ แต่ถือว่าเป็นการทบทวนไปในตัวเลยแล้วกันครับ ซึ่ง Dialogflow คือ เครื่องมือสำหรับทำ NLP (natural language processing) หรือการประมวลผลทางด้านภาษา ซึ่งเปิดให้ใช้งานฟรี และยังรองรับภาษาไทยอีกด้วย
โดยหลักการทำงานเบื้องต้นของ Dialogflow จะเป็นการรับ inputเข้ามา เพื่อทำการ วิเคราะห์หา intent ที่มีความสัมพันธ์ มากที่สุด intent คือกลุ่มคำหรือประโยคที่เราสร้างขึ้นมา โดยแต่ละ intent เราจะสามารถ training คำต่างๆที่ใกล้เคียงกันเพื่อให้ chatbot ของเรามีความแม่นยำ มากขึ้นได้

จากภาพเราจะเห็นได้ว่าแต่ละ intent เราสามารถกำหนดประโยคหลายๆ ประโยคที่มีความใกล้เคียงกันให้อยู่ใน intent เดียวกันเพื่อเป็นการคาดเดา คำต่างๆที่ผู้ใช้งานจะพิมพ์เข้ามาโดยยิ่งเรามีการใส่ประโยคมากเท่าไร ก็จะทำให้ chat bot ของเรามีความแม่นยำมากขึ้น
เพื่อให้เห็นภาพมากขึ้นเรามาสร้าง intent กันเลย
ไปที่ https://dialogflow.cloud.google.com ของเรา
กดไปที่ intents จากนั้นกด CREATE INTENT ได้เลย

ทำการตั้งชื่อ แล้วกด SAVE

จากนั้นให้ ที่ ADD TRAINING PHRASES

ในส่วนนี้คือการ Training คำหรือประโยคต่างๆ ที่อยู่ใน intent เดียวกันยิ่งใส่คำหรือประโยคต่างๆ มากเท่าไร ก็ยิ่งเพิ่มความแม่นยำให้กับ Chatbot ของเรา

เลื่อนลงมาจะเห็น Responses ในส่วนนี้คือ การตอบกลับ ของ Chatbot เรา สามารถใส่ได้มากกว่า 1 ประโยคหากใส่มากกว่า 1 ประโยคจะเป็นการสุ่มตอบ

จากนั้นก็ กด SAVE แล้ว

เท่านี้เราก็สร้าง intent ของเราเรียบร้อย จากนั้นให้ลองทำ intent ที่เหลือตามตัวอย่างได้เลย

จากนั้นไปทดสอบ Chatbot ของเราได้เลย

เท่านนี้เราก็สามารถสร้าง Chatbot ที่มีการตอบกลับกับผู้ใช้งานได้แล้ว
ต่อไปเราจะมาลองทำ intent หลายๆชั้น เพื่อให้ Chatbot ของเรามีประสิทธิภาพมากขึ้น

ตัวอย่างการสร้างให้เราสร้าง intent ขึ้นมาก่อน

โดยตัวอย่างผมได้สร้าง intent ที่ทำให้ Chatbot ของเราตอบกลับมาแบบมีเงื่อนไขซึ่งจะทำให้ ผู้ใช้เลือกตอบว่า ใช่ หรือ ไม่ใช่ เป็นต้น
จากนั้นให้กดที่ Add follow-up intent ของ intent ที่เราสร้างขึ้นมา

จากนนั้นให้กดสร้าง yes และ no ซึ่งอาจจะกดเป็น custom ก็ได้แต่หาก เลือกเป็น yes no ตัว Dialogflow จะทำการสร้าง intent ที่มีการ Training มาให้เรียบร้อยโดยที่เราไม่ต้องไปใส่ค่า Training ต่างๆ เองแต่เรายังสามารถเพิ่ม-ลบ Training ต่างๆ ได้เหมือนเดิม

เมื่อกดทั้ง yes และ no แล้วเราจะได้ intent ที่ซ้อนอยู่ใน intent หลักมา

ให้เราคลิกเข้าไปที่ intent 4 – yes เราจะเห็นว่า Dialogflow นั้นได้ทำการ Training คำ หรือ ประโยคตอบตกลงมาให้เราเรียบร้อยแล้ว

เราก็เพียงใส่คำตอบที่ต้องการให้ Chatbot ของเราตอบกลับไป

ในส่วนของ intent 4 – no ก็เช่นกันแต่เราจะให้ Chatbot ของเรามีการถามคำถามต่อไปอีกว่า “รอใครอยู่”

จากนั้นให้เรากดที่ add follow-up intent ของ intent 4 – no

ในครั้งนี้ให้เรากดเป็น custom เนื่องจากเราจะทำการ Training เอง

เสร็จแล้วเราจะได้ตัว intent ใหม่มา ชื่อ intent 4 – no - custom

เมื่อกดเข้าไปก็ให้เราทำการ Training ให้เรียบร้อย


จากนั้นกด save ก็เป็นอันเสร็จ เรามาทดสอบบอทของเรากันเลย

สำหรับการเพิ่มความสามารถให้กับ Chatbot ของเราให้มีปะสิทธิภาพ เชื่อมต่อสิ่งต่าง ๆ ได้ไม่ว่าจะเป็น ฐานข้อมูล บริการต่างๆ API หรือ service อื่นๆ มากมาย นั้น Dialogflow ไม่สามารถทำได้ ฉะนั้นเราจึงจำเป็นใช้เครื่องมือที่ชื่อว่า LINE bot sdk ซึ่งทาง LINE Developers ได้ทำออกมาให้รองรับ ภาษาต่างๆ ไม่ว่าจะเป็น PHP Node.js Go และ Python เพื่อให้เราสามารถต่อยอด Chatbot ของเราไปได้อีกขั้น
เชื่อมต่อ Line Chatbot กับ Python back-end (Flask)

โดยครั้งนี้เราจะมาใช้ตัว LINE bot sdk ของ Python กัน ก่อนอื่นเรามาทำความรู้จัก การทำงานของ LINE Messaging API กันก่อน โดยการส่งข้อความ หรือ กลุ่มข้อมูลต่างๆ นั้น LINE จะทำการส่งมาในรูปแบบ POST Method ซึ่งกลุ่มข้อมูลเป็นแบบ JSON โดยจะส่งไปยัง webhook ที่เราทำการผูกไว้ LINE สามารถส่งข้อความได้ 7 รูปแบบคือ TEXT Message / Image / Video Audio / Location / Sticker / Template Send Message โดยโครงสร้างของแต่ละรูปแบบก็จะมีส่วนประกอบที่แตกต่างกัน เช่น
TEXT Message
{
"type": "text",
"text": "Hello, world"
}
Image
{
"type": "image",
"originalContentUrl": "url",
"previewImageUrl": "url"
}
https://developers.line.biz/en/reference/messaging-api/#sticker-message
โดยตัว Dialogflow จะส่งข้อความโดย พื้นฐานเป็น TEXT Message หากต้องการส่งในรูปแบบอื่นๆ จำเป็นต้อง ส่งโดยมี โครงสร้างเป็น รูปแบบ json ซึ่งทำให้เกิดความยุ่งยาก และไม่สะดวกเท่าไรนักในการแก้ไข LINE bot sdk คือเครื่องมือ หรือ library ที่จะช่วยให้เราสามารถ สร้าง chat bot ได้ง่าย และมีประสิทธิภาพมากขึ้น โดยไม่ต้องค่อยเขียน json ขึ้นมาใหม่ ซึ่งข้อดีหลักๆ ไม่ใช่แค่นี้ ด้วยการที่เราใช้ LINE bot sdk สร้าง webhook เองนั้นทำให้เราสามารถ เพิ่มความสามารถให้กับ chat bot ของเราได้อย่างมากโดยเฉพาะ การเชื่อมต่อมูล และ service ต่างๆ และอื่นๆ อีกมากมาย ซึ่งจะขอยกไว้อธิบายเพิ่มเติมในบทความถัดไป
“จบบทความนี้ หวังว่าทุกคนที่อ่านจะสามารถสร้าง Line Chatbot เพื่อเชื่อมต่อกับ Dialogflow ได้นะครับ”
สำหรับบทความใน Ep.1 จะขอจบไว้เพียงเท่านี้ก่อนครับ แล้วมาพบกันใหม่ใน Ep.2 กันต่อครับ
