Cover image

สร้าง Line bot ง่ายๆ ด้วย Dialogflow

26 May 2019

Share to:

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

Dialogflow เป็นนึงในหลายๆ แพลตฟอร์มที่ช่วยให้เราสร้าง Chat bot ได้ง่ายๆโดยแทบจะไม่ต้องเขียนโปรแกรมอะไรเลย ที่สําคัญมันสามารถทํา Natural Language Understanding คือสามารถเรียนรู้ และเข้าใจความหมายของประโยคได้ เช่น เมื่อ Input เป็น “สวัสดี”, “ดีๆ”, “ดีครับ” ระบบจะเข้าใจได้ว่าข้อความเหลานี้เป็น ข้อความทักทาย ซึ่งจะ map กับกลุ่มคําที่เราเพิ่มเข้าไปในระบบ (Intents) และตอบกลับมาเป็นประโยคตามที่เรากําหนดไว้ ทั้งหมดนี้เราสามารถทําได้โดยไม่ต้องเขียนโปรแกรมเลย

Dialogflow รองรับการทํา Natural Language Understanding ได้มากกว่า 20 ภาษา และสามารถ Integrate เชื่อมต่อกับ Chat bot ที่หลากหลายไม่ว่าจะเป็น Line, Facebook, ฯลฯ แม้แต่เว็บไซต์ของตัวเองก็สามารถทําได้เช่นเดียวกัน

Image

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

มาดูการทํางานของ Dialogflow กันก่อน การทํางานของ Dialogflow จะมีการทํางานตามรูปนี้

Image

จากรูปจะเริ่มจาก User ส่งข้อความ Chat มายัง Chat bot ข้อความนั้นจะถูกส่งมายัง Dialogflow Agent ซึ่งจะเป็นส่วนที่ควบคุม Bot ของเราทั้งระบบ Dialogflow Agent จะทําการ Match ข้อความกับ Intent เมื่อตรงกับ Intent ไหนก็จะ เริ่มทํางานใน Intent นั้นๆ ว่าจะให้ตอบข้อความ หรืออะไรก็แล้วแต่ตามที่เราต้องการ

ขอขยายความของ Intent นิดนึง มันคือ กลุ่มของคําที่เราสร้างไว้บอกระบบว่าเมื่อมีข้อความประเภทนี้เข้ามา จะให้ระบบทําอะไร เช่น กลุ่มของทําทักทาย “สวัสดี”, “ดีๆ”, “ดีจ้า” กําหนดให้ตอบกลับเป็นข้อความ “สวัสดีครับ ยินดีที่ได้รู้จัก”

เริ่มสร้าง Dialogflow Agent กันเลยครับตามนี้

Step1: สมัคร Account ของ Dialogflow ให้เรียบร้อย และก็เข้าไปยังหน้า Console

Step2: ให้เลือกเมนู “Create new agent” ที่เมนูด้านซ้าย

Image

Step3: ตั้งชื่อของ Agent ตามต้องการ (หมายเลข1) เลือกภาษาของ Chat bot ตามที่ต้องการ ให้เลือกภาษาไทย (หมายเลข2) แล้วกด “CREATE” (หมายเลข3)

Image

Step4: จะพบกับหน้าจอของการจัดการ Intent โดยระบบจะสร้าง Intent มาให้เราสองอันคือ

  • Default Fallback Intent คือ เมื่อข้อความที่เข้ามาไม่ Match กับ Intent ใดเลย ให้เข้ามาทํางานใน Intent นี้
  • Default Welcome Intent คือ เป็นตัวอย่าง Intent

ขั้นตอนนี้เราจะสร้าง Intent โดยกดปุ่ม “CREATE INTENT” (หมายเลข1)

Image

Step5: จะพบกับหน้าจอนี้

Image

ในการสร้าง Intent อันดับแรกให้เราตั้งชื่อ Intent ก่อน (หมายเลข1) ต่อมาตรง หมายเลข2 คือส่วนที่เราจะบอก Dialogflow ว่าให้ทํางานอย่างไรโดยมีรายละเอียดในแต่ละหัวข้อดังนี้

  • Context เป็นการกําหนดว่า input มาจากไหน และ output ไปไหนต่อ
  • Event บอกว่าเป็น trigger จาก Event ไหน
  • Training phrases คำที่เราใช้สอน Dialogflow หรือ bot ของเรา ว่าอันไหนเข้าบริบทนี้ เช่น คำทักทาย มีอะไรบ้าง ใส่ได้หลายคําตามใจชอบครับ
  • Action & Parameter รับคำที่ user พิมพ์มา เก็บไว้ในตัวแปร แล้วเอามาใช้ต่อ เช่นถามส่วนสูง หรือนําหนักเข้ามา
  • Responses เป็นส่วนที่เราบอกกับ bot ว่า เมื่อข้อความที่ User ส่งเข้ามา Match กับ Training phrases ใน Intent นี้ จะตอบอะไรกลับไป
  • Fulfillment ส่วนนี้จะเป็นส่วนที่เราสามารถปิด-เปิดใช้งาน webhook หรือ Fulfillment (จะเป็นส่วนของ coding javascript เพิ่มเติม)

หลังจากที่รู้ความหมายของแต่ละส่วนแบบคร่าวๆ กันไปแล้ว ในบทความนี้เราจะมาสร้าง Bot แบบพื้นฐานซึ่งเราจะสนใจสองส่วนด้วยกันครับคือ ส่วนของ Training phrases และ Responses โดยผมจะยกตัวอย่างการสร้าง Bot ที่สามารถตอบเราได้ว่าชื่ออะไร เมื่อเราถามชื่อ ตัวอย่าง เมื่อเราถามว่า “ชื่ออะไร” Bot จะตอบว่า “ชื่อ ธิติ”

Step6: ใส่ข้อมูลในส่วนของ Training phrases ประมาณนี้ครับ เพื่อบอกว่า เมื่อมีข้อความที่มีความหมายเกี่ยวกับการถามชื่อ ให้ทํางาน Intent นี้

Image

Step7: ใส่ข้อมูลในส่วนของ Responses เพื่อบอกว่าเมื่อมีข้อความที่เข้ามา Match กับกลุ่มคําที่เราใส่ใน Step6 ให้ทําการ Response ข้อความอะไรออกไป

Image

เราสามารถใส่ไปหลายๆประโยคได้ ระบบจะสุ่มประโยคเหล่านี้ Response กลับไปยัง User ให้เอง หลังจากนั้นก็กด Save เท่านี้ก็เรียบร้อย

มาถึงตรงนี้เราก็ได้ Bot ที่สามารถตอบ User ได้ว่าชื่ออะไร เมื่อ User ถาม ในขั้นตอนต่อไปเราจะเชื่อมต่อ Dialogflow อันนี้เข้ากับ Line ที่เรามีอยู่

เชื่อมต่อ Dialogflow กับ Line

ตอนนี้เราก็มาถึงขั้นตอนสําคัญแล้วนะครับคือ ขั้นตอนการเชื่อมต่อระหว่าง Dialogflow กับ Line มีขั้นตอนดังนี้

Step1: ใน Dialogflow ให้เลือกเมนู “Integrations”

Image

Step2: ในหน้าจอ Integrations ให้เลือกเปิด “Line” และจะพบกับหน้าจอนี้

Image

ให้เราใส่ข้อมูล ซึ่งเป็นข้อมูลที่เราจะต้องไปเอาจาก Line office Account โดยไปที่ manager.line.biz” จะพบกับหน้าจอนี้

Image

ไปที่ Account ที่ต้องการจะเชื่อมต่อ(หมายเลข1) ต่อมาให้กดตรงหมายเลข2 ครับ แล้วจะเจอหน้า Setting ของ Response mode

Image

ให้เลือกตามรูปตั้งแต่หมายเลข1-3 ได้เลยครับ แล้วกดตรงหมายเลข4 จะเจอหน้าจอนี้ครับ

Image

ให้นําข้อมูลเหล่านี้ไปใส่ในหน้า Integrations ของ Dialogflow ครับ

  • Channel ID
  • Channel secret

จะเห็นว่ายังขาดในส่วนของ Channel Access Token เราสามารถไปเอาได้จาก Line developer developers.line.biz/console/” โดยเลือก Provider และ Channel ที่ต้องการตามรูป

Image

จะเจอกับหน้าจอ Setting ให้เลื่อนมาในส่วนของ Channel access token กด issue เราจะได้ Token มาครับ

Image

ให้นํามาใส่ในหน้า Integrations ของ Dialogflow

Image

ต่อมานํา Webhook URL จากหน้า Integrations ของ Dialogflow ไปใส่ใน Account Line ตามรูปครับ แล้วกด Save ได้เลยครับ

Image

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

ทดลองใช้งานโดยส่งข้อความ “ซื่ออะไร” ไป Bot จะตอบมาว่า “ซื่อ ธิติ ครับ” ตามรูปครับ

Image

จบเพียงเท่านี้ครับ แล้วเจอกันบทความต่อไปครับ :)

Suggestion blogs

Structure c/c++

Sructure คือ โครงสร้างข้อมูลที่นําเอาข้อมูลที่มีชนิดข้อมูลต่างกัน แต่มีความสัมพันธิ์ของข้อมูล มาเก็บเข้าไว้ภายในโครงสร้างเดียวกัน ต้วอย่างเช่น การเก็บข้อมูลของพนักงานบริษัทแห่งหนึ่งที่จะต้องเก็บ ชื่อ, นามสกุล, แผนก, และเงินเดือน โดยการเก็บ ชื่อ, นามสกุล, แผนก, และตําแหน่งเป็น String และทําการเก็บเงินเดือนเป็นจํานวนจริง จะเขียนได้ดังนี้

ต้นลิ้นมังกร Snake plant ช่วยฟอกอากาศ

ลิ้นมังกรมีคุณสมบัติ ช่วยฟอกอากาศบริเวณรอบ ๆ โดยจะคายก๊าซ Oxygen ในเวลากลางคืน สามารถปลูกภายในห้องนอนได้ จะช่วยฟอกอากาศภายในห้องนอน ให้มีคุณภาพมากขึ้น ช่วยดูดซับสารพิษ ไอระเหยประเภทฟอร์มาลดีไฮด์ โทลูอีน เบนซิน คลอโรฟอร์ม ก๊าซคาร์บอนมอนอกไซด์ และสารพิษอื่น ๆ ที่มาจากสีทาบ้าน เฟอร์นิเจอร์ เครื่องถ่ายเอกสาร

เริ่มต้นใช้งาน IPFS ด้วย Docker

สวัสดีครับ ในบทความนี้ผมจะอธิบายการใช้งาน IPFS ด้วย Docker ซึ่งการใช้งาน IPFS ด้วย Docker นั้นเป็นแนวทางนึงในการใช้งาน IPFS สําหรับใครที่อยากจะติดตั้งบนเครื่องก็สามารถอ่านเพิ่มเติมได้จาก Document ของ IPFS ได้เลยครับ แต่โดยส่วนตัวของผมนั้น ผมชอบที่จะใช้ผ่าน Docker เนื่องจากไม่ต้องติดตั้ง IPFS บนเครื่องของเรา ถ้าใครยังไม่รู้จัก Docker สามารถไปอ่านบนความเก่าๆได้ครับที่นี่ https://thiti.dev/tags/docker


Copyright © 2019 - 2024 thiti.dev |  v1.19.0 |  Privacy policy |  status | 

            วงแหวนเว็บ