Chatbot เป็นอีกหนึ่งเทคโนโลยีที่กำลังเข้ามามีบทบาทสำคัญในปัจจุบัน โดยเฉพาะภาคธุรกิจที่ต้องการสร้างประสบการใช้งานของลูกค้าที่ดี เวลาลูกค้าถามเข้ามาเพื่อซื้อสินค้าหรือบริการ ก็จะสามารถตอบกลับไปได้ทันที ซึ่งช่วยลดงานของเราไปในตัว
จะดีไหมถ้าเราสามารถสร้าง Chatbot ขึ้นมาสักตัวไว้ใช้งาน ซึ่งในบทความนี้เราจะมาสอนใช้งานและทำ Line Chatbot ด้วยภาษาไพธอน โดยการประยุกต์เทคโนโลยีต่าง ๆ เข้าด้วยกันไม่ว่าจะเป็น Line ซึ่งเป็นหนึ่งในแพลตฟอร์มแชทที่ได้รับความนิยมแทบจะเรียกได้ว่าสูงสุดของไทย รวมไปถึง Dialogflow ที่จะช่วยให้บอทของเราฉลาดขึ้น ตัดสินใจเองได้ และก็มี Flask ซึ่งเป็น Back-end Web Framework ของ Python ที่เราจะเอาไว้ใช้เขียนเพื่อรับ Request และส่ง Response ออกไป รวมไปถึงขั้นตอนสุดท้ายจะมีการ Deploy เซอร์วิสของเราไปที่ Heroku ซึ่งสามารถใช้งานได้ฟรีในเบื้องต้นครับ
ไปที่เว็บไซต์ 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 คือ เครื่องมือสำหรับทำ 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
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 กันต่อครับ
กิจกรรมที่กำลังจะมาถึง
ไม่พลาดกิจกรรมเด็ด ๆ ที่น่าสนใจ
Event นี้จะเริ่มขึ้นใน April 25, 2023
รายละเอียดเพิ่มเติม/สมัครเข้าร่วมคอร์สเรียนไพธอนออนไลน์ที่เราได้รวบรวมและได้ย่อยจากประสบการณ์จริงและเพื่อย่นระยะเวลาในการเรียนรู้ ลองผิด ลองถูกด้วยตัวเองมาให้แล้ว เพราะเวลามีค่าเป็นอย่างยิ่ง พร้อมด้วยการซัพพอร์ตอย่างดี