สร้าง Agent RBM ที่ขับเคลื่อนโดย Dialogflow (ขั้นสูง)

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ Dialogflow เพื่อสร้างอินเทอร์เฟซการสนทนา เพื่อขับเคลื่อน Agent RBM

คุณจะสร้างอะไรใน Codelab นี้

  • Agent ของ Dialogflow ที่ขับเคลื่อนการสนทนาของตัวแทน RBM
  • อินเทอร์เฟซสนทนาสําหรับร้านจักรยานสมมติที่ช่วยให้ผู้ใช้รู้ข้อมูลเกี่ยวกับร้านจักรยาน และตั้งค่าการนัดหมายเพื่อแก้ไขหรือให้บริการ จักรยานของตน

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้โครงสร้างหลัก Dialogflow'3 (ความตั้งใจ เอนทิตี และบริบท) เพื่อสร้างอินเทอร์เฟซการสนทนา
  • วิธีเชื่อมต่ออินเทอร์เฟซการสนทนากับบริการและ API ของคุณเอง โดยใช้การดําเนินการของ Dialogflow&#39 และตัวแก้ไขในหน้า (ขับเคลื่อนโดย Cloud Functions สําหรับ Firebase)
  • วิธีสร้างประเภทการตอบกลับ RBM จาก Dialogflow เพื่อสร้างประสบการณ์ RBM ที่สมบูรณ์สําหรับผู้ใช้

สิ่งที่ต้องมี

  • บัญชี Google

สร้างและค้นหา Agent แรก

ระยะเวลา: 10:00

สร้าง Agent ของ Dialogflow แรก

วิธีสร้าง Agent ของ Dialogflow

  1. เปิดแท็บใหม่และลงชื่อเข้าใช้ Dialogflow
  2. คลิกสร้าง Agent ในการนําทางด้านซ้าย

  3. ป้อน "CodelabRBMBikeShop" สําหรับชื่อของเอเจนซี &&tt;ภาษาอังกฤษ" เป็นภาษาเริ่มต้น และตั้งเขตเวลาเริ่มต้นเป็นเขตเวลาของคุณ จากนั้นคลิกสร้าง

คอนโซล Dialogflow

ถึงตอนนี้คุณควรเห็นคอนโซล Dialogflow แล้ว หากคุณใช้งานในหน้าจอขนาดเล็ก และซ่อนการนําทางด้านซ้ายมือไว้ ให้คลิกปุ่มการนําทางที่มุมซ้ายบน ปุ่มการตั้งค่าจะนําคุณไปยังการตั้งค่าของ Agent ปัจจุบัน

ตรงกลางหน้าจะแสดงรายการ Intent ของ Agent โดยค่าเริ่มต้น Agent ของ Dialogflow จะเริ่มจาก Intent 2 เวอร์ชัน ตัวแทนของคุณจับคู่กับการทํางานเริ่มต้น ความตั้งใจเมื่อไม่เข้าใจสิ่งที่ผู้ใช้พูด เจตจํานงต้อนรับเริ่มต้นเป็นการทักทายผู้ใช้ โดยคุณจะปรับเปลี่ยนความตั้งใจเหล่านี้เพื่อปรับแต่งประสบการณ์การใช้งานได้

ทางด้านขวาคือเครื่องจําลอง Dialogflow ซึ่งจะช่วยให้คุณได้ลองใช้ Agent ด้วยการพูดหรือพิมพ์ข้อความ

กําลังค้นหา Agent ของคุณ

เราอธิบายลักษณะของ Agent ใน Dialogflow ได้ดีที่สุดว่าโมดูล NLU (Natural Language Interpreting) ซึ่งอาจรวมอยู่ในแอป ผลิตภัณฑ์ หรือบริการเพื่อเปลี่ยนคําขอของผู้ใช้ทั่วไปให้เป็นข้อมูลที่นําไปใช้ได้จริง

ได้เวลาลองใช้ตัวแทนของคุณแล้ว ในเครื่องจําลองทางด้านขวา ให้คลิกช่องข้อความ ลองใช้เลย พิมพ์ "Hi" และกด Enter

Dialogflow จะระบุคําค้นหา ตรงกับ Intent ต้อนรับเริ่มต้น และตอบคําทักทายทั่วไป เนื่องจาก Dialogflow จะฝึกความตั้งใจต้อนรับเริ่มต้นโดยอัตโนมัติด้วยคําทักทายตัวอย่าง

สร้าง Agent ของ RBM

ลงชื่อเข้าใช้ Console สําหรับนักพัฒนาซอฟต์แวร์ทางธุรกิจ แล้วคลิกสร้าง Agent

ในช่องชื่อ ให้ป้อน "ร้านจักรยานชื่อของคุณ" (เช่น "Sean’s Bike Agent") เลือกภูมิภาค แล้วคลิกสร้างตัวแทน

เชื่อมต่อตัวแทน RBM ของคุณกับ Dialogflow

หลังจากสร้าง Agent ของ RBM แล้ว ให้คลิก Agent เพื่อดูหน้าภาพรวมของ Agent คลิกลิงก์การผสานรวมในการนําทางด้านซ้าย

โดยค่าเริ่มต้น ตัวแทน RBM จะใช้ Google Cloud Pub/Sub เพื่อจัดการข้อความสําหรับผู้ใช้ หากต้องการเชื่อมต่อ Agent RBM กับ Agent ของ Dialogflow ที่สร้างไว้ก่อนหน้านี้ ให้คลิกการผสานรวม Dialogflow

ในกล่องโต้ตอบ ให้คลิกเชื่อมต่อโมเดลที่มีอยู่ ทําตามวิธีการเพื่อให้สิทธิ์ตัวแทน RBM ในการเรียก Agent ของ Dialogflow แล้วคลิกถัดไป

สุดท้าย คุณจะต้องระบุรหัสโปรเจ็กต์ Dialogflow ในแท็บของเบราว์เซอร์ ต่างจาก Developer Communications สําหรับนักพัฒนาซอฟต์แวร์ ให้ไปที่ Dialogflow แล้วเปิด CodelabRBMBikeShop ที่คุณสร้างไว้ก่อนหน้านี้ คลิกไอคอนรูปเฟืองใกล้กับชื่อโปรเจ็กต์ในการนําทางด้านซ้าย

เมื่อคลิกแล้วระบบจะนําคุณไปยังการตั้งค่าของโมเดล ในส่วน GOOGLE PROJECT ให้ค้นหาและคัดลอกรหัสโปรเจ็กต์

กลับไปยังแท็บของคุณโดยเปิด Business Communications Developer Console วางรหัสโปรเจ็กต์ลงในกล่องโต้ตอบ แล้วคลิกเริ่มการผสานรวม

ขั้นตอนนี้อาจใช้เวลาประมาณ 2 นาที เมื่อดําเนินการเสร็จสิ้น คุณควรเห็นตัวเลือกการผสานรวม Dialogflow อยู่และลิงก์ View Agent พร้อมให้ใช้งาน

ขณะนี้ข้อความทั้งหมดจาก Agent ของคุณไปยัง Agent ของ CodelabRBMBikeShop Dialogflow แล้ว

เชิญอุปกรณ์ทดสอบและส่งข้อความ

ก่อนเจาะลึกงาน Dialogflow มาตั้งค่าอุปกรณ์ทดสอบกันก่อน หากคุณไม่มีอุปกรณ์ที่สามารถรับข้อความ RBM ได้ โปรดทําตามคําแนะนํานี้เพื่อเตรียมอุปกรณ์ของคุณให้พร้อม

จาก Google Business Communications Developer ให้คลิกอุปกรณ์ในการนําทางด้านซ้าย ในแบบฟอร์ม ให้ป้อนหมายเลขโทรศัพท์แบบเต็มของอุปกรณ์ในรูปแบบ E.164 (เช่น +12223334444) แล้วคลิกเพิ่ม

คุณจะได้รับคําเชิญให้ทดสอบในอุปกรณ์ แตะทําให้ฉันเป็นผู้ทดสอบ

ในเบราว์เซอร์ ให้ค้นหาอุปกรณ์ในรายการอุปกรณ์และส่งข้อความทดสอบไปยังอุปกรณ์ หากคุณได้รับข้อความบนอุปกรณ์จากตัวแทน RBM ของคุณ แสดงว่าพร้อมใช้งาน Codelab นี้แล้ว

กําลังสร้าง Intent ต้อนรับ

โดยปกติแล้ว ตัวแทน RBM ที่ขับเคลื่อนโดย Dialogflow จะทําการสนทนาโดยเริ่มจากการเรียก API ที่ระบุหมายเลขโทรศัพท์ของผู้ใช้และ Intent ของ Dialogflow ที่เริ่มการสนทนา (โดยปกติจะเป็นการต้อนรับความตั้งใจของตัวแทน) สําหรับ Codelab นี้ เราจะข้ามขั้นตอนนี้และใช้ชุดข้อความการสนทนาที่เราสร้างไว้แล้วในขั้นตอนก่อนหน้าด้วยอุปกรณ์ทดสอบจากแผงควบคุมสําหรับนักพัฒนาซอฟต์แวร์ Business Communications แต่หากต้องการอ่านเพิ่มเติมเกี่ยวกับฟีเจอร์ API นี้ โปรดอ่านคู่มือนี้

เริ่มต้นด้วยการเพิ่มการตอบกลับ RBM ในความตั้งใจต้อนรับเริ่มต้นเพื่อให้ Dialogflow ใช้กับ Agent ของ RBM ได้ ขั้นแรก ให้ไปที่แท็บเบราว์เซอร์ที่เปิด Dialogflow อยู่ คลิกความตั้งใจต้อนรับเริ่มต้น เลื่อนลงไปที่ส่วนการตอบกลับ คลิก + ในรายการประเภทการตอบกลับ และเลือกการรับส่งข้อความทางธุรกิจ RCS (RBM)

คลิกเพิ่มคําตอบ แล้วเลือกคําตอบง่ายๆ ในช่องข้อความสําหรับคําตอบง่ายๆ ให้ป้อน Enter "สวัสดี ยินดีต้อนรับสู่ร้านจักรยานของ Hogarth&#39 ฉันจะช่วย PII ได้อย่างไร (แทนที่ Hogarth ด้วยชื่อของคุณ) แล้วคลิกบันทึก

การเริ่มต้นการสนทนา

เมื่อกําหนดค่าตามความตั้งใจต้อนรับแล้ว ให้กลับไปที่อุปกรณ์ทดสอบและส่งข้อความ "Hi" ข้อความนี้จะเรียกความตั้งใจต้อนรับเริ่มต้น และคุณจะเห็นสิ่งที่คล้ายกับรูปภาพด้านล่าง

อัปเดตความตั้งใจต้อนรับ

เมื่อคุณมี Dialogflow ส่งข้อความแบบง่ายๆ แล้ว เรามาอัปเดตข้อความนั้น เพื่อให้มีประโยชน์มากขึ้นอีกหน่อย เราไม่เพียงต้องการต้อนรับผู้ใช้เท่านั้น แต่ยังให้คําแนะนํา เกี่ยวกับการทํางานของผู้ใช้ด้วย

ตัวแทนที่เราสร้างจําเป็นต้องรองรับฟีเจอร์หลัก 2 อย่าง ได้แก่ การตรวจสอบเวลาทําการของธุรกิจ และการนัดหมาย มาแทนที่ข้อความตอบกลับง่ายๆ ด้วยการ์ดที่ให้คําตอบที่แนะนําเพื่อดําเนินการโต้ตอบเหล่านี้กัน

ในส่วนค่าเริ่มต้นของ Intent ต้อนรับ'คําตอบ ให้เลือกแท็บ RCS Business Messaging (RBM) นําการตอบกลับแบบง่ายที่มีอยู่ออกโดยคลิกไอคอนถังขยะ จากนั้นคลิกเพิ่มคําตอบ แล้วเลือก Rich Card แบบสแตนด์อโลน

ในแบบฟอร์ม Rich Card แบบสแตนด์อโลน ให้ป้อนข้อมูลต่อไปนี้

  • ชื่อการ์ด: สวัสดี ยินดีต้อนรับสู่ร้านจักรยาน Hogarth&#39
  • คําอธิบายการ์ด: ฉันจะช่วยอะไรคุณได้บ้าง เลือกจากตัวเลือกด้านล่างนี้
  • เลือกการวางแนวการ์ด: แนวตั้ง
  • URL ของรูปภาพ/วิดีโอ: https://storage.googleapis.com/df-rbm-codelab/bike-shop.jpg
  • เลือกความสูงของสื่อ: ปานกลาง

คลิกเพิ่มคําแนะนํา แล้วป้อนข้อมูลต่อไปนี้

  • ข้อความแนะนํา: โปรดระบุเวลาทําการ
  • ระบบรายงานผล Conversion สําหรับคําแนะนํา: โปรดตอบกลับ_ชั่วโมง

เพิ่มคําแนะนําอื่นโดยคลิกเพิ่มคําแนะนํา และป้อนข้อมูลต่อไปนี้

  • ข้อความแนะนํา: นัดหมาย
  • ระบบรายงานผล Conversion สําหรับคําแนะนํา: โปรดตอบกลับ_appointment

คลิกบันทึก

ลองใช้เลย

เมื่อโมเดลระบุว่า "การฝึกอบรมเสร็จสิ้นของตัวแทน" ให้กลับไปที่อุปกรณ์ของคุณและส่งข้อความ "สวัสดี" ไปยังตัวแทนของคุณ ตอนนี้คุณน่าจะเห็นการ์ดริชมีเดียแบบสแตนด์อโลนที่เพิ่งออกแบบแล้ว

ลองแตะเวลาทําการของคุณ โปรดสังเกตว่าจะมีการเรียกใช้ Intent สํารองเริ่มต้น เนื่องจาก Agent Dialogflow ไม่ทราบวิธีจัดการ ข้อมูล Postback ที่คุณกําหนดค่าไว้สําหรับคําแนะนํานี้ "reply_hours"

มาแก้ปัญหานี้กัน

การสร้าง Intent ของเวลาทําการ

Dialogflow ใช้ความตั้งใจในการจัดหมวดหมู่ความตั้งใจของผู้ใช้ Intent มีวลีการฝึก ซึ่งเป็นตัวอย่างของสิ่งที่ผู้ใช้พูดกับตัวแทนของคุณ เช่น บางคนต้องการทราบเวลาทําการของร้านจักรยานของเราอาจถาม "คุณจะเปิดอันไหนบอกได้ " โปรดระบุเวลาทําการของคุณ{/4}หรือ " ฉันจะไปถึงช้าได้เมื่อไร

คําค้นหาเหล่านี้ไม่เหมือนใครแต่มีจุดประสงค์เหมือนกัน นั่นคือเพื่อรับข้อมูลว่าร้านจักรยานของเราเปิดกี่โมง

หากต้องการครอบคลุมการค้นหานี้ ให้สร้าง "ชั่วโมง" ความตั้งใจ:

  1. ในการนําทางด้านซ้าย ให้คลิก + ข้าง Intent
  2. สําหรับชื่อ Intent ให้ป้อน"Hour&&tt;
  3. ในส่วนวลีการฝึก ให้คลิกเพิ่มนิพจน์ผู้ใช้ และป้อนข้อมูลต่อไปนี้ จากนั้นกด Enter หลังจากแต่ละรายการ

    • When do you open?
    • What are your hours?
    • How late can I come in?
    • reply_hours

    วลีการฝึกล่าสุดจะใช้ในการแมปข้อมูล Postback ที่คุณกําหนดค่าไว้ในส่วนก่อนหน้าโดยมีเจตนานี้

  4. ในส่วนคําตอบ ให้คลิก + และเลือก RCS Business Messaging (RBM)

  5. คลิกเพิ่มคําตอบ แล้วเลือกคําตอบพื้นฐาน

  6. ในช่องข้อความสําหรับคําตอบง่ายๆ ให้ป้อน "เรา'เปิดทุกวันธรรมดา ตั้งแต่เวลา 9.00-17.30 น.&"

  7. คลิกบันทึก

ลองใช้เลย

แล้วลองระบุเวลาทําการของตัวแทน ในอุปกรณ์ ในการสนทนาสําหรับ ตัวแทน RBM ของคุณ ให้ป้อน "openopenquot เมื่อใด และส่งข้อความถึงตัวแทนของคุณ

ในตอนนี้ Agent ของคุณตอบสนองต่อคําค้นหาได้อย่างถูกต้อง โปรดสังเกตว่า แม้ว่าคําค้นหาของคุณจะแตกต่างไปเล็กน้อยจากวลีการฝึก ("how openquoquot; versus "When you openopenquot;) Dialogflow ยังจับคู่คําค้นหากับ Intent ที่ถูกต้อง นอกจากนี้ คุณยังแตะเวลาทําการในการ์ดริชมีเดียได้ด้วย

Dialogflow ใช้วลีการฝึกเป็นตัวอย่างสําหรับโมเดลแมชชีนเลิร์นนิงเพื่อจับคู่ผู้ใช้&#39 การค้นหากับความตั้งใจที่ถูกต้อง โมเดลแมชชีนเลิร์นนิงจะตรวจสอบการค้นหาโดยเทียบกับความตั้งใจทั้งหมดใน Agent ด้วย แล้วให้คะแนนความตั้งใจทั้งหมดและ ระบบจะจับคู่ความตั้งใจที่ได้คะแนนสูงสุด หากความตั้งใจในการให้คะแนนสูงสุดมีคะแนนต่ํามาก ระบบจะจับคู่ความตั้งใจสํารอง

การเพิ่มการดําเนินการตามคําสั่งซื้อ

ในขณะที่ทํางานได้ ตัวแทนที่เราสร้างขึ้นมาจะมีลักษณะการทํางานที่ผิดธรรมชาติเล็กน้อย เมื่อผู้ใช้ถามคําถาม เช่น "เป็น Open?" ตัวแทนจะตอบกลับด้วย " เราเปิดทําการทุกวันธรรมดาตั้งแต่เวลา 9.00 น.-17.30 น." คงจะเป็นธรรมชาติและเป็นประโยชน์มากกว่านี้ หากตัวแทนแจ้งให้เราทราบโดยตรงว่าร้านเปิดอยู่ไหม

โดยตัวแทนจะต้องตรวจสอบว่าร้านค้าเปิดอยู่หรือไม่ และสร้างคําตอบที่แตกต่างในทั้ง 2 กรณี ใน Dialogflow ควรมีการใช้ตรรกะที่ซับซ้อนประเภทนี้ในเว็บฮุคของการดําเนินการตามคําสั่งซื้อ

เว็บฮุคสําหรับการจําหน่ายคือเซิร์ฟเวอร์ HTTP ที่ Dialogflow เรียกใช้ โดยมีข้อมูลเกี่ยวกับสถานะการสนทนาปัจจุบัน รหัสการดําเนินการจะดําเนินการทุกอย่างที่จําเป็น แล้วสร้างการตอบกลับว่า Dialogflow กลับมาให้ผู้ใช้

ต่อไปนี้เราจะมาพูดถึงขั้นตอนการติดตั้งใช้งานเว็บฮุคให้ดําเนินการตามคําสั่งซื้อเพื่อให้ตัวแทนของเราตอบคําถามที่เป็นประโยชน์ได้มากยิ่งขึ้น

การตั้งค่า: การทําให้ใช้งานได้และการเปิดใช้การดําเนินการตามคําสั่งซื้อ

Dialogflow มีตัวแก้ไขฟังก์ชันระบบคลาวด์สําหรับ Firebase ในตัว ซึ่งช่วยให้คุณเขียนและติดตั้งใช้งานโค้ด JavaScript ที่จะจัดการกับการดําเนินการที่ทําได้

ในการนําทางด้านซ้ายของ Dialogflow ให้คลิกการดําเนินการตามคําสั่งซื้อเพื่อเปิดหน้าการดําเนินการ คลิกปุ่มสลับข้างตัวแก้ไขในบรรทัดเพื่อเปิดใช้ Cloud Functions for Firebase Editor

คุณจะเห็นว่าตัวแก้ไขมี 2 ไฟล์ ได้แก่ "index.js" ซึ่งมีโค้ดหลักสําหรับการจําหน่าย และรหัส "package.json" มีรายละเอียดที่ต้องพึ่งพา

ตอนนี้เราจะนําเข้าโค้ดตัวอย่างที่จะขับเคลื่อนการดําเนินการตามคําสั่งซื้อ

คัดลอกและวางข้อความของไฟล์นี้ใน "index.js" โดยแทนที่เนื้อหาปัจจุบันทั้งหมด:

https://storage.googleapis.com/df-rbm-codelab/index.js

จากนั้นเลื่อนลงไปที่ด้านล่างของหน้า แล้วคลิกเลิกใช้งาน หลังจากผ่านไปประมาณ 1 นาที โค้ดของคุณก็จะใช้งานได้ใน Cloud Functions for Firebase

เมื่อทําให้ฟังก์ชันใช้งานได้ คุณจะเห็นวันที่และเวลาของการทําให้ใช้งานได้ที่ด้านล่างของหน้า

ให้ดูรหัสการดําเนินการ ฟังก์ชัน hoursHandler จะเรียกใช้ currentlyOpen เพื่อตัดสินว่าร้านค้าเปิดอยู่หรือไม่ และเพิ่มการตอบกลับ RBM อื่นโดยขึ้นอยู่กับเงื่อนไข

function hoursHandler(agent) {
    let responseText = 'We\'re currently closed, but we open every weekday at 9am!';
    if (currentlyOpen()) {
      responseText = 'We\'re open now!! We close at 5pm today.';
    }

    let payload = {
    "fulfillmentMessages": [
        {
          "platform": "GOOGLE_RBM",
          "rbmText": {
              "text": responseText
          }
        }
      ]
    };

    return response.status(200).json(payload);
}

บรรทัด intentMap.set('Hours', hoursHandler); จะบอกไลบรารีการดําเนินการ ว่าฟังก์ชัน hoursHandler ควรทํางานเมื่อมีการจับคู่ ""Hour&&t;; ความตั้งใจ อย่างไรก็ตาม เรายังต้องบอกให้ Dialogflow เปิดใช้การดําเนินการตามความตั้งใจของ &" Hours" ด้วย

ในการนําทางด้านซ้าย ให้คลิกความตั้งใจ แล้วเปิดความตั้งใจ"Hour&&tt; เปิดส่วน Fulfillment ที่ด้านล่างแล้วเลือก Enable webเว็บฮุค for thisตามความตั้งใจ เพื่อให้เปิดใช้ฟีเจอร์นี้

เมื่อบันทึกความตั้งใจแล้ว คุณก็ลองใช้ได้เลย ในเครื่องจําลองทางด้านขวา ให้ป้อน "เปิด openquoquo; หรือไม่ หากคลิกข้อมูลการวินิจฉัยและตรวจสอบการตอบกลับ API คุณจะเห็นการตอบกลับสําหรับการจําหน่าย โปรดทราบว่าเขตเวลาที่เซิร์ฟเวอร์ Cloud Functions for Firebase ใช้จะเป็น UTC ดังนั้นการตอบกลับจึงอาจไม่ถูกต้องสําหรับเวลาท้องถิ่นปัจจุบันของคุณ

หากเกิดข้อผิดพลาดในการดําเนินการ Dialogflow จะใช้การตอบกลับที่กําหนดไว้ในส่วนคําตอบของหน้าความตั้งใจ ซึ่งจะช่วยให้ตัวแทนกู้คืนได้อย่างสง่างาม

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

แตกข้อมูลเป็นเอนทิตี

ระยะเวลา: 12:00

ในส่วนนี้ เราจะพูดถึงวิธีแตกข้อมูลจากการค้นหาของผู้ใช้ เพื่อให้เราสามารถนัดหมายกับร้านจักรยานของเราเพื่อให้บริการหรือแก้ไขจักรยานได้

เพิ่มพารามิเตอร์ให้กับ Intent ของคุณ

พารามิเตอร์คือคําหรือวลีที่เกี่ยวข้องในการค้นหาที่ Dialogflow ดึงข้อมูลมาเพื่อให้ Agent ของคุณมีการตอบสนองที่เหมาะสม คุณจะสร้าง Intent ใหม่ด้วยพารามิเตอร์และดูวิธีรวมค่าของพารามิเตอร์นั้นไว้ในการตอบกลับของคุณ

  1. คลิก + ข้าง Intent ในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
  2. สําหรับชื่อความตั้งใจ ให้ป้อน "ทําการนัดหมาย" ที่ด้านบนของหน้า
  3. เพิ่มข้อมูลต่อไปนี้เป็นวลีการฝึก
    • reply_appointment
    • I'd like to schedule an appointment for next Thursday
    • I'd like to get my bike fixed I have a mountain bike that needs servicing
    • My bike is broken
    • Can I schedule service for 4pm tomorrow?
    • Can you fix my road bike?
    • Can I set up an appointment for noon on Friday?

Dialogflow จะตรวจหาพารามิเตอร์ที่รู้จักโดยอัตโนมัติในวลีการฝึก และสร้างพารามิเตอร์ดังกล่าวให้คุณ

ด้านล่างวลีการฝึก Dialogflow จะกรอกข้อมูลตารางพารามิเตอร์โดยอัตโนมัติพร้อมกับข้อมูลที่รวบรวม

  • พารามิเตอร์เป็นข้อมูลที่ไม่บังคับ (ไม่จําเป็น)
  • ชื่อ date และ time
  • ตรงกับประเภทระบบของระบบ @sys.date และ @sys.time**
  • ค่าของ $date และ $time
  • ไม่ใช่รายการ

การใช้ข้อมูลพารามิเตอร์

คุณใช้ค่าของพารามิเตอร์ในการตอบกลับได้ ในกรณีนี้ คุณใช้ $date และ $time ในการตอบกลับได้ โดยจะแทนที่ด้วยวันที่และเวลาที่ระบุในคําค้นหาไปยังตัวแทนของคุณ

ในคําตอบ ให้เพิ่มแท็บการรับส่งข้อความทางธุรกิจ RCS เพิ่มข้อมูลต่อไปนี้ลงในการตอบกลับแบบง่าย แล้วคลิกบันทึก

Great! I've set up your appointment for $date at $time.  See you then!

ลองใช้เลย

ต่อไปให้ค้นหา Agent ของคุณที่มี " ฉันจะได้รับการนัดหมายสําหรับ 14:00 น. ในวันพรุ่งนี้ quoquo; ใน เครื่องจําลองในแผงด้านขวา

ดูที่ด้านล่างของเอาต์พุตเครื่องจําลองที่ Dialogflow ได้ดึงข้อมูลพารามิเตอร์แล้ว "พรุ่งนี้" และ "2pm" ได้ถูกต้องจากข้อความค้นหา และแยกวิเคราะห์เป็นวันที่และเวลาอย่างถูกต้อง ลองทําแบบเดียวกันนี้จากอุปกรณ์ทดสอบ และดูว่าคําตอบมีวันที่และเวลาที่แยกวิเคราะห์อย่างถูกต้องได้อย่างไร

การทําให้พารามิเตอร์เป็นข้อมูลที่จําเป็น

ในกรณีของร้านจักรยาน เราจําเป็นต้องทราบมูลค่าของวันที่และเวลานั้น ก่อนจะกําหนดเวลาการนัดหมาย โดยค่าเริ่มต้น พารามิเตอร์ Dialogflow ทั้งหมดเป็นตัวเลือกที่ไม่บังคับ เราจําเป็นต้องทําเครื่องหมายข้างพารามิเตอร์แต่ละรายการที่ต้องการ เลือกช่องข้างพารามิเตอร์แต่ละรายการในความตั้งใจและการนัดหมาย

เมื่อพารามิเตอร์แต่ละรายการจําเป็น เราต้องสร้างข้อความแจ้งสําหรับพารามิเตอร์แต่ละรายการ ข้อความแจ้งจะขอให้ผู้ใช้ระบุค่าสําหรับพารามิเตอร์ที่ไม่ได้ระบุไว้เมื่อผู้ใช้ระบุเจตนาของตนเป็นครั้งแรก (ในกรณีนี้คือการนัดหมาย) คลิกกําหนดข้อความแจ้งเพื่อสร้างข้อความแจ้งสําหรับพารามิเตอร์ และป้อนข้อความแจ้งต่อไปนี้สําหรับแต่ละพารามิเตอร์

พารามิเตอร์ ข้อความแจ้ง
วันที่ อยากให้มาวันไหนดี
เวลา คุณสะดวกเวลาใด

หลังจากป้อนข้อความแจ้งแล้ว ให้คลิก Save

ลองใช้เลย

แตะคําแนะนําหรือนัดหมายในอุปกรณ์ แล้วพิมพ์ "ต้องการซ่อมจักรยาน" คุณได้รับคําตอบ " คุณต้องการให้วันไหนเป็นของโฆษณานั้นมาก่อน ระบุวันที่ ("พรุ่งนี้{0}quot;) แล้วคุณจะได้รับคําตอบที่ถามเวลาในวันที่ ตอบข้อนั้นแล้วคุณจะเห็นว่าการนัดหมายได้รับการตั้งค่าแล้ว

คําค้นหาที่มีข้อมูลบางอย่างในคําขอเริ่มต้น (เช่น "ฉันต้องการตั้งค่าการนัดหมายสําหรับวันพรุ่งนี้") กรอกพารามิเตอร์ที่ถูกต้อง (วันที่) ข้ามข้อความแจ้งวันที่ ("คุณต้องการระบุวันที่เมื่อใด &" และกําหนดเวลาที่ชัดเจน (" เวลาใดเหมาะกับคุณ{/4})

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

การตั้งค่า: เปิดใช้งานการดําเนินการตามคําสั่งซื้อ

ในการนําทางด้านซ้าย ให้คลิกความตั้งใจ แล้วเปิดความตั้งใจและการนัดหมาย เปิด Fulfillment แล้วเลือก Enableเว็บฮุคเว็บฮุค Intent นี้ และ Enableเว็บฮุคเว็บฮุคสําหรับการเติมช่องโฆษณาเพื่อให้ทั้ง 2 ปุ่มเปิด แล้วคลิก Save

เมื่อเปิดใช้ฟีเจอร์นี้ ทั้ง 2 รายการนี้ เมื่อมีการทริกเกอร์ Intent นี้ Dialogflow จะใช้การดําเนินการตามคําสั่งซื้อเพื่อสร้างการตอบสนองสําหรับพารามิเตอร์ที่จําเป็น หากจําเป็น และการตอบสนอง RBM สําหรับ Intent

ใช้การดําเนินการตามคําสั่งซื้อ

ในการนําทางด้านซ้ายของ Dialogflow ให้คลิกการดําเนินการตามคําสั่งซื้อเพื่อเปิดหน้าการดําเนินการ เลื่อนลงไปยังเส้น

intentMap.set('Hours', hoursHandler);

และเพิ่มบรรทัดต่อไปนี้

intentMap.set('Make Appointment', makeAppointment);

ข้อมูลนี้จะบอกไลบรารีการดําเนินการจนทําให้ฟังก์ชัน makeAppointment ควรทํางานเมื่อตรงกับ "quot; Appointment " ความตั้งใจ

จากนั้น คัดลอกโค้ดด้านล่างแล้ววางด้านล่างฟังก์ชัน currentlyOpen ฟังก์ชันทั้งสองนี้ได้แก่ getSuggestedTimes และ getSuggestedDates จะสร้างรายการชิปที่มีประโยชน์เพื่อช่วยในการตอบกลับของผู้ใช้

function getSuggestedTimes() {
  return [
        {
          "reply": {
            "text": "9 am",
            "postbackData": "9:00am"
            }
        },
        {
          "reply": {
            "text": "10 am",
            "postbackData": "10:00am"
          }
        },
        {
          "reply": {
            "text": "1 pm",
            "postbackData": "1:00pm"
          }
        },
        {
          "reply": {
            "text": "2 pm",
            "postbackData": "2:00pm"
          }
        }
      ];
}

function getSuggestedDates() {
  return [
        {
          "reply": {
            "text": "Tomorrow",
            "postbackData": "Tomorrow"
          }
        },
        {
          "reply": {
            "text": "A week from now",
            "postbackData": "A week from now"
          }
        },
        {
          "reply": {
            "text": "Two weeks from now",
            "postbackData": "Two weeks from now"
          }
        }
      ];
}

จากนั้นคัดลอกโค้ดด้านล่างด้านล่าง hoursHandler แล้วคลิกทําให้ใช้งานได้

function makeAppointment(agent) {
    // extract required parameters
    const appointmentDate = agent.parameters.date;
    const appointmentTime = agent.parameters.time;

    const gotAppointmentDate = appointmentDate.length > 0;
    const gotAppointmentTime = appointmentTime.length > 0;

    let responseText = '';
    let suggestions = [];

    if(gotAppointmentDate && gotAppointmentTime) {
      // We have all required parameters, return success message
      responseText = 'Great! I\'ve set up your appointment for ' +
          appointmentDate + ' at ' + appointmentTime + '.  See you then!';
    }
    else if(gotAppointmentDate) {
      responseText = 'What time works for you?';
      suggestions = getSuggestedTimes();
    }
    else if(gotAppointmentTime) {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }
    else {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText,
          "rbmSuggestion": suggestions
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

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

ลองใช้เลย

แตะคําแนะนําหรือนัดหมายในอุปกรณ์ แล้วพิมพ์ "ต้องการซ่อมจักรยาน" คุณจะได้รับการตอบกลับ "วันใดที่คุณอยากมาหาตัวเองในครอบครอง พร้อมด้วยคําแนะนําที่มีประโยชน์บางอย่าง: "พรุ่งนี้", "อีก 1 สัปดาห์จากนี้" และ &อีกสองสัปดาห์จากนี้" ระบุวันที่ ("พรุ่งนี้") แล้วคุณจะได้รับการตอบกลับ เป็นระยะเวลาหนึ่ง เพียงตอบกลับว่า "##39" คุณจะเห็นว่าการนัดหมาย ถูกตั้งค่าไว้แล้ว

จัดการรัฐที่มีบริบท

ระยะเวลา: 7:00

เพิ่มบริบทลงในสถานะการสนทนา

เมื่อผู้ใช้ตั้งค่าการนัดหมายเรียบร้อยแล้ว เราอาจต้องการรวบรวมข้อมูลเพิ่มเติมบางอย่างจากผู้ใช้ สมมติว่าร้านจักรยานของเรามีการนัดหมาย 2 ประเภทคือ การซ่อม หรือเพิ่มการปรับแต่ง เราต้องการทราบว่าผู้ใช้ต้องการข้อมูลใด

เรามาเริ่มกันที่การอัปเดตคําตอบสําหรับ " ทําการนัดหมาย&; ความตั้งใจที่จะถามผู้ใช้ว่าต้องการการนัดหมายประเภทใด แทนที่การตอบกลับที่สําเร็จในฟังก์ชันการดําเนินการ makeAppointment ด้วยข้อความด้านล่าง จากนั้นคลิก ทําให้ใช้งานได้

responseText = 'Great! I\'ve set up your appointment for ' +
    appointmentDate + ' at ' + appointmentTime + '.  Do you need a repair for just a tune-up?';

เราจําเป็นต้องรวบรวมความตั้งใจอื่นเพื่อรวบรวมคําตอบให้กับคําถามนี้ อย่างไรก็ตาม ความตั้งใจใหม่นี้จะตรงกันหลังจากตอบคําถามนี้แล้วเท่านั้น เราจึงกําหนดวัตถุประสงค์นี้ให้เป็น การติดตามผลเพื่อบังคับใช้

ความตั้งใจติดตามผลคือ Intent ที่สามารถจับคู่ได้หลังจากจับคู่แล้ว &;quot;parent"intent (ในกรณีนี้คือ "Make Appointment"intent) ที่ได้รับการจับคู่ คลิกที่ Intent ในการนําทางด้านซ้าย (หากเมนูถูกซ่อนอยู่ ให้คลิกเมนู ☰ ที่มุมซ้ายบน ) จากนั้นวางเมาส์เหนือ "quot;การนัดหมาย" และ "ความตั้งใจ" แล้วคลิกเพิ่มความตั้งใจติดตามผล ซึ่งจะปรากฏทางด้านขวาของชื่อ Intent ดังนี้

จากนั้นคลิกกําหนดเองจากเมนูแบบเลื่อนลง

Dialogflow ตั้งชื่อ Intent ติดตามผล " ทําการนัดหมาย - กําหนดเอง" โดยอัตโนมัติ และลูกศรแสดงความสัมพันธ์ระหว่าง Intent

ระบบจะจับคู่ Intent ติดตามผลได้ก็ต่อเมื่อมีการจับคู่ Intent หลักแล้ว เนื่องจาก Intent นี้จะจับคู่กันเฉพาะหลัง "ทําการนัดหมาย" เราสามารถสันนิษฐานได้ว่าผู้ใช้เพิ่งถูกถามคําถาม

ในการตอบคําถามนี้ เราจะต้องกําหนดเอนทิตีบางอย่างก่อน

การสร้างเอนทิตีแรกของคุณ

Dialogflow ให้คุณกําหนดเอนทิตีของนักพัฒนาแอปซึ่งทํางานคล้ายกับเอนทิตีของระบบ Dialogflow&#39 มาเริ่มโดยการสร้างประเภทเอนทิตีกัน เนื่องจากเราต้องการให้ผู้ใช้เลือกประเภทการนัดหมายที่ต้องการทํากับร้านค้าได้ เราจึงจะเรียกเอนทิตีประเภท AppointmentType ว่า เราจะเพิ่มเอนทิตี 2 รายการในเอนทิตี AppointmentType ประเภทสําหรับการนัดหมาย 2 ประเภทที่แตกต่างกัน ได้แก่ service และ fix

วิธีสร้างประเภทเอนทิตี

  1. คลิก + ถัดจากเอนทิตีในการนําทางด้านซ้าย
  2. สําหรับชื่อประเภทเอนทิตี ให้ป้อน "AppointmentType"
  3. คลิกช่องข้อความแล้วเพิ่มรายการต่อไปนี้
    • บริการ
    • แก้ไข
  4. เมื่อคุณป้อนข้อความ การกด Tab จะเลื่อนเคอร์เซอร์ไปที่ช่องคําพ้องความหมาย เพิ่มคําพ้องความหมายต่อไปนี้สําหรับแต่ละรายการ โปรดเพิ่มแต่ละคําทีละรายการ แทนการคัดลอกและวางทั้งสตริง
ตั๋วเข้าชม คำพ้อง
บริการ
  • บริการ
  • ยกเครื่อง
  • การซ่อมบำรุง
  • การปรับแต่ง
  • ปรับแต่ง
แก้ไข
  • แก้ไข
  • การซ่อม
  • Mend
  • เสีย
  • ยางแบน
  • คงที่
  1. คลิกบันทึก

เอนทิตีแต่ละประเภทต้องมีสิ่งต่อไปนี้

  • ชื่อที่กําหนดหมวดหมู่ ("AppointmentType")
  • อย่างน้อย 1 รายการ ("service", "fix")
  • คําพ้องความหมายอย่างน้อย 1 คํา (&"การดูแลรักษา","การเสริมเสียง ฯลฯ)

Dialogflow จัดการเรื่องง่ายๆ อย่างพหูพจน์และการใช้อักษรตัวพิมพ์ใหญ่ แต่อย่าลืมเพิ่มคําพ้องความหมายทั้งหมดที่เป็นไปได้ ยิ่งคุณเพิ่มเท่าไร ตัวแทนของคุณจะสามารถ ระบุเอนทิตีได้ดียิ่งขึ้น

การเพิ่มเอนทิตีใหม่

ในตอนนี้เราได้กําหนดประเภทเอนทิตีสําหรับการนัดหมายแล้ว เรานําไปใช้ในวลีการฝึกอบรมของ" ทําการนัดหมาย - ความตั้งใจที่กําหนดเอง:

  1. คลิกเจตจํานงในการนําทางด้านซ้าย แล้วคลิกที่ลูกศรถัดจาก "สร้างการนัดหมาย" ความตั้งใจที่จะเปิดเผยความตั้งใจติดตามผล คลิก "นัดหมาย - ความตั้งใจที่กําหนดเอง&ที่กําหนดเอง
  2. เพิ่มข้อมูลต่อไปนี้เป็นวลีการฝึกอบรม

    • คุณให้บริการจักรยานของฉันได้ไหม
    • ฉันต้องการซ่อม

  3. คุณควรเห็นประเภทเอนทิตีการนัดหมายที่มีคําอธิบายประกอบโดยอัตโนมัติในวลีการฝึกที่คุณป้อน การทําเช่นนี้จะเพิ่มพารามิเตอร์ AppointmentType ลงในตาราง ซึ่งอยู่ใต้ส่วนวลีการฝึก คลิกช่องทําเครื่องหมายเพื่อทําเครื่องหมายพารามิเตอร์นี้เป็น REQUIRED

  4. คลิกกําหนดข้อความแจ้งแล้วป้อน "เราให้บริการหรือซ่อมจักรยานของคุณได้ จะเอาอันไหนมาบอกล่ะ

  5. ในคําตอบ ให้เปลี่ยนคําตอบเป็น "เอาล่ะ เราจะกําหนดเวลา $AppointmentType." แล้วคลิกบันทึก

ลองใช้เลย

แตะคําแนะนําหรือนัดหมายในอุปกรณ์ แล้วพิมพ์ "ต้องการซ่อมจักรยาน" คุณจะได้รับการตอบกลับ "วันใดที่คุณอยากมาหาตัวเองในครอบครอง พร้อมด้วยคําแนะนําที่มีประโยชน์บางอย่าง: "พรุ่งนี้", "อีก 1 สัปดาห์จากนี้" และ &อีกสองสัปดาห์จากนี้" ระบุวันที่ ("วันพรุ่งนี้") แล้วคุณจะได้รับการตอบกลับ ถามเวลาในวันที่

เลือกเวลาและคุณจะเห็นคําตอบใหม่ที่คุณสร้างขึ้น เพื่อถามว่านี่เป็นบริการหรือการปรับแต่ง

ต่อไป ให้ป้อน "ฉันต้องมีการซ่อม" คุณควรเห็นคําตอบ "เอาล่ะ เราจะกําหนดเวลา แก้ไข&" ซึ่งบ่งชี้ว่า Dialogflow ดึงข้อมูล AppointmentType ที่ถูกต้องเป็นเอนทิตี

ขณะนี้ การตอบกลับสําหรับ Intent นี้ ("เอาละ เราจะกําหนดเวลาการแก้ไขปัญหา") ถือว่าไม่มีประโยชน์ และจะดีมากหากการตอบกลับยืนยันวันและเวลาที่กําหนดเวลาการนัดหมายไว้ ในการทําเช่นนั้น เราต้องมีวันที่และเวลา แต่พารามิเตอร์วันที่และเวลาจะปรากฏเฉพาะใน "ทําการนัดหมาย&quot ความตั้งใจ และไม่อยู่ใน "ทําการนัดหมาย - ความตั้งใจ&quot ที่กําหนดเอง

ความตั้งใจและบริบท

หากต้องการตอบกลับด้วยพารามิเตอร์ที่รวบรวมจากความตั้งใจ "ทําการนัดหมาย" คุณต้องรู้วิธีการทํางานของความตั้งใจติดตามผล ความตั้งใจติดตามผลจะใช้บริบทในการติดตาม ว่ามีการเรียกใช้ Intent ระดับบนสุดหรือไม่ หากตรวจสอบความตั้งใจใน "การนัดหมาย" คุณจะเห็น "ทําให้การติดตามผล&การนัดหมายเป็นบริบทเอาต์พุตโดยมีหมายเลข 2 นําหน้า ดังนี้

หลังจากจับคู่ "Make Appointment" ความตั้งใจแล้ว Dialogflow จะแนบบริบท "MakeAppointment-trackingup" ไปยังการสนทนาเป็นเวลา 2 รอบ ดังนั้นเมื่อผู้ใช้ตอบคําถาม ("ต้องการการซ่อมหรือเพียงแค่ปรับเปลี่ยน quot;) บริบท"MakeAppointment-trackingup" ทํางานอยู่ ระบบจะให้ความสําคัญกับ Intent ที่มีบริบทอินพุตเหมือนกันเมื่อ Dialogflow ตรงกับ Intent

คลิกความตั้งใจในการนําทางด้านซ้าย แล้วคลิก&"MakeAppointment - custom" Intent

คุณจะเห็นได้ว่าความตั้งใจมีบริบทการป้อนข้อมูล ("MakeAppointment- tracking") เดียวกับบริบทเอาต์พุตของ "Make Appointment" ด้วยเหตุนี้ "MakeAppointment - custom" จะจับคู่หลังจาก "Make Appointment" ความตั้งใจตรงกันเท่านั้น

บริบทและพารามิเตอร์

บริบทจะจัดเก็บค่าพารามิเตอร์ต่างๆ ซึ่งหมายความว่าคุณสามารถเข้าถึงค่าของพารามิเตอร์ที่ระบุไว้ใน "Make Appointment" ความตั้งใจใน Intent อื่นๆ เช่น "MakeAppointment - custom"

เพิ่มการตอบกลับต่อไปนี้ให้กับ "MakeAppointment - custom" Intent และคลิก Save: "เอาล่ะ เราจะกําหนดเวลา $AppointmentType, #MakeAppointment- trackingup.date, ที่ #MakeAppointment-trackingup.time แล้วเจอกัน!"

ตอนนี้คุณค้นหา Agent อีกครั้งและรับคําตอบที่เหมาะสมได้แล้ว ขั้นแรก ให้ป้อน"ฉันกําหนดเวลานัดหมายเพื่อให้ให้บริการจักรยานได้ในเวลา 11.00 น. พรุ่งนี้เท่านั้น{/6} จากนั้นตอบคําถามด้วย "ฉันต้องมีการซ่อม"

ในการตอบกลับการยืนยันการนัดหมาย คุณจะเห็นว่ามีการดึงค่าพารามิเตอร์วันที่และเวลาจากบริบทแล้ว

การปรับปรุงรูปแบบคําตอบ

ระยะเวลา: 5:00

ใช้การดําเนินการตามคําสั่งซื้อเพื่อจัดรูปแบบวันที่และเวลา

อย่างที่คุณอาจทราบอยู่แล้ว วันที่และเวลาที่แสดงในข้อความว่าประสบความสําเร็จนั้นไม่ใช่เรื่องง่ายมาก ในการแก้ไขปัญหานี้ เราจําเป็นต้องใช้การดําเนินการตามคําสั่งซื้ออีกครั้งเพื่อให้เราสามารถใช้ JavaScript เพื่อจัดรูปแบบพารามิเตอร์วันที่และเวลาในลักษณะที่ผู้ใช้อ่านได้ง่าย

ไปที่&การเสนอราคา การนัดหมาย - ความตั้งใจที่กําหนดเอง โดยคลิกความตั้งใจในการนําทางด้านซ้าย จากนั้นคลิกที่ "สร้างการนัดหมาย - กําหนดเอง" ความตั้งใจ เลื่อนลงไปที่ด้านล่างของหน้า แล้วสลับตัวเลือกเปิดใช้การโทรจากเว็บฮุคเพื่อความตั้งใจนี้ จากนั้นคลิกบันทึก

ไปที่การจําหน่ายโดยคลิกลิงก์ Fulfillment ในแถบนําทางด้านซ้าย คัดลอกโค้ดด้านล่างแล้ววางลงในฟังก์ชัน makeAppointment

function makeAppointmentFollowUp(agent) {
    let context = agent.getContext('makeappointment-followup');

    // extract required parameters
    const appointmentDate = new Date(context.parameters.date);
    const appointmentTime = new Date(context.parameters.time);
    const appointmentType = agent.parameters.AppointmentType;

    // format date and time to be human-readable
    const dateAsString = appointmentDate.toLocaleDateString('en-US',
        { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
    const timeAsString = appointmentTime.toLocaleString('en-US',
        { hour: 'numeric', minute: 'numeric', hour12: true });

    // compose response for user
    let responseText = 'Okay, we'll schedule a ' + appointmentType + ', ' + dateAsString +
        ', at ' + timeAsString + '.  We'll see you then.';

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

ใต้ฟังก์ชันนี้ ให้ค้นหาบรรทัด intentMap.set('Make appointment', makeAppointment); แล้วเพิ่ม intentMap.set('Make appointment - custom', makeAppointmentFollowUp); เพื่อให้ระบบเรียกใช้ฟังก์ชันการติดตามก่อนหน้านี้เมื่อมีการเรียกใช้ฟังก์ชันการติดตามผล

ลองดูโค้ด makeAppointmentFollowUp และดูว่ามีการดึงข้อมูลพารามิเตอร์จากทั้งบริบทขาเข้าและ Intent นี้อย่างไร ก่อนที่จะสร้าง responseText โค้ดจะจัดรูปแบบวันที่และเวลาให้มนุษย์อ่านได้

ลองใช้เลย

แตะคําแนะนําหรือนัดหมายในอุปกรณ์ แล้วพิมพ์ "ต้องการซ่อมจักรยาน" คุณจะได้รับการตอบกลับ "วันใดที่คุณอยากมาหาตัวเองในครอบครอง พร้อมด้วยคําแนะนําที่มีประโยชน์บางอย่าง: "พรุ่งนี้", "อีก 1 สัปดาห์จากนี้" และ &อีกสองสัปดาห์จากนี้" ระบุวันที่ ("วันพรุ่งนี้") แล้วคุณจะได้รับการตอบกลับ ถามเวลาในวันที่

เลือกเวลาและคุณจะเห็นคําตอบใหม่ที่คุณสร้างขึ้น เพื่อถามว่านี่เป็นบริการหรือการปรับแต่ง

ต่อไป ให้ป้อน "ฉันต้องมีการซ่อม" คุณควรเห็นคําตอบที่ยืนยันการนัดหมายพร้อมกับประเภทการนัดหมาย วันที่และเวลาในรูปแบบที่อ่านได้

เสร็จแล้ว

ระยะเวลา: 1:00

เยี่ยมไปเลย

คุณได้ผ่านทุกขั้นตอนการสร้าง Agent ของ RBM ด้วย Dialogflow แล้ว

ขอให้สนุกกับการพัฒนาสําหรับแพลตฟอร์มใหม่ที่น่าตื่นเต้นนี้