Dialogflow CX: สร้างตัวแทนเสมือนสำหรับร้านค้าปลีก

1. ก่อนเริ่มต้น

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีสร้างแชทบ็อตค้าปลีกด้วย Dialogflow CX ซึ่งเป็นแพลตฟอร์ม AI แบบสนทนา (CAIP) สำหรับการสร้าง UI แบบสนทนา Dialogflow CX สามารถใช้ตัวแทนเสมือน เช่น Chatbot, บอสวอยซ์, เกตเวย์โทรศัพท์ และรองรับหลายช่องทางในภาษาต่างๆ กว่า 50 ภาษา

Codelab นี้จะแนะนำวิธีสร้างแชทบอทบนเว็บไซต์สําหรับธุรกิจค้าปลีก ธุรกิจสมมติที่เราสร้างแชทบ็อตให้ชื่อ G-Records G-Records เป็นค่ายเพลงร็อคที่ตั้งอยู่ในแคลิฟอร์เนีย ค่ายเพลงนี้มีวงร็อค 4 วง ได้แก่ Alice Googler, G's N' Roses, The Goo Fighters และ The Google Dolls G-Records ขายสินค้าของวงให้กับแฟนเพลงร็อคทุกคน

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

ผลลัพธ์สุดท้าย

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

คุณจะได้เรียนรู้ประโยชน์ของ Dialogflow CX เมื่อเทียบกับ Dialogflow ES จากการทําจริง ซึ่งประกอบด้วยแนวคิดต่อไปนี้

  • วิธีสร้างตัวแทนเสมือน Dialogflow CX ภายใน Google Cloud
  • ดูวิธีสร้างโฟลว์
  • ดูวิธีสร้างเอนทิตี
  • ดูวิธีสร้าง Intent
  • ดูวิธีสร้างหน้าและหน้าการเปลี่ยนด้วยเครื่องจัดการสถานะ
  • ดูวิธีเปลี่ยนหน้าเว็บด้วยเส้นทางความตั้งใจ
  • ดูวิธีเปลี่ยนหน้าด้วยพารามิเตอร์และเส้นทางกำหนดเงื่อนไข
  • ดูวิธีแสดงผลคำตอบแบบมีเงื่อนไขด้วยฟังก์ชันของระบบ
  • ดูวิธีสร้างข้อความสำรอง
  • ดูวิธีใช้เครื่องจำลอง
  • ดูวิธีสร้างเคสทดสอบและการครอบคลุมการทดสอบ

การออกแบบตัวแทน Dialogflow CX เวอร์ชันสุดท้ายจะมีลักษณะดังนี้

ผลขั้นสุดท้าย

สิ่งที่คุณต้องมี

  • คุณจะต้องมีข้อมูลประจำตัวของ Google / อีเมล Gmail เพื่อสร้างตัวแทน Dialogflow CX
  • สิทธิ์เข้าถึง Google Cloud

2. การตั้งค่าสภาพแวดล้อม

สร้างโปรเจ็กต์ Google Cloud

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

เมื่อสร้างโปรเจ็กต์ใหม่ คุณจะต้องป้อนชื่อโปรเจ็กต์ และจะต้องลิงก์กับบัญชีการเรียกเก็บเงินและองค์กรที่มีอยู่

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

สร้างโปรเจ็กต์ใหม่

เปิดใช้ Dialogflow API

หากต้องการใช้ Dialogflow คุณจะต้องเปิดใช้ Dialogflow API สําหรับโปรเจ็กต์

  1. เลือกโปรเจ็กต์ที่ต้องการเปิดใช้ API แล้วคลิกต่อไป
  2. ยุบเมนู API และบริการ แล้วคลิกสร้างข้อมูลเข้าสู่ระบบ
  3. คลิกข้อมูลแอปพลิเคชัน
  4. ตอบว่าไม่ ฉันไม่ได้ใช้เนื่องจากตอนนี้คุณไม่ได้ใช้ Kubernetes Engine, App Engine หรือ Cloud Functions
  5. คลิกเสร็จสิ้น

ตั้งค่าข้อมูลเข้าสู่ระบบ

สร้างตัวแทน Dialogflow CX ใหม่

หากต้องการสร้าง Agent ของ Dialogflow CX ใหม่ ให้เปิด Dialogflow CX Console ก่อน โดยทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ Google Cloud ที่สร้างไว้ก่อนหน้านี้
  2. คลิกสร้างตัวแทน

กรอกแบบฟอร์มสําหรับการตั้งค่าตัวแทนพื้นฐาน

  • คุณเลือกชื่อที่แสดงใดก็ได้
  • เลือกตำแหน่งเป็น us-central1
  • เลือกเขตเวลาที่ต้องการ
  • เลือก en - อังกฤษ เป็นภาษาเริ่มต้น

คลิกสร้าง

สร้าง Agent

ทุกอย่างพร้อมแล้ว ในที่สุดเราก็เริ่มสร้างตัวแทนเสมือนได้

3. ขั้นตอน

บทสนทนาที่ซับซ้อนมักจะเกี่ยวข้องกับหัวข้อการสนทนาหลายหัวข้อ ในกรณีของแชทบ็อตที่เรากำลังสร้างให้กับ G-Records เพื่อขายสินค้าของวงดนตรี เราจะมีบทสนทนาเกี่ยวกับแคตตาล็อกผลิตภัณฑ์ การชำระเงิน สถานะการสั่งซื้อ และคำถามเกี่ยวกับฝ่ายดูแลลูกค้า เราอาจแยกหัวข้อการสนทนาเหล่านี้ออกเป็นขั้นตอน

ขั้นตอนการค้าปลีก

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

ขั้นตอนเป็นแนวคิดใหม่ของ Dialogflow CX Dialogflow Essentials มีแนวคิด Mega Agent ซึ่งคล้ายกับ Flow แต่คุณจะใช้โฟลว์บ่อยกว่ามาก

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

มาสร้างขั้นตอนกันดีกว่า

การสร้างโฟลว์

  1. ใน Dialogflow CX ให้คลิกไอคอน + > สร้างโฟลว์
  2. ระบุชื่อ: Catalog แล้วกด Enter

สร้างโฟลว์

สร้างแคตตาล็อกขั้นตอนแรกแล้ว ตอนนี้ให้สร้างโฟลว์อื่นๆ ดังนี้

  • Order Process
  • My Order
  • Customer Care

ขั้นตอน

เราจะตั้งค่าเครื่องจัดการสถานะหน้าเว็บในภายหลังในห้องทดลองนี้ ซึ่งจะทำให้มั่นใจว่าท้ายที่สุดแล้วการแสดงภาพจะมีลักษณะเช่นนี้

ขั้นตอน

เครื่องมือจำลอง

ทางด้านขวาของ Dialogflow CX Console คุณสามารถทดสอบตัวแทนเสมือนด้วยเครื่องจำลองในตัว คุณสามารถทดสอบการสนทนาตั้งแต่ต้นการสนทนาหรือจากขั้นตอนใดขั้นตอนหนึ่งก็ได้

  1. คลิกปุ่มทดสอบตัวแทนที่ด้านขวาบนของหน้าจอ
  2. ในช่อง "พูดคุยกับตัวแทน" ให้เขียนว่า Hello ตัวแทนเสมือนจะตอบกลับด้วยข้อความต้อนรับเริ่มต้นว่า สวัสดี มีอะไรให้เราช่วยบ้าง

เครื่องมือจำลอง

มาแก้ไขข้อความต้อนรับเริ่มต้นนี้กัน

ขั้นตอนการเริ่มต้นเริ่มต้น

มาเริ่มกันด้วยการสร้างเส้นทาง Intent ที่จะเริ่มทํางานเมื่อคุณทักทายตัวแทนเสมือน

  1. ในแถบด้านข้างสร้าง > โฟลว์ทางด้านซ้าย ให้คลิกโฟลว์เริ่มต้นเริ่มต้น และเลือกโหนดแผนผังเริ่มต้น

ซึ่งจะเปิดหน้าเริ่มต้น ระบบจะเลือกหน้าเริ่มต้นโดยอัตโนมัติในส่วนแถบด้านข้าง สร้าง > หน้าเว็บ

  1. ในส่วนเริ่ม > เส้นทาง ให้คลิกIntent ต้อนรับเริ่มต้น

Intent จะจัดหมวดหมู่ความตั้งใจของผู้ใช้ปลายทางสำหรับ 1 เทิร์ตการสนทนา ใน Dialogflow CX เจตนาอาจเป็นส่วนหนึ่งของตัวแฮนเดิลสถานะเพื่อกำหนดเส้นทางหน้าเว็บที่ใช้งานอยู่หรือการดำเนินการสำเร็จรูปถัดไป

  1. นำรายการสิ่งที่ตัวแทนพูดทั้งหมดออก แล้วเพิ่มข้อความใหม่นี้

Welcome, I am the virtual agent of G-Records, a fictional rock label. You can order artists merchandise, ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?

เราจำเป็นต้องมีปุ่มตอบด่วน / ชิปคำแนะนำเพื่อปรับปรุงการสนทนาด้วย

  1. คลิกเพิ่มตัวเลือก > เพย์โหลดที่กำหนดเอง แล้วใช้ข้อมูลโค้ดด้านล่าง
  2. ใช้ข้อมูลโค้ดด้านล่างเป็นเพย์โหลดที่กำหนดเอง แล้วกดบันทึก

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

{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Which artists?"
            },
            {
              "text": "Which products?"
            },
            {
              "text": "About my order..."
            }
          ]
        }
      ]
    ]
  }

จุดประสงค์เริ่มต้นในการต้อนรับ

  1. ไปทดสอบ Intent ต้อนรับในเครื่องจำลองได้เลย

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

  1. ในแถบด้านข้างทางซ้าย ให้คลิกจัดการ > การผสานรวม
  2. เลือก Dialogflow Messenger แล้วคลิกเชื่อมต่อ
  3. คลิกเปิดใช้ในป๊อปอัป

เปิดใช้การผสานรวม

ป๊อปอัปอีกรายการจะปรากฏขึ้น ซึ่งคราวนี้จะมีโค้ด JavaScript สำหรับการผสานรวมที่คุณสามารถวางในเว็บไซต์เพื่อผสานรวมคอมโพเนนต์ Dialogflow Messenger ในเว็บไซต์ เนื่องจากเรายังไม่มีเว็บไซต์ เราจะทดสอบตัวแทนเสมือนในเครื่องมือโดยตรง

ลองใช้ Dialogflow Messenger เลย

  1. คลิกลิงก์ลองใช้เลย
  2. คลิกไอคอนแชทบ็อตที่ด้านขวาล่างเพื่อเปิดหน้าต่างแชท เขียน Hello เพื่อเริ่มการสนทนา

ลองใช้ Dialogflow Messenger เลย

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

4. ประเภทบุคคล

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

มาเริ่มกันด้วยการเตรียมเอนทิตีที่กำหนดเองทั้งหมดก่อนที่จะออกแบบหน้าเว็บในขั้นตอนต่างๆ เราจะสร้างเอนทิตีต่อไปนี้

รายการของ Dialogflow

การสร้างเอนทิตี

มาสร้างเอนทิตีศิลปินกัน

  1. คลิกจัดการ > ประเภทเอนทิตี
  2. คลิก + สร้าง
  • ชื่อที่แสดง: Artist
  • เอนทิตี:
  • The Google Dolls (ที่มีคำพ้องความหมาย: Google Dolls)
  • The Goo Fighters (ที่มีคำพ้องความหมาย: Goo Fighters)
  • G's N' Roses (ที่มีคำพ้องความหมาย: Gs and Roses)
  • Alice Googler
  • คลิกตัวเลือกขั้นสูงและเลือกการจับคู่ Fuzzy (หากคุณสะกดชื่อวงไม่ถูกต้อง ระบบอาจยังคงจับคู่กับเอนทิตีที่ถูกต้อง)
  • ในตัวเลือกขั้นสูง ให้เลือกปกปิดในบันทึกด้วย (หากคุณสะกดชื่อวงผิด ระบบจะแก้ไขชื่อในบันทึก)
  1. คลิกบันทึก

นอกจากนี้ เรายังต้องการเอนทิตีสำหรับสินค้าสินค้าด้วย

  1. คลิกจัดการ > ประเภทเอนทิตี
  2. คลิก + สร้าง
  • ชื่อที่แสดง: Merch
  • เอนทิตี
  • T-shirt
  • Longsleeve (ที่มีคำพ้องความหมาย: Longsleeve shirt)
  • Tour Movie
  • Digital Album (มีคำพ้องความหมาย: MP3 Album, MP3)
  • CD (มีคำพ้องความหมาย Disc, Physical CD)
  1. คลิกบันทึก

นอกจากนี้ เรายังต้องการเอนทิตีสำหรับอัลบั้มด้วย

  1. คลิกจัดการ > ประเภทเอนทิตี
  2. คลิก + สร้าง
  • ชื่อที่แสดง: Album
  • เอนทิตี:
  • Live
  • Greatest Hits (ที่มีคำพ้องความหมาย: Hits)
  1. คลิกบันทึก

นอกจากนี้ เราจะต้องมีเอนทิตีสำหรับขนาดเสื้อผ้าด้วย

  1. คลิกจัดการ > ประเภทเอนทิตี
  2. คลิก + สร้าง
  • ชื่อที่แสดง: ShirtSize
  • เอนทิตี:
  • XS (ที่มีคำพ้องความหมาย: Extra Small)
  • S (ที่มีคำพ้องความหมาย: Small)
  • M (ที่มีคำพ้องความหมาย: Medium)
  • L (ที่มีคำพ้องความหมาย: Large)
  • XL (ที่มีคำพ้องความหมาย: Extra Large)
  • 2XL (ที่มีคำพ้องความหมาย: Extra Extra Large)
  • 3XL
  1. คลิกบันทึก

และเอนทิตีสำหรับหมายเลขคำสั่งซื้อ ซึ่งปกติแล้วจะเป็นอักขระที่เป็นตัวอักษรและตัวเลขคละกัน 4 ตัวและตัวเลข 3 ตัว (เช่น ABCD123)

  1. คลิกจัดการ > ประเภทเอนทิตี
  2. คลิก + สร้าง
  • ชื่อที่แสดง: OrderNumber
  • เอนทิตีนิพจน์ทั่วไป
  • เอนทิตี: [A-Z]{4}[0-9]{3}
  1. คลิกบันทึก

การกำหนดค่าเอนทิตีควรมีลักษณะคล้ายกับด้านล่างนี้

@ศิลปิน: @Artist ประเภทเอนทิตี

@Merch: @ประเภทเอนทิตีของ Merch

@อัลบั้ม: ประเภทเอนทิตี @Album

@เสื้อขนาด: ประเภทเอนทิตี @ShirtSize

@OrderNumber: ประเภทเอนทิตี @OrderNumber

เมื่อเตรียมเอนทิตีที่กำหนดเองแล้ว เราจะเตรียม Intent ได้ มาทําการทดสอบต่อกันเลย

5. Intent

Intent จะจัดหมวดหมู่ความตั้งใจของผู้ใช้ปลายทางสำหรับการสนทนา 1 เทิร์น การดำเนินการเหล่านี้ได้รับการลดความซับซ้อนอย่างมากใน Dialogflow CX และไม่ใช่องค์ประกอบพื้นฐานในการควบคุมแบบการสนทนาอีกต่อไป Dialogflow CX ใช้ Intent เพื่อจับคู่กับสิ่งที่ผู้ใช้พูดเท่านั้น ใน Dialogflow ES คุณต้องเชื่อมโยงทุกอย่างกับ Intent (พารามิเตอร์ เหตุการณ์ การตอบสนอง ฯลฯ) Intent ใน Dialogflow CX มีเฉพาะวลีที่ใช้ฝึกเท่านั้น จึงนํามาใช้ซ้ำได้ การดำเนินการนี้ไม่ได้ควบคุมการสนทนาแล้ว ดังนั้น กระบวนการสร้าง Intent จะตรงไปตรงมาดังนี้

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

การสร้าง Intent

มาเริ่มกันด้วยการเตรียม Intent ทั้งหมดก่อนที่จะออกแบบหน้าเว็บเป็นขั้นตอน

  1. คลิกจัดการ > ความตั้งใจ
  2. คลิก + สร้าง

ใช้รายละเอียดต่อไปนี้

  • ชื่อที่แสดง redirect.artists.overview
  • คำอธิบาย Artists overview: The bands supported by the label

Intent ใหม่

เลื่อนลงและสร้างวลีการฝึกอบรมต่อไปนี้

  • Which bands are signed?
  • Which bands
  • Which artists
  • Which artists are part of the record label
  • Who is part of the label
  • From which bands can I buy merchandise
  • Band merchandise
  • Which music do you have?
  • I would like to know who are signed to the label
  • Who are supported by the label
  • From who can I buy shirts
  • What music can I order
  • Can I get an overview of all the artists

วลีการฝึก

  1. คลิกบันทึก
  1. มาสร้าง Intent อื่นๆ กันต่อ ใช้จินตนาการของคุณเองเพื่อสร้างวลีฝึกหัดเพิ่มเติม แนวทางปฏิบัติแนะนำคือควรมีวลีที่ใช้ฝึกอย่างน้อย 10 วลีต่อความตั้งใจ 1 รายการเพื่อให้ครอบคลุมวิธีที่ผู้ใช้อาจเรียกใช้ความตั้งใจนั้น สำหรับ Lab นี้ การมีน้อยกว่านี้ก็น่าจะดีกว่าเช่นกัน

สิ่งที่ควรตรวจสอบมีดังนี้

  • โปรดทราบว่าขณะที่คุณป้อนวลีสำหรับการฝึก Dialogflow CX จะกำกับเนื้อหาของเอนทิตีโดยอัตโนมัติ หากไม่เป็นเช่นนั้น คุณอาจต้องอัปเดตเอนทิตี (โดยเพิ่มคำพ้องความหมาย) หรือใส่คำอธิบายประกอบในวลีการฝึกด้วยตนเอง
  • วลีการฝึกที่สั้นลง: ระบบ NLU ของ Dialogflow สามารถใช้กับวลีการฝึกที่สั้นลงได้ด้วย และเราได้แสดงตัวอย่าง 2 รายการไว้ที่นี่
  • การฝึกมากเกินไป: วลีที่ใช้ฝึก Intent มากเกินไปอาจทําให้ระบบฝึกมากเกินไปและได้ผลลัพธ์ที่ไม่ต้องการ แนวทางปฏิบัติแนะนำคือใช้การทดสอบแบบซ้ำและแบบเพิ่ม และเพิ่มวลีสำหรับการฝึกในกรณีที่ไม่มีความตั้งใจที่ตรงกัน

ชื่อที่แสดง

ข้อความการฝึกอบรม

redirect.product.overview

"Which products do you sell?", "What merchandise items do you have?", "What are you selling?", "What are the items?", "Which products?" "What merchandise?", "Please tell me what you have"

confirm.artists.overview

"Yeah, let me buy merchandise", "Yes, I want to purchase something", "Yes, I would like to order merchandise from Alice Googler" (หมายเหตุ: Googler ชื่อ Alice ควรได้รับการจดจำในฐานะเอนทิตี @Artist) "Ok, let's buy stuff."

redirect.price

"How much does a t-shirt cost?", "What's the price for the tour movie?", "The album is how much?", "I want to know the price of a longsleeve shirt", "What's the price difference?", "What does each product costs?", "What does it cost?", "What is the price?"

redirect.product

"Tour movie", "I am interested in a t-shirt", "Can I buy a digital album?", "I want the CD", "I want to buy something", "Can I purchase a record?", "I want to buy a t-shirt size M of The Google Dolls", "Can I purchase the Alice Googler digital album?"

redirect.product.of.artist

"Yeah, let's shop", "Give me merch of Alice Googler", "Shirts of The Google Dolls that would be nice.", "Yes", "I want The Goo Fighters stuff", "Yes, I want to order merchandise", "Yep, give me items of G's N' Roses", "Go for it", "Anything Alice Googler", "I am a G's N' Roses fan!", "Google Dolls", "Yes of The Google Dolls"

redirect.shirts

"Shirts", "I want to buy shirts", "I am interested in shirts", "I want a shirt", "Shirts of G's N' Roses please", "Give me shirts of the Google Dolls", "I want to buy shirts of Alice Googler"

redirect.music

"Music", "I want to buy music", "I am interested in music", "Give me music of the Goo Fighters", "Music of Goo Fighters please", "Interested in buying the Alice Googler album", "Purchase Alice Googler music"

redirect.album

"Hits", "Live Album", "I want the Greatest Hits Digital Album", "Give me the Greatest Hits CD", "Hits on MP3"

redirect.shirt.size

"XS", "I have M", "I want Large", "My size is 3XL", "Extra Large is the size"

redirect.my.order

"About my order", "I have a question about my order", "My order is ABCD123, I have a question about my order."

status

redirect.my.order.status

redirect.my.order.canceled

"I want to cancel my order", "I want to cancel order ABCD123", "Please cancel order ABCD123", "Undo my order", "Stop my order", "Cancel"

redirect.shipping.info

"How long will it take?", "How long is shipping?", "How long does shipping take?", "When will I receive it?"

redirect.refund.info

"I want a refund.", "Can I get a refund", "I want to return the CD", "I want to return my t-shirt"

redirect.swapping.info

"I want to swap my item", "Can I change my t-shirt for a larger size?", "Can I change my product?", "I want to swap the CD"

redirect.order.process

"I want to buy a t-shirt of the Google Dolls, size S", "Let me buy the digital CD of Alice Googler", "Get me the tour movie of G's N' Roses", "Buy a longsleeve shirt of The Goo Fighters", "Purchase the Alice Googler t-shirt", "Please order me the Google Dolls CD"

confirm.proceed.order

"Yes", "Yes, please continue", "Yes order", "I want to order", "Yeah", "Yep", "I confirm", "Agree", "Go ahead", "Order", "Buy it", "Purchase", "Okay"

decline.proceed.order

"No", "I rather not", "I don't want it anymore", "Don't order", "Stop", "Not anymore", "Nope", "Go back", "Reset", "Decline", "I don't need it"

redirect.home

"Go back", "Home", "Help", "What else can I ask", "Restart", "Can you tell me what I can order?", "What questions can I ask", "I need help", "Advice please", "Hi", "Hello", "Good day!"

redirect.end

"No that's it, goodbye", "Bye", "Cheers", "End", "That's it", "No more questions", "Exit", "Have a good day", "End Call", "Close"

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

6. หน้าเว็บและตัวแฮนเดิลสถานะ

การสนทนา Dialogflow CX (เซสชัน) สามารถอธิบายและแสดงเป็นภาพเป็นสถานะแบบจำกัด ลองดูเครื่องจำหน่ายสินค้าแบบหยอดเหรียญเป็นตัวอย่าง ซึ่งอาจนำไปสร้างเป็นเครื่องจำหน่ายสินค้าแบบไร้ขีดจำกัด โมเดลนี้มีสถานะต่างๆ ดังนี้ รอเหรียญ เลือกลูกอม มอบลูกอม และเมื่อมีชุดอินพุต ระบบจะย้ายไปมาระหว่างสถานะเหล่านั้น เช่น การใส่เหรียญจะย้ายเครื่องจำหน่ายสินค้าอัตโนมัติจาก "รอเหรียญ" ไปเป็น "เลือก Candy" หน้าเป็นวิธีที่เราสามารถจำลองสถานะเหล่านี้สำหรับตัวแทนเสมือนของ Dialogflow CX

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

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

หน้าเว็บมีการตอบสนอง (กล่องโต้ตอบแบบคงที่และ/หรือ Webhook), พารามิเตอร์ และตัวแฮนเดิลสถานะ การควบคุมการสนทนาเกิดขึ้นผ่านตัวแฮนเดิลสถานะ ซึ่งช่วยให้คุณสร้างเส้นทางการเปลี่ยนผ่านต่างๆ เพื่อเปลี่ยนไปใช้หน้า Dialogflow CX หน้าอื่น รวมถึงทำให้เป็นแบบมีเงื่อนไข (สำหรับการแยกการสนทนา)

สถานะของการสนทนาจะควบคุมด้วยการจัดการการเปลี่ยนระหว่างหน้าเว็บด้วยเส้นทาง 3 ประเภท ได้แก่

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

วลีการสนทนา (เช่น เนื้อหาหรือการตอบกลับผู้ใช้) กำหนดโดยการดำเนินการซึ่งอาจเป็นแบบคงที่หรือแบบไดนามิกก็ได้ ดังนี้

  • Fulfillment แบบคงที่: เมื่อมีการระบุการตอบกลับแบบคงที่สำหรับการดำเนินการ
  • Fulfillment แบบไดนามิก: เมื่อมีการเรียกใช้เว็บฮุคของ Fulfillment สำหรับคำตอบแบบไดนามิก

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

เส้นทางความตั้งใจของหน้าเว็บ

การสร้างหน้าต่างๆ ในขั้นตอนเริ่มต้นเริ่มต้น

แผนภาพขั้นตอนเริ่มต้นเริ่มต้นมีดังนี้

หน้าเว็บที่เชื่อมต่อกับแคตตาล็อก

มาคลิกลิงก์นี้ไปด้วยกัน

  1. คลิกสร้าง > เริ่มต้นขั้นตอนเริ่มต้น
  2. คลิกหน้าแรก
  3. คลิกไอคอน + ข้างเส้นทาง
  4. เพิ่ม redirect.artists.overview
  5. เลื่อนลงไปที่การเปลี่ยนผ่าน แล้วเปลี่ยนไปใช้ขั้นตอนแคตตาล็อก
  6. คลิกบันทึก
  7. ทำตามขั้นตอนข้างต้นซ้ำสำหรับ redirect.product.overview และอีก 11 แถวจากตารางนี้

หน้าเว็บ (อยู่ในขั้นตอน)

เส้นทาง > ความตั้งใจ

เส้นทาง > การเปลี่ยนเป็น

เริ่ม

Default Welcome Intent

-

เริ่ม

redirect.artists.overview

ขั้นตอน: แคตตาล็อก

เริ่ม

redirect.product.overview

ขั้นตอน: แคตตาล็อก

เริ่ม

redirect.shirts

ขั้นตอน: แคตตาล็อก

เริ่ม

redirect.music

ขั้นตอน: แคตตาล็อก

เริ่ม

redirect.product

ขั้นตอน: แคตตาล็อก

เริ่ม

redirect.product.of.artist

ขั้นตอน: แคตตาล็อก

เริ่ม

redirect.refund.info

กระบวนการ: การดูแลลูกค้า

เริ่ม

redirect.shipping.info

กระบวนการ: การดูแลลูกค้า

เริ่ม

redirect.swapping.info

กระบวนการ: การดูแลลูกค้า

เริ่ม

redirect.my.order

ขั้นตอน: คำสั่งซื้อของฉัน

เริ่ม

redirect.my.order.canceled

ขั้นตอน: คำสั่งซื้อของฉัน

เริ่ม

redirect.my.order.status

ขั้นตอน: คำสั่งซื้อของฉัน

เริ่ม

redirect.end

หน้าเว็บ: สิ้นสุดเซสชัน

เส้นทางหน้าเริ่มต้นเริ่มต้น

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

เส้นทางหน้าเริ่มต้นเริ่มต้น

การสร้างหน้าในโฟลว์แคตตาล็อก

ข้อความถอดเสียงของแชทต่อไปนี้เป็นของขั้นตอนแคตตาล็อก

> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.

From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!

We sell shirts, music or the tour movie.

Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.

Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"

ข้อความจะแตกต่างกันเมื่อคุณเลือกเพลงหรือภาพยนตร์แนะนำ โดยข้อความสำหรับเพลงจะมีลักษณะดังนี้

 > "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"

สำหรับภาพยนตร์แนะนำ บทสนทนาจะมีลักษณะดังนี้

 > "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?

นี่คือโฟลว์ชาร์ตของหน้าทุกหน้าภายในขั้นตอนแคตตาล็อก

หน้าเว็บที่เชื่อมต่อกับแคตตาล็อก

โปรดสังเกตความซับซ้อนของขั้นตอนนี้

  • ฉันข้ามคำถามเกี่ยวกับศิลปินและถาม"มีสินค้าอะไรบ้าง" ทันทีได้ไหม
  • จากขั้นตอนการเริ่มต้นเริ่มต้น ฉันอาจถามว่า "ฉันต้องการซื้อเสื้อยืด The Google Dolls" หรือ "ฉันต้องการซื้อของบางอย่าง" ซึ่งหมายความว่าตัวแทนเสมือนจะถามคำถามติดตามผลเพื่อเติมเต็มช่องสำหรับพารามิเตอร์ที่จำเป็นเหล่านี้ ระบบจะข้ามไปยังหน้าผลิตภัณฑ์โดยตรง
  • กล่องโต้ตอบราคามาจากหน้าราคาที่จะนํามาใช้ซ้ำ
  • แม้ว่าบทสนทนาสำหรับภาพยนตร์ทัวร์คอนเสิร์ตจะดูเป็นบทสนทนาที่เรียบง่ายที่สุด แต่เราจะทำสิ่งพิเศษกับบทสนทนานั้น เราจะนําส่วนนี้ของบทสนทนามาใช้ซ้ำ เพื่อให้ผู้ใช้ปลายทางป้อนข้อมูลนี้โดยตรงสําหรับผลิตภัณฑ์อื่นได้ หากต้องการระบุข้อมูลทั้งหมดพร้อมกัน
 > "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"

มาเริ่มเชื่อมต่อหน้าเว็บกันก่อน

  1. คลิกสร้าง > แคตตาล็อก
  2. คลิกหน้าเริ่มต้น
  3. คลิกไอคอน + ข้างเส้นทาง
  4. เพิ่ม redirect.artists.overview
  5. เลื่อนลงไปที่ทรานซิชัน เลือกหน้า แล้วเลือก + หน้าใหม่
  6. ใช้ชื่อหน้าเว็บ: Artist Overview แล้วกดบันทึก

มาดำเนินการตามขั้นตอนที่เหลือกัน

  1. คุณทำตามขั้นตอนก่อนหน้าซ้ำได้โดยใช้หน้าเว็บ เจตนา และการตอบสนองต่อไปนี้ ควบคุมตารางนี้ หน้าคือหน้าเว็บที่คุณเลือกในขั้นตอน เส้นทาง > การเปลี่ยนไปยังคือขั้นตอนหรือหน้าเว็บใหม่ที่คุณสร้างและเปลี่ยนไปใช้

หน้าเว็บ (อยู่ในขั้นตอน)

เส้นทาง > ความตั้งใจ

เส้นทาง > การเปลี่ยนผ่านไปยัง

เริ่มต้นแคตตาล็อก

redirect.artists.overview

ภาพรวมศิลปิน

เริ่มต้นแคตตาล็อก

redirect.product

ผลิตภัณฑ์

เริ่มต้นแคตตาล็อก

redirect.product.overview

ภาพรวมของผลิตภัณฑ์

เริ่มต้นแคตตาล็อก

redirect.product.of.artist

ภาพรวมของผลิตภัณฑ์

เริ่มต้นแคตตาล็อก

redirect.shirts

เสื้อ

เริ่มต้นแคตตาล็อก

redirect.music

เพลง

เริ่มต้นแคตตาล็อก

redirect.end

สิ้นสุดเซสชัน

เริ่มต้นแคตตาล็อก

redirect.home

สิ้นสุดขั้นตอน

ภาพรวมศิลปิน

redirect.product.of.artist

ภาพรวมของผลิตภัณฑ์

มาดำเนินการต่อและเพิ่มการจำหน่ายแบบคงที่เพิ่มเติมกัน

  1. ในขั้นตอนแคตตาล็อก ให้คลิกหน้าภาพรวมศิลปิน
  2. คลิกแก้ไขการจำหน่ายในส่วนการจำหน่ายสินค้า
  3. ใช้การตอบสนองแบบคงที่ต่อไปนี้ (Agent says)
  • The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
  1. คลิกบันทึก
  2. ในขั้นตอนการสร้างแคตตาล็อก ให้คลิกหน้าภาพรวมผลิตภัณฑ์
  3. คลิกแก้ไขการจำหน่ายในส่วนการจำหน่ายสินค้า
  4. ใช้การตอบสนองแบบคงที่ต่อไปนี้ (Agent says)
  • We sell shirts, music or the tour movie.
  1. คลิกบันทึก

พารามิเตอร์หน้า

พารามิเตอร์ใช้เพื่อบันทึกและอ้างอิงค่าที่ผู้ใช้ปลายทางระบุระหว่างเซสชัน พารามิเตอร์แต่ละรายการมีชื่อและประเภทเอนทิตี @Artist และ @Merch คือพารามิเตอร์ขั้นต่ำที่เราจําเป็นต้องรวบรวมเพื่อสร้างคําสั่งซื้อสินค้า สำหรับเสื้อยืดหรือเสื้อแขนยาว คุณต้องการรวบรวม @ShirtSize ด้วย และในกรณีที่ต้องการสั่งซื้อเพลง คุณจะต้องใช้ชื่อ @Carrier และ @Album ด้วย

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

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

สร้างพารามิเตอร์ในหน้าภาพรวมศิลปิน

ลองกำหนดพารามิเตอร์บางอย่างของหน้าเว็บ ดังนี้

  1. ในขั้นตอนแคตตาล็อก ให้คลิกหน้าภาพรวมศิลปิน
  2. คลิก + ในบล็อกพารามิเตอร์ เพิ่มพารามิเตอร์ artist
  • ชื่อที่แสดง: artist
  • ประเภทนิติบุคคล: @Artist
  • ต้องระบุ: เลือก
  • ปกปิดในบันทึก: เลือก
  1. ตอนนี้เราจะเพิ่มข้อความการตอบสนองพารามิเตอร์ที่กำหนดเอง หากตัวแทนเสมือนยังไม่ได้รวบรวมพารามิเตอร์ artist ผู้ใช้ปลายทางจะได้รับคำตอบของตัวแทนนี้ซึ่งเพิ่มลงในคิวคำตอบ

From which of these artists would you like to order merchandise?

  1. เพิ่มตัวเลือกกล่องโต้ตอบที่ 2 ซึ่งมีชิปคำแนะนำที่สมบูรณ์ คลิกเพิ่มตัวเลือกกล่องโต้ตอบ และใช้โค้ดนี้ (ใน JSON)
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

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

  1. เลื่อนลงไปที่ส่วนเครื่องจัดการเหตุการณ์ "แสดงข้อความแจ้งอีกครั้ง"
  2. คลิกเพิ่มตัวแฮนเดิลเหตุการณ์ แล้วเลือกเหตุการณ์ No-match default
  3. ใช้การตอบสนองด้วยข้อความแบบคงที่ของเหตุการณ์ต่อไปนี้

I missed that. Please, specify the artist. You can choose between: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?

  1. คลิกบันทึก
  2. คลิกเพิ่มตัวแฮนเดิลเหตุการณ์ แล้วเลือกเหตุการณ์ No-input default
  3. ใช้การตอบสนองด้วยข้อความแบบคงที่ของเหตุการณ์ต่อไปนี้

I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?

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

เส้นทางเงื่อนไขหน้าเว็บ

พารามิเตอร์มีประสิทธิภาพมากเมื่อใช้ร่วมกับเส้นทางแบบมีเงื่อนไขของหน้าเว็บ เมื่อเงื่อนไขประเมินเป็น "จริง" ระบบจะเรียกใช้เส้นทางหน้าเว็บที่เกี่ยวข้อง เงื่อนไขอาจเป็นพารามิเตอร์เท่ากับค่าที่เฉพาะเจาะจง หรือพารามิเตอร์ต้องไม่ขาดหายไป หรือแบบฟอร์มที่กรอกข้อมูลครบถ้วนแล้ว และอื่นๆ อีกมากมาย ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์และเงื่อนไขได้ในเอกสารประกอบของ Dialogflow CX

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

Dialogflow CX ตั้งค่าพารามิเตอร์ที่ได้จากผู้ใช้ปลายทางในระหว่างการกรอกแบบฟอร์มโดยอัตโนมัติ หากต้องการตรวจสอบว่ามีการกรอกแบบฟอร์มที่สมบูรณ์ของหน้าปัจจุบันหรือไม่ ให้ใช้เงื่อนไขต่อไปนี้ $page.params.status = "FINAL"

การสร้างเส้นทางแบบมีเงื่อนไขในหน้าภาพรวมศิลปิน

ลองสร้างเส้นทางแบบมีเงื่อนไข ซึ่งจะไปยังหน้าถัดไปเมื่อรู้จักศิลปินแล้ว

  1. ในหน้าภาพรวมศิลปิน ให้คลิกไอคอน + ในส่วนเส้นทาง
  2. เลื่อนลงไปที่ส่วนสภาพ
  3. เลือกอย่างน้อย 1 รายการ (หรือ)
  4. ต่อไป เราจะเขียนนิพจน์ที่
  • พารามิเตอร์: $page.params.status
  • โอเปอเรเตอร์: =
  • ค่า: "FINAL"
  1. ตอนนี้เราจะสร้างข้อความการตอบสนองแบบคงที่ที่เฉพาะเจาะจงในเส้นทางเพื่อยืนยันทางเลือกของผู้ใช้ปลายทาง เลื่อนลงไปที่บล็อกการดำเนินการตามคำสั่งซื้อ แล้วเขียนข้อความการดำเนินการตามคำสั่งซื้อต่อไปนี้
  • $session.params.artist, great choice! Rock on!
  • You want to rock with $session.params.artist merchandise. Awesome!
  1. เมื่อเงื่อนไขเป็นจริง คุณควรเปลี่ยนไปที่หน้าภาพรวมผลิตภัณฑ์ เลื่อนลงไปที่ส่วนการเปลี่ยนผ่าน และใช้หน้าต่อไปนี้ Product Overview
  2. คลิกบันทึก

พารามิเตอร์

การสร้างเส้นทางในหน้าภาพรวมผลิตภัณฑ์

ตอนนี้เมื่อรู้วิธีสร้างพารามิเตอร์และเส้นทางแบบมีเงื่อนไขแล้ว เรามาสร้างพารามิเตอร์เพิ่มเติมสําหรับหน้าต่อไปนี้กัน

ภาพรวมของผลิตภัณฑ์

  1. สร้างพารามิเตอร์ artist ในหน้าภาพรวมผลิตภัณฑ์
  • ชื่อที่แสดง: artist
  • ประเภทนิติบุคคล: @Artist
  • ต้องระบุ: เลือก
  • ปกปิดในบันทึก: เลือก
  • การตอบสนองพรอมต์ครั้งแรก: From which of these artists would you like to order merchandise?
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Event Handler > No-match default: To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
  • เพย์โหลดที่กำหนดเอง
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Event Handler > No-input default: To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
  • เพย์โหลดที่กำหนดเอง
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  1. สร้างพารามิเตอร์ merch
  • ชื่อที่แสดง: merch
  • ประเภทนิติบุคคล: @Merch
  • ต้องระบุ: เลือก
  • ปกปิดในบันทึก: เลือก
  • การดำเนินการตามคำสั่งซื้อ: Which merchandise item do you want?
  • คลิกเพิ่มตัวเลือกการสนทนา > เพย์โหลดที่กำหนดเอง
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event Handler > No-match default
  • การดําเนินการของตัวแฮนเดิลเหตุการณ์: We sell Shirts, Music or the Tour movie. Which of these items do you want?
  • เพย์โหลดที่กำหนดเอง
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event Handler > No-input default
  • การดําเนินการของตัวแฮนเดิลเหตุการณ์: I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
  • เพย์โหลดที่กำหนดเอง
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  1. สร้างเส้นทางที่จะเปลี่ยนไปยังหน้าผลิตภัณฑ์เมื่อมีการระบุ artist และมีการแสดงรายการ merch
  • เงื่อนไข:
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.artist != null
  • นิพจน์: $session.params.merch != null
  • การดำเนินการตามคำสั่งซื้อ: Alright! $session.params.merch of $session.params.artist, let's go!
  • การเปลี่ยน: หน้าเว็บ: Product
  1. สร้างเส้นทางสำหรับกรณีที่ผู้ใช้พูดว่า "เสื้อ"
  • ความตั้งใจ: redirect.shirts
  • การเปลี่ยน: หน้าเว็บ: Shirts
  1. สร้างเส้นทางสำหรับกรณีที่ผู้ใช้พูดว่า "เพลง"
  • Intent: redirect.music
  • การเปลี่ยน: หน้าเว็บ: Music
  1. สร้างเส้นทางสำหรับกรณีที่ผู้ใช้ขอข้อมูลราคา
  • Intent: redirect.price
  • การเปลี่ยน: สร้างหน้าใหม่: Price

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

จุดเริ่มต้นของขั้นตอนแคตตาล็อก

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

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

หน้าเสื้อ

  1. สร้างการกำหนดค่าต่อไปนี้ในหน้าเสื้อเชิ้ต
  • การดำเนินการตามรายการ: Do you want a longsleeve or a t-shirt?
  • เพย์โหลดที่กำหนดเองของการดำเนินการตามคำสั่งซื้อรายการ:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. สร้างเส้นทางความตั้งใจ: redirect.price ที่มีการเปลี่ยนไปยังหน้า Price
  2. สร้างพารามิเตอร์ต่อไปนี้
  • พารามิเตอร์: merch - ประเภทเอนทิตี: @Merch, Required และ Redact in log
  • พารามิเตอร์ > Event Handler > No-match default
  • พารามิเตอร์ > การดําเนินการของ Event Handler: You can choose between a t-shirt or a longsleeve. Which of these do you want?
  • พารามิเตอร์ > เพย์โหลดที่กำหนดเองของการดำเนินการตามตัวจัดการเหตุการณ์
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            }
          ]
        }
      ]
    ]
  }
  • พารามิเตอร์ > Event Handler > No-input default
  • พารามิเตอร์ > การดําเนินการของ Event Handler: I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
  • พารามิเตอร์ > เพย์โหลดที่กำหนดเองของตัวแฮนเดิลเหตุการณ์:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            }
          ]
        }
      ]
    ]
  }
  1. คลิกการเติมเต็มข้อมูล แล้วเลื่อนลงไปที่ค่าพารามิเตอร์ที่กำหนดล่วงหน้า โดยทุกครั้งที่หน้าเสื้อทำงานอยู่ ระบบจะตั้งค่าพารามิเตอร์หมวดหมู่เป็น shirts

พารามิเตอร์

ค่า

category

shirts

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎอย่างน้อย 1 ข้อ (OR)
  • นิพจน์: $session.params.merch = "T-shirt"
  • นิพจน์: $session.params.merch = "Longsleeve"
  • เปลี่ยนเป็นหน้าใหม่: Shirt Size

หน้าราคา

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

  1. สร้างการกำหนดค่าต่อไปนี้ในหน้าราคา
  • การดำเนินการตามรายการ: PRICE TODO

เนื่องจากคุณสามารถขอราคาได้จากที่ต่างๆ ในการสนทนา ฟีเจอร์นี้จึงควรให้คำตอบและโอนคุณกลับไปยังส่วนก่อนหน้าของบทสนทนาเสมอเพื่อสั่งซื้อต่อ แผนภูมิต้นไม้ของบทสนทนามี 5 จุดที่คุณแยกย่อยเพื่อดูข้อมูลราคาได้ (เสื้อ, ขนาดเสื้อ, เพลง, ผู้ให้บริการ และโดยตรงผ่าน Intent Route) เราจึงต้องใช้เส้นทางแบบมีเงื่อนไขเพื่อย้ายกลับดังนี้

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.category = "shirts"
  • นิพจน์: $session.params.merch = "null"
  • การเปลี่ยนไปยังหน้าใหม่: Shirts
  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.category = "shirts"
  • นิพจน์: $session.params.size = "null"
  • การเปลี่ยนไปยังหน้าใหม่: Shirt Size
  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.category = "music"
  • นิพจน์: $session.params.album = "null"
  • การเปลี่ยนไปยังหน้าใหม่: Music
  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.category = "music"
  • นิพจน์: $session.params.merch = "null"
  • การเปลี่ยนไปยังหน้าใหม่: Carrier
  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.category = "null"
  • เปลี่ยนเป็นหน้าใหม่: Product Overview

หน้าขนาดเสื้อ:

  1. สร้างการกําหนดค่าต่อไปนี้ในหน้าขนาดเสื้อ
  • การดำเนินการตามคำสั่งซื้อ: What shirt size do you want?
  • เพย์โหลดที่กำหนดเองสำหรับการนำส่งข้อมูล
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  1. สร้างเส้นทาง Intent: redirect.price ด้วยการเปลี่ยนไปใช้ Price เพจ
  2. สร้างพารามิเตอร์ต่อไปนี้
  • พารามิเตอร์: shirtsize - ประเภทเอนทิตี: @ShirtSize - Required, Redact In Log
  • พารามิเตอร์ > เครื่องจัดการเหตุการณ์ > No-match default
  • พารามิเตอร์ > การดําเนินการของ Event Handler: Please tell me the shirt size, such as XL.
  • พารามิเตอร์ > เพย์โหลดที่กำหนดเองของการดำเนินการตามตัวจัดการเหตุการณ์
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  • พารามิเตอร์ > Event Handler > No-input default
  • พารามิเตอร์ > การดําเนินการของ Event Handler: I couldn't understand the shirt size. What size do you want?
  • พารามิเตอร์ > เพย์โหลดที่กำหนดเองของตัวแฮนเดิลเหตุการณ์:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $page.params.shirtsize != "null"
  • การเปลี่ยนไปยังหน้าเว็บ: Product

หน้าเพลง

  1. สร้างการกําหนดค่าต่อไปนี้ในหน้าเพลง
  • การดำเนินการตามรายการ: We have a Greatest Hits Album or the Live Album. Which one do you want?
  • เพย์โหลดที่กำหนดเองของการดำเนินการตามคำสั่งซื้อรายการ:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. สร้างเส้นทางความตั้งใจ: redirect.price ที่มีการเปลี่ยนไปยังหน้าเว็บ: Price
  2. สร้างพารามิเตอร์ต่อไปนี้
  • พารามิเตอร์: album - ประเภทเอนทิตี: @Album - Required, Redact In Log
  • พารามิเตอร์ > Event Handler > No-match default
  • พารามิเตอร์ > การดําเนินการของ Event Handler: You can choose between Greatest Hits and Live Album. Which of these do you want?
  • พารามิเตอร์ > เพย์โหลดที่กำหนดเองของตัวแฮนเดิลเหตุการณ์:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  • พารามิเตอร์ > เครื่องจัดการเหตุการณ์ > No-input default
  • พารามิเตอร์ > การดําเนินการของ Event Handler: I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
  • พารามิเตอร์ > เพย์โหลดที่กำหนดเองของตัวแฮนเดิลเหตุการณ์:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  1. คลิกการตอบสนองของข้อมูล แล้วเลื่อนลงไปที่ค่าพารามิเตอร์ที่กำหนดล่วงหน้า โดยทุกครั้งที่หน้าเพลงทำงานอยู่ ระบบจะตั้งค่าพารามิเตอร์หมวดหมู่เป็น music

พารามิเตอร์

ค่า

category

music

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $page.params.album != "null"
  • การเปลี่ยนไปยังหน้าเว็บ: Carrier

หน้าผู้ให้บริการ:

  1. สร้างการกําหนดค่าต่อไปนี้ในหน้าผู้ให้บริการ
  • การดำเนินการตามรายการ: Do you want this album on CD or MP3?
  • เพย์โหลดที่กำหนดเองสำหรับการนำส่งข้อมูล
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "MP3"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. สร้างเส้นทาง Intent: redirect.price ซึ่งจะเปลี่ยนไปยังหน้า Price
  2. สร้างพารามิเตอร์ต่อไปนี้
  • พารามิเตอร์: merch - ประเภทเอนทิตี: @Merch - Required, Redact In Log
  • พารามิเตอร์ > Event Handler > No-match default
  • พารามิเตอร์ > การดำเนินการของเครื่องจัดการเหตุการณ์: Do you want a physical CD or the digital album?
  • พารามิเตอร์ > การตอบสนองของตัวจัดการเหตุการณ์: เพย์โหลดที่กําหนดเอง
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "Digital Album"
            }
          ]
        }
      ]
    ]
  }
  • พารามิเตอร์ > Event Handler > No-input default
  • พารามิเตอร์ > การดำเนินการของเครื่องจัดการเหตุการณ์: I couldn't understand if you mean CD or MP3. Which one do you want?
  • พารามิเตอร์ > Fulfillment ของตัวแฮนเดิลเหตุการณ์: เพย์โหลดที่กำหนดเอง
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "MP3"
            }
          ]
        }
      ]
    ]
  }
  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $page.params.merch != "null"
  • การเปลี่ยนไปยังหน้าเว็บ: Product

หน้าผลิตภัณฑ์

  1. สร้างพารามิเตอร์ต่อไปนี้

ชื่อที่แสดงของพารามิเตอร์

ประเภทเอนทิตีพารามิเตอร์

การตรวจสอบ

artist

@Artist

ต้องระบุ ปกปิดในบันทึก

merch

@Merch

ต้องระบุ ปกปิดในบันทึก

  1. พารามิเตอร์ artist ต้องมีการตอบสนองพรอมต์เริ่มต้นต่อไปนี้ ซึ่งจะแสดงเมื่อไม่ทราบชื่อศิลปิน You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Which artists?"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • นอกจากนี้ ให้เพิ่มตัวจัดการเหตุการณ์ No-input default ที่มีการดำเนินการตามคำขอ I couldn't understand what you just said. Ask me which artists are signed.
  • และตัวจัดการเหตุการณ์ No-match default ที่มีการดำเนินการตามคำสั่งซื้อ I missed that. Please ask me which artists are signed.
  1. พารามิเตอร์ merch ต้องมีตัวแฮนเดิลเหตุการณ์ที่แสดงข้อความแจ้งอีกครั้งด้วย
  • เพิ่มตัวจัดการเหตุการณ์ No-input default ที่มีการดำเนินการตามคำสั่งซื้อ: I couldn't understand what you just said. Which merchandise item do you want?
  • และตัวจัดการเหตุการณ์ No-match default ที่มีการดำเนินการตามคำสั่งซื้อ I missed that. Which merchandise item do you want?

เส้นทางถัดไปจะเปลี่ยนไปยังหน้ายืนยันเมื่อรู้จักศิลปิน และผู้ใช้เลือก "ภาพยนตร์ทัวร์คอนเสิร์ต"

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • ตรงกับกฎทั้งหมด (และ)
  • นิพจน์: $session.params.artist != null
  • นิพจน์: $session.params.merch = "Tour Movie"
  • พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ > price = 25
  • การเปลี่ยนไปยังหน้าใหม่: Confirmation

เส้นทางถัดไปจะเปลี่ยนไปเป็นหน้ายืนยันเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "เสื้อยืด" และเลือกขนาดเสื้อ

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • นิพจน์ที่กำหนดเอง: $session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
  • พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ > price = 25
  • การเปลี่ยนไปยังหน้า: Confirmation

เส้นทางถัดไปจะเปลี่ยนไปยังหน้ายืนยันเมื่อรู้จักศิลปินและผู้ใช้เลือก "Longsleeve" และได้เลือกขนาดเสื้อ

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • นิพจน์ที่กําหนดเอง: $session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
  • พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ > price = 30
  • เปลี่ยนไปยังหน้า: Confirmation

เส้นทางถัดไปจะเปลี่ยนเป็นหน้ายืนยันเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "CD" รวมถึงเลือกชื่ออัลบั้มแล้ว

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • นิพจน์ที่กําหนดเอง: $session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
  • พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ > price = 15
  • การเปลี่ยนไปยังหน้า: Confirmation

ระบบจะเปลี่ยนไปยังหน้ายืนยันเมื่อรู้จักศิลปินและผู้ใช้เลือก "อัลบั้มดิจิทัล" และชื่ออัลบั้มได้รับเลือก

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • นิพจน์ที่กําหนดเอง: $session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
  • พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ > price = 10
  • การเปลี่ยนไปยังหน้า: Confirmation

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

  1. เพิ่มเส้นทางแบบมีเงื่อนไข
  • นิพจน์ที่กําหนดเอง: $session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
  • การดำเนินการตามคำสั่งซื้อ: I would also need to know which album you would like to buy!
  • การเปลี่ยนไปยังหน้า: Music

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

  1. เพิ่มเส้นทางแบบมีเงื่อนไข ดังนี้
  • นิพจน์ที่กำหนดเอง: $session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
  • การดำเนินการตามคำสั่งซื้อ: I would also need to know which shirt size you need!
  • การเปลี่ยนไปยังหน้า: Shirt Size

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

7. คำตอบแบบมีเงื่อนไข

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

if [condition]
  [response]
elif [condition]
  [response]
elif [condition]
  [response]
else
  [response]
endif
  • ตัวอย่างของ [condition] อาจเป็น $session.params.user-age >= 21 ซึ่งจะใช้รูปแบบที่คล้ายกับเงื่อนไขในเส้นทาง
  • [response] ใช้คำตอบแบบข้อความคงที่
  • คำตอบแบบมีเงื่อนไขจะเริ่มต้นด้วย if เสมอ
  • บล็อก elif และ else เป็นตัวเลือกที่ไม่บังคับ

นอกจากนี้ Dialogflow CX ยังใช้ฟังก์ชันของระบบในตัวได้ด้วย เช่น เพื่อจัดรูปแบบวันที่หรือเวลา หรือเพื่อแสดงเวลาปัจจุบัน ($sys.func.NOW())

สรุปขั้นตอนแคตตาล็อกโดยแก้ไขหน้าการยืนยันและราคา

หน้ายืนยัน:

ทีนี้เราจะสร้างหน้ายืนยัน โดยมีข้อกำหนดดังนี้

  • หากสินค้าคือซีดีหรืออัลบั้มดิจิทัล เราจะแสดงช่องต่อไปนี้ในการยืนยัน artist, merch, album และ price
  • หากสินค้าคือเสื้อยืดหรือเสื้อแขนยาว เราจะแสดงช่องต่อไปนี้ในการยืนยัน artist, merch, size และ price
  • ไม่เช่นนั้น (และดังนั้นหาก merch คือ Tour Movie) เราจะแสดงช่องต่อไปนี้ในการยืนยัน artist, merch และ price
  1. คลิกหน้าการยืนยัน
  2. คลิกแก้ไขการดำเนินการตามคำสั่งซื้อ > การตอบกลับของตัวแทน > ตัวเลือกเพิ่มกล่องโต้ตอบ > การตอบกลับแบบมีเงื่อนไข
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
  The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
  A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
  The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
  It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
  1. Create the following Custom payload:
  • Custom payload:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Yes, confirm"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

Next, create two intent routes:

  1. confirm.proceed.order transitions to: Order Process Flow.
  2. decline.proceed.order transitions to End Flow

When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.

  1. In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:

Parameter

Value

artist

null

merch

null

shirtsize

null

category

null

album

null

price

null

restart

true

Notice that we have created an additional parameter called restart. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.

  1. Click on the Default Start Flow, Start Page, and create another Conditional Route:
  • $session.params.restart = "true"
  • Fulfillment: "Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
  • Custom payload:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Which artists?"
            },
            {
              "text": "Which products?"
            },
            {
              "text": "About my order..."
            }
          ]
        }
      ]
    ]
  }
  1. Select the Start Page and click on the redirect.end intent. Create the following fulfillment: Thank you for contacting G-Records! Have a nice day!

Price Page:

Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:

  • Delete the Agent Says entry fulfillment.
  • Create a new Conditional Response:
if $session.params.category = "shirts"
  A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
  A CD costs $15. The digital album on MP3 costs $10.
else
  A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif

Conditional Responses

Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:

8. Wrapping up the agent

We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.

Creating the My Order Flow

  1. Go to the My Order Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

My Order Start

redirect.my.order

My Order

My Order Start

redirect.my.order.status

My Order Status

My Order Start

redirect.my.order.canceled

My Order Cancellation

My Order Start

redirect.end

End Session

My Order Start

redirect.home

End Flow

My Order

redirect.my.order.status

My Order Status

My Order

redirect.my.order.canceled

My Order Cancellation

Default Start Flow

redirect.my.order.canceled

Flow: My Order

Default Start Flow

redirect.my.order.status

Flow: My Order

  1. Let's create the following entry fulfillment for the My Order Page:
  • Entry fulfillment: I can look up the status of your order, or I can cancel an order.
  1. In the My Order Page create the following parameter:
  • Displayname: ordernumber
  • Entity Type: @OrderNumber
  • Required: checked
  • Initial prompt fulfillment: What's the order number? For example ABCD123.
  • Event Handler: No-match default: To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
  • Event Handler: No-input default: I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
  1. Create the following conditional route:
  • Customize Expression: $page.params.status = "FINAL"
  • Fulfillment: And do you want to Cancel your order, or should I look up the status?
  1. Click on Add state handler > Event Handlers and create the Event Handler: No-input default
  • Fulfillment: I'm sorry, what was that? Would you like me to cancel an order or look up the status?
  • Custom payload:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Status"
          },
          {
            "text": "Cancel"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  1. Create the Event Handler: No-match default
  • Fulfillment: Would you like me to cancel an order or lookup the status?
  • Custom payload:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Status"
          },
          {
            "text": "Cancel"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  1. In the My Order Status Page create the following parameter:
  • Displayname: ordernumber
  • Entity Type: @OrderNumber
  • Required checked
  • Initial prompt fulfillment: What's the order number? For example ABCD123.
  • Event Handler: No-match default: To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
  • Event Handler: No-input default: I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
  1. In the My Order Status Page create the following conditional route:
  • Customize Expression: $session.params.ordernumber != null
  • Fulfillment: Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
  • Add dialogue option > Text: Is there anything else I can help you with?
  1. In the My Order Cancelation Page create the following parameter:
  • Displayname: ordernumber
  • Entity Type: @OrderNumber
  • Required checked
  • Initial prompt fulfillment: What's the order number? For example ABCD123.
  • Event Handler: No-match default: To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
  • Event Handler: No-input default: I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
  1. In the My Order Cancelation Page create the following conditional route:
  • Customize Expression: $session.params.ordernumber != null
  • Fulfillment: Your order $session.params.ordernumber has been canceled.
  • Add dialogue option > Text: Is there anything else I can help you with?
  1. Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"

And:

>"What's the status of order DEFG222"
  1. Select the Start Page and click on the redirect.end intent. Create the following fulfillment: Thank you for contacting G-Records! Have a nice day!
  2. Select the Start Page and click on the redirect.home intent. Create the following parameter preset: restart = true

Default Negative intents (Fallback)

When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.

  1. Try in the simulator: I don't like Alice Googler.

You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.

  1. Go to Manage > Intents and select the Default Negative Intent.
  2. Add the following training phrases that will trigger the No-match event.
  • I don't like Alice Googler
  • I am not a fan of G's N' Roses
  • I can't stand the music of the Google Dolls
  1. Hit Save and test the following sentence in the simulator: I am really not a fan of the Goo Fighters

This time the No-match event was triggered, you stayed on the Start Page.

Default Fallback Messages

  1. Click the Default Start Flow, select the sys.no-input-default event handler.

The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:

  1. Remove all answers, and add these text dialogues:
  • I'm sorry, I didn't receive an answer. Can you say it again?
  • I missed your answer, can you say it again?
  • Sorry, I didn't hear anything. Can you say it again?
  • I couldn't hear what you were saying, what was that?
  • I'm sorry, I missed your answer. What were you trying to say?

Don't forget to click Save.

  1. Click the Default Start Flow, select the sys.no-match-default event handler.

The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.

  1. Remove all answers, and add these text dialogues:
  • Sorry, I didn't get that. Can you please rephrase?
  • I'm sorry, I don't understand. Can you please rephrase?
  • I don't understand, please rephrase.
  • Sorry, I didn't get that. What was that?
  • I didn't get that, can you please rephrase?

Don't forget to click Save.

  1. It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.

Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.

Creating the Order Process Flow

  1. Go to the Order Process Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

Order Process Start

redirect.end

End Session

Order Process Start

redirect.home

End Flow

Order Process Start

confirm.proceed.order

New Page: Shipping Details

  1. Let's create the following entry fulfillment for the Shipping Details Page:
  • Entry fulfillment: To complete your order I will first need to collect your shipping details.
  1. Create the following parameters:

These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.

Parameter Display name

Entity

Required?

Initial prompt fulfillment

No-match default

No-input default

firstname

@sys.person

Required

What's your first name?

I'm sorry I missed that. What's the first name?

I'm sorry, I didn't understand. What's the first name?

lastname

@sys.person

Required

What's your last name?

I'm sorry I missed that. What's the last name?

I'm sorry, I didn't understand. What's the last name?

address

@sys.address

Required

What's your address?

I missed that. What's the address?

I'm sorry, I didn't understand. What's the address?

zipcode

@sys.any

Required

What postal code or zipcode do you have?

I'm sorry, what's the zip or postal code? For example: 1234AB or 10001.

I'm sorry, I didn't understand. What's the zip or postal code? For example: 1234AB or 10001.

city

@sys.geo-city

Required

What's the name of the city?

I missed that, what's the name of the city?

I'm sorry, I didn't understand. What's the name of the city?

country

@sys.geo-country

Required

What's the name of the country?

I missed that, what's the name of the country?

I'm sorry, I didn't understand. What's the name of the country?

email

@sys.email

Required

Lastly, what's your email address?

I am sorry. What's the email address? For example name@domain.com.

I am sorry, I didn't understand. What's the email address? For example name@domain.com.

  1. Create the following conditional route:
  • Customize Expression: $page.params.status = "FINAL"
  • Transition to new Page: Payment Details
  1. Create the following entry fulfillment.

Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:

  • Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
  • Conditional Response
if $session.params.merch != "Digital Album"
  Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
  Your merchandise will be shipped to:
  $session.params.firstname $session.params.lastname
  $session.params.address
  $session.params.zipcode $session.params.city
  $session.params.country
  To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
  The total costs will be: $$session.params.price.
  After purchasing the digital album, you will receive an email with the download link.
  To continue the order process please explicitly say "I confirm".
  Do you want to confirm your $session.params.artist $session.params.merch order?
endif
  1. สร้างเส้นทางความตั้งใจต่อไปนี้
  • ความตั้งใจ: confirm.proceed.order
  • ตัวแทนบอกว่า Thank you for your order! Your merchandise will be shipped today!
  • เพิ่มตัวเลือกบทสนทนา > ข้อความ: Here's the order number: ABCD123
  • เพิ่มตัวเลือกบทสนทนา > ข้อความ: Have a good day!
  • การเปลี่ยน: End Session
  1. เลือกหน้าเริ่มต้น แล้วคลิก Intent redirect.end สร้าง Fulfillment ต่อไปนี้: Thank you for contacting G-Records! Have a nice day!
  2. เลือกหน้าเริ่มต้น แล้วคลิกที่ Intent redirect.home สร้างค่าที่กำหนดล่วงหน้าสำหรับพารามิเตอร์ต่อไปนี้ restart = true

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

9. ทดสอบตัวแทนเสมือน

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

นอกจากนี้ คุณยังส่งออกและนําเข้ากรณีทดสอบที่สร้างไว้ก่อนหน้านี้ได้ด้วย โดยจัดเก็บการทดสอบไว้ใน Google Cloud Storage หรือในเครื่อง การส่งออกการทดสอบจะดาวน์โหลดไฟล์ Blob หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือจำลองและกรอบการทดสอบ โปรดดูเอกสารเครื่องจำลอง / กรอบการทดสอบ

ก่อนสร้างเฟรมเวิร์กการทดสอบ มาดูกันว่าเรามาสรุปข้อมูลที่เหลือของตัวแทนเสมือนกันก่อน

การสร้างขั้นตอนการดูแลลูกค้า

  1. ไปที่ขั้นตอนการดูแลลูกค้า แล้วสร้างการเปลี่ยนความตั้งใจต่อไปนี้

หน้าเว็บ (ใน FLow)

เส้นทาง > ความตั้งใจ

เส้นทาง > การเปลี่ยนเป็น

Customer Care Start

redirect.shipping.info

การจัดส่ง

Customer Care Start

redirect.refund.info

เงินคืน

Customer Care Start

redirect.swapping.info

การสลับ

เริ่มการดูแลลูกค้า

redirect.home

สิ้นสุดขั้นตอน

Customer Care Start

redirect.end

สิ้นสุดเซสชัน

ขั้นตอนการดูแลลูกค้า

  1. สร้างการปฏิบัติตามข้อกำหนดในการป้อนข้อมูลต่อไปนี้สำหรับหน้าการจัดส่ง
  • Shipping physical merchandise items can take up to 2 weeks.
  • Is there anything else I can help you with?
  1. สร้างการดําเนินการต่อไปนี้สําหรับหน้าการคืนเงิน
  • We offer free returns and refunds. We provide one free return label for each order. You can use it within 30 days from receiving your order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
  • Is there anything else I can help you with?
  1. สร้างการปฏิบัติตามข้อกำหนดในการเข้าชมต่อไปนี้สำหรับหน้าการแลกเปลี่ยน
  • If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
  • Is there anything else I can help you with?
  1. เลือกหน้าเริ่มต้น แล้วคลิก Intent redirect.end สร้างการจำหน่ายต่อไปนี้ Thank you for contacting G-Records! Have a nice day!
  2. เลือกหน้าเริ่มต้น แล้วคลิก Intent redirect.home สร้างค่าที่กำหนดล่วงหน้าสำหรับพารามิเตอร์ต่อไปนี้ restart = true

สร้างกรอบการทดสอบ

  1. คลิกปุ่มตัวแทนทดสอบทางด้านขวาของหน้าจอ

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

  1. ประเภท: Hi

ขั้นตอนการดูแลลูกค้า

  1. ถาม: Which artists are signed with your label?
  2. พูดว่า The Google Dolls
  3. พูดว่า I am interested in buying a shirt
  4. พูดว่า A t-shirt
  5. พูดว่า Medium
  6. จากนั้นคลิกปุ่มบันทึกเคสทดสอบ ซึ่งคุณสามารถพบได้ที่ด้านบนของเครื่องมือจำลอง (ถัดจากลูกศรทำซ้ำ และไอคอนรีเซ็ตถังขยะ)

ขั้นตอนการดูแลลูกค้า

  1. ระบุรายละเอียดต่อไปนี้
  • ชื่อกรอบการทดสอบ: Buy Google Dolls t-shirt size M
  • แท็ก: #catalog, #shirts, #t-shirt, #TheGoogleDolls
  1. คลิกบันทึก

มาสร้างกรณีทดสอบเพิ่มเติมกัน

  1. ก่อนอื่น ให้ล้างกล่องโต้ตอบปัจจุบันโดยคลิกไอคอนรีเซ็ต (ถังขยะ)
  2. สร้างกรณีทดสอบต่อไปนี้

ซื้อเสื้อยืด Alice Googler

>"Buy the Alice Googler t-shirt."
>"XL"
  • ชื่อเคสทดสอบ: Buy the Alice Googler t-shirt
  • แท็ก: #catalog, #shirts, #t-shirt, #AliceGoogler

ซื้อเสื้อยืดขนาด M: (โปรดทราบว่าไม่ได้พูดถึงชื่อศิลปิน แต่คุณต้องการข้ามหน้าภาพรวมของวง ภาพรวมผลิตภัณฑ์ เสื้อ และหน้าขนาดเสื้อ)

>"Buy a t-shirt size M"
>"The Google Fighters"
  • ชื่อเคสทดสอบ: Buy a t-shirt size M
  • แท็ก: #catalog, #shirts, #t-shirt, #TheGoogleFighters
  • คําอธิบาย: (โปรดทราบว่าไม่ได้พูดถึงชื่อศิลปิน แต่คุณต้องการข้ามภาพรวมของวง ภาพรวมผลิตภัณฑ์ หน้าเสื้อและขนาดเสื้อ)

ซื้อเพลงของ Guns N' Roses (โปรดทราบว่าการดำเนินการนี้จะข้ามหน้าภาพรวมของวงดนตรีและหน้าภาพรวมผลิตภัณฑ์)

>"Purchase music of G's N' Roses"
>"Live"
>"CD"
  • ชื่อกรอบการทดสอบ: Purchase music of G's N' Roses
  • แท็ก: #catalog, #music, #CD, #GsNRoses, #live
  • คําอธิบาย: (โปรดทราบว่าการดำเนินการนี้จะข้ามหน้าภาพรวมของวงดนตรีและหน้าภาพรวมผลิตภัณฑ์)

วิธีตรวจสอบข้อมูลราคา

>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
  • ชื่อเคสทดสอบ: Price info
  • แท็ก: #catalog, #music, #tourmovie, #shirts
  • คําอธิบาย: ทดสอบข้อมูลราคาในจุดต่างๆ ของกล่องโต้ตอบ

ทดสอบเฟรมทดสอบที่บันทึกไว้ล่วงหน้า

  1. เลือกจัดการ > Test Case ในเมนูหลักของ Dialogflow ทางด้านซ้าย
  2. เลือกเคสทดสอบทั้งหมด แล้วกดปุ่มเรียกใช้เหนือตาราง

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

กรอบการทดสอบ

  1. ถามคำถามต่อไปนี้ในเครื่องจำลอง How long will shipping take?
  2. จดบันทึกผลลัพธ์และบันทึกเฟรมทดสอบเป็น Shipping พร้อมแท็ก #shipping
  3. ไปที่แผง "จัดการ" > "Test Case" แล้วกดปุ่มเรียกใช้ที่ด้านขวาบนของตารางกริดเพื่อเรียกใช้เฉพาะ Test Case Shipping

การทดสอบนี้ควรผ่าน

  1. กลับไปที่ขั้นตอนการดูแลลูกค้า เลือกหน้าเริ่มต้น แล้วคลิกส่วนหัวเส้นทาง

ซึ่งจะแสดงหน้าจอที่มีตารางกริดซึ่งแสดงเส้นทางทั้งหมด

  1. นำ redirect.shipping.info route ออก
  2. ไปที่แผง "จัดการ" > "Test Case" แล้วกดปุ่มเรียกใช้ที่ด้านขวาบนของตารางกริดเพื่อเรียกใช้เฉพาะ Test Case Shipping

การทดสอบนี้ควรล้มเหลว

  1. คุณสามารถคลิกการทดสอบที่ล้มเหลวเพื่อดูรายละเอียดเกี่ยวกับความล้มเหลว

ในกรณีนี้ การทดสอบล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดด้านล่าง

Page: Page mismatch:
Expected: Shipping
Actual: Start Page

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

กล่าวคือ นี่คือคำขอที่พลาดไป ซึ่งเป็นผลลัพธ์การทดสอบลบเท็จ การทดสอบไม่สำเร็จ เราคาดว่าจะเห็นหน้าการจัดส่ง แต่ไม่มีอะไรเกิดขึ้นหรือมีการแสดงข้อความสำรอง

  1. กลับไปที่ขั้นตอนการดูแลลูกค้า แล้วเพิ่ม redirect.shipping.info เป็นเส้นทาง Intent ไปยังหน้า Start อย่าลืมเปลี่ยนไปที่หน้าการจัดส่ง แล้วกดบันทึก
  2. ในเครื่องจำลอง ให้บันทึกกรณีทดสอบต่อไปนี้ I want to swap my item แล้วบันทึกกรณีทดสอบนี้เป็น Swapping #swapping
  3. เปิดจัดการ > Intent > redirect.refund.info แล้วเพิ่มวลีการฝึกต่อไปนี้ I want to swap this item for a refund

หากไม่มีวลีการฝึกอบรมดังกล่าว เมื่อผู้ใช้ขอให้เปลี่ยนสินค้าเพื่อขอรับเงินคืน ก็จะบรรลุเป้าหมาย redirect.swapping.info แต่เราไม่อยากให้ข้อมูลเรื่องการเปลี่ยนสินค้า เราต้องการให้ข้อมูลเกี่ยวกับการคืนเงิน

  1. สร้างกรณีทดสอบตามตัวอย่างต่อไปนี้ I want to swap this item for a refund ในเครื่องจำลอง และบันทึกกรณีทดสอบนี้เป็น Swap for Refund #refund
  2. กลับไปที่ Intent จัดการ > Intent > redirect.refund.info แล้วนำบรรทัด I want to swap this item for a refund ออก
  3. กลับไปที่จัดการ > กรณีทดสอบ เลือกกรณีทดสอบเปลี่ยนสินค้าเพื่อขอเงินคืน แล้วเรียกใช้

การทดสอบล่าสุดล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดด้านล่าง

If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
 Page: Page mismatch:
Expected: Refund
Actual: Swapping

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

ความครอบคลุม

ใน Dialogflow CX การทดสอบ coverage คือการวัดที่ใช้เพื่ออธิบายระดับการทำงานของการโต้ตอบของ Agent เสมือน (เพจและ Intent) เมื่อเรียกใช้ชุดทดสอบที่เฉพาะเจาะจง ตัวแทนเสมือนที่มีการครอบคลุมการทดสอบสูง ซึ่งวัดเป็นเปอร์เซ็นต์ จะมีการโต้ตอบที่ดำเนินการมากขึ้นในระหว่างการทดสอบ ซึ่งหมายความว่ามีโอกาสน้อยที่จะมีข้อบกพร่องที่ตรวจไม่พบ (เช่น คำขอที่เข้าใจผิดซึ่งไม่ได้รับการตอบกลับ) เมื่อเทียบกับตัวแทนเสมือนที่มีการครอบคลุมการทดสอบต่ำ

  1. หากต้องการดูรายงานการครอบคลุมการทดสอบสำหรับกรอบการทดสอบทั้งหมด ให้คลิกการครอบคลุม
  2. คลิกแท็บทรานซิชัน

ซึ่งจะแสดงการครอบคลุมการทดสอบของการเปลี่ยนหน้าเว็บทั้งหมด

ความครอบคลุมของการเปลี่ยน

  1. คลิกแท็บIntent

ซึ่งจะแสดงการครอบคลุมการทดสอบของ Intent ทั้งหมด

ความครอบคลุมของ Intent

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

10. บทสรุป

Dialogflow CX เป็นแพลตฟอร์ม AI แบบสนทนา (CAIP) สำหรับการสร้างตัวแทนเสมือน เช่น แชทบ็อตหรือบ็อตเสียง Dialogflow CX ช่วยให้ทีมของคุณเร่งสร้างประสบการณ์การสนทนาระดับองค์กรได้ผ่านเครื่องมือสร้างบ็อตแบบภาพ อินเทนต์ที่ใช้ซ้ำได้ และความสามารถในการจัดการการสนทนาแบบหลายรอบ

ใน Codelab นี้ คุณได้เรียนรู้วิธีสร้างตัวแทนเสมือนจริงสำหรับธุรกิจค้าปลีกในชีวิตจริง เราได้กล่าวถึงแนวคิดต่อไปนี้

  • ขั้นตอน
  • พารามิเตอร์ เอนทิตีที่กำหนดเองและเอนทิตีของระบบ
  • Pages
  • แฮนเดิลสถานะ เช่น เส้นทาง Intent และเส้นทางเงื่อนไข
  • ข้อความการดำเนินการแบบคงที่และการตอบกลับแบบมีเงื่อนไข
  • ข้อความสำรอง
  • เครื่องมือจำลอง กรอบการทดสอบ และความครอบคลุม

ผลลัพธ์สุดท้าย

ข้อมูลอ้างอิง

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ Dialogflow CX โปรดดูบล็อกและเอกสารประกอบต่อไปนี้