1. ก่อนเริ่มต้น
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีสร้างแชทบ็อตค้าปลีกด้วย Dialogflow CX ซึ่งเป็นแพลตฟอร์ม AI แบบสนทนา (CAIP) สำหรับการสร้าง UI แบบสนทนา Dialogflow CX สามารถใช้ตัวแทนเสมือน เช่น แชทบ็อต บอสวอยซ์ เกตเวย์โทรศัพท์ และรองรับหลายช่องทางในภาษาต่างๆ กว่า 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
- ดูวิธีสร้างหน้าเว็บและการเปลี่ยนหน้าเว็บด้วยตัวแฮนเดิลสถานะ
- ดูวิธีเปลี่ยนหน้าเว็บด้วยเส้นทาง Intent
- ดูวิธีเปลี่ยนหน้าเว็บด้วยพารามิเตอร์และเส้นทางเงื่อนไข
- ดูวิธีแสดงผลคำตอบแบบมีเงื่อนไขด้วยฟังก์ชันของระบบ
- ดูวิธีสร้างข้อความสำรอง
- ดูวิธีใช้เครื่องจำลอง
- ดูวิธีสร้างเคสทดสอบและการครอบคลุมการทดสอบ
การออกแบบตัวแทน Dialogflow CX เวอร์ชันสุดท้ายจะมีลักษณะดังนี้
สิ่งที่คุณต้องมี
- คุณจะต้องมีข้อมูลประจำตัวของ Google / อีเมล Gmail เพื่อสร้าง Agent ของ Dialogflow CX
- สิทธิ์เข้าถึง Google Cloud
2. การตั้งค่าสภาพแวดล้อม
สร้างโปรเจ็กต์ Google Cloud
เนื่องจาก Dialogflow CX ทำงานใน Google Cloud คุณจึงต้องสร้างโปรเจ็กต์ Google Cloud โปรเจ็กต์จะจัดระเบียบทรัพยากร Google Cloud ทั้งหมด ซึ่งประกอบด้วยผู้ทำงานร่วมกัน ชุด API ที่เปิดใช้ (และทรัพยากรอื่นๆ) เครื่องมือตรวจสอบ ข้อมูลการเรียกเก็บเงิน รวมถึงการตรวจสอบสิทธิ์และการควบคุมการเข้าถึง
เมื่อสร้างโปรเจ็กต์ใหม่ คุณจะต้องป้อนชื่อโปรเจ็กต์ และจะต้องลิงก์กับบัญชีการเรียกเก็บเงินและองค์กรที่มีอยู่
บัญชีสำหรับการเรียกเก็บเงินใช้เพื่อกำหนดว่าใครเป็นผู้ชำระเงินสำหรับชุดทรัพยากรหนึ่งๆ และสามารถลิงก์กับโปรเจ็กต์อย่างน้อย 1 รายการ ระบบจะเรียกเก็บเงินค่าการใช้งานโปรเจ็กต์จากบัญชีสำหรับการเรียกเก็บเงินที่ลิงก์ ในกรณีส่วนใหญ่ คุณจะกำหนดค่าการเรียกเก็บเงินเมื่อสร้างโปรเจ็กต์ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับการเรียกเก็บเงิน ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว
เปิดใช้ Dialogflow API
หากต้องการใช้ Dialogflow คุณจะต้องเปิดใช้ Dialogflow API สําหรับโปรเจ็กต์
- เลือกโปรเจ็กต์ที่ต้องการเปิดใช้ API แล้วคลิกต่อไป
- ยุบเมนู API และบริการ แล้วคลิกสร้างข้อมูลเข้าสู่ระบบ
- คลิกข้อมูลแอปพลิเคชัน
- ตอบว่าไม่ ฉันไม่ได้ใช้เนื่องจากตอนนี้คุณไม่ได้ใช้ Kubernetes Engine, App Engine หรือ Cloud Functions
- คลิกเสร็จสิ้น
สร้างตัวแทน Dialogflow CX ใหม่
หากต้องการสร้าง Agent ของ Dialogflow CX ใหม่ ให้เปิดคอนโซล Dialogflow CX ก่อน โดยทำดังนี้
- เลือกโปรเจ็กต์ Google Cloud ที่สร้างไว้ก่อนหน้านี้
- คลิกสร้างตัวแทน
กรอกแบบฟอร์มสําหรับการตั้งค่าตัวแทนพื้นฐาน
- คุณเลือกชื่อที่แสดงใดก็ได้
- เลือกตำแหน่งเป็น us-central1
- เลือกเขตเวลาที่ต้องการ
- เลือก en - อังกฤษ เป็นภาษาเริ่มต้น
คลิกสร้าง
ทุกอย่างพร้อมแล้ว ในที่สุดเราก็เริ่มสร้างตัวแทนเสมือนได้
3. ขั้นตอน
กล่องโต้ตอบที่ซับซ้อนมักจะเกี่ยวข้องกับหัวข้อการสนทนาหลายหัวข้อ ในกรณีของแชทบ็อตที่เรากำลังสร้างให้กับ G-Records เพื่อขายสินค้าของวงดนตรี เราจะมีบทสนทนาเกี่ยวกับแคตตาล็อกผลิตภัณฑ์ การชำระเงิน สถานะการสั่งซื้อ และคำถามเกี่ยวกับฝ่ายดูแลลูกค้า เราอาจแยกหัวข้อการสนทนาเหล่านี้ออกเป็นขั้นตอน
ขั้นตอนช่วยให้ทีมทำงานกับเส้นทางการสนทนาแต่ละเส้นทางได้ แนวทางปฏิบัติแนะนำคือลดความซับซ้อนของขั้นตอนเพื่อให้พอดีกับหน้าจอและเป็นแบบโมดูลมากขึ้น
ขั้นตอนเป็นแนวคิดใหม่ของ Dialogflow CX Dialogflow Essentials มีแนวคิด Mega Agent ซึ่งคล้ายกับ Flow แต่คุณจะใช้โฟลว์บ่อยกว่ามาก
ในภายหลังในเซสชันนี้ เราจะใช้ตัวแฮนเดิลสถานะที่สามารถสิ้นสุดโฟลว์ (เพื่อให้ระบบข้ามกลับไปที่โฟลว์ถัดไปหรือโฟลว์ก่อนหน้า) หรือคุณจะสิ้นสุดเซสชันตัวแทนแบบเต็มก็ได้
มาสร้างโฟลว์กัน
การสร้างโฟลว์
- ใน Dialogflow CX ให้คลิกไอคอน + > สร้างโฟลว์
- ระบุชื่อ:
Catalog
แล้วกด Enter
สร้างแคตตาล็อกขั้นตอนแรกแล้ว ตอนนี้ให้สร้างโฟลว์อื่นๆ ดังนี้
Order Process
My Order
Customer Care
ในภายหลังในเซสชันนี้ เราจะตั้งค่าตัวแฮนเดิลสถานะหน้าเว็บ ซึ่งจะช่วยให้แน่ใจว่าการแสดงภาพสุดท้ายจะมีลักษณะดังนี้
เครื่องมือจำลอง
ทางด้านขวาของ Dialogflow CX Console คุณสามารถทดสอบตัวแทนเสมือนด้วยเครื่องจำลองในตัว คุณสามารถทดสอบการสนทนาตั้งแต่ต้นการสนทนาหรือจากขั้นตอนใดขั้นตอนหนึ่งก็ได้
- คลิกปุ่มทดสอบตัวแทนที่ด้านขวาบนของหน้าจอ
- ในช่อง "พูดคุยกับตัวแทน" ให้เขียนว่า
Hello
ตัวแทนเสมือนจะตอบกลับด้วยข้อความต้อนรับเริ่มต้นว่า สวัสดี มีอะไรให้เราช่วยบ้าง
มาแก้ไขข้อความต้อนรับเริ่มต้นนี้กัน
ขั้นตอนเริ่มต้นเริ่มต้น
มาเริ่มกันด้วยการสร้างเส้นทาง Intent ที่จะเริ่มทํางานเมื่อคุณทักทายตัวแทนเสมือน
- ในแถบด้านข้างสร้าง > ขั้นตอนทางด้านซ้าย ให้คลิกขั้นตอนเริ่มต้นเริ่มต้น แล้วเลือกโหนดต้นไม้เริ่มต้น
ซึ่งจะเปิดหน้าเริ่มต้น ระบบจะเลือกหน้าเริ่มต้นโดยอัตโนมัติในส่วนแถบด้านข้าง สร้าง > หน้าเว็บ
- ในส่วนเริ่ม > เส้นทาง ให้คลิกIntent ต้อนรับเริ่มต้น
Intent จะจัดหมวดหมู่ความตั้งใจของผู้ใช้ปลายทางสำหรับการสนทนา 1 เทิร์น ใน Dialogflow CX เจตนาอาจเป็นส่วนหนึ่งของตัวแฮนเดิลสถานะเพื่อกำหนดเส้นทางหน้าเว็บที่ใช้งานอยู่หรือการดำเนินการสำเร็จรูปถัดไป
- นำรายการสิ่งที่ตัวแทนพูดทั้งหมดออก แล้วเพิ่มข้อความใหม่นี้
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?
นอกจากนี้ เรายังต้องการปุ่มตอบกลับด่วน / ชิปคำแนะนำเพื่อปรับปรุงการสนทนาให้มีประสิทธิภาพยิ่งขึ้น
- คลิกเพิ่มตัวเลือกกล่องโต้ตอบ > เพย์โหลดที่กำหนดเอง และใช้ข้อมูลโค้ดด้านล่าง
- ใช้ข้อมูลโค้ดด้านล่างเป็นเพย์โหลดที่กำหนดเอง แล้วกดบันทึก
อ่านเพิ่มเติมเกี่ยวกับเพย์โหลดที่กําหนดเองได้ในเอกสารประกอบ
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- ไปทดสอบ Intent ต้อนรับในโปรแกรมจำลองได้เลย
คุณอาจสงสัยว่าเหตุใดจึงไม่เห็นเนื้อหาที่เป็นริชมีเดีย เนื่องจากเนื้อหาอย่างละเอียด เช่น ชิปคำแนะนำ ขึ้นอยู่กับการผสานรวม ขั้นตอนต่อไปนี้ต้องใช้บัญชีสําหรับการเรียกเก็บเงิน แต่คุณข้ามขั้นตอนเหล่านี้ได้หากไม่มีบัญชี
- ในแถบด้านข้างทางซ้าย ให้คลิกจัดการ > การผสานรวม
- เลือก Dialogflow Messenger แล้วคลิกเชื่อมต่อ
- คลิกเปิดใช้ในป๊อปอัป
ป๊อปอัปอีกรายการจะปรากฏขึ้น ซึ่งคราวนี้จะมีโค้ด JavaScript สำหรับการผสานรวมที่คุณสามารถวางในเว็บไซต์เพื่อผสานรวมคอมโพเนนต์ Dialogflow Messenger ในเว็บไซต์ เนื่องจากเรายังไม่มีเว็บไซต์ เราจะทดสอบตัวแทนเสมือนในเครื่องมือโดยตรง
- คลิกลิงก์ลองเลย
- คลิกไอคอนแชทบ็อตที่ด้านขวาล่างเพื่อเปิดหน้าต่างแชท เขียน
Hello
เพื่อเริ่มการสนทนา
ขณะนี้เมื่อคุณคลิกชิปคำแนะนำ ตัวแทนเสมือนจะไม่เข้าใจสิ่งที่คุณหมายถึง เนื่องจากตัวแทนเสมือนของเรายังไม่ได้สลับระหว่างสถานะต่างๆ ซึ่งทำได้ใน Dialogflow CX ด้วย Pages มาทําการทดสอบต่อกันเลย ก่อนอื่นเราจะสร้างเอนทิตีและIntent บางส่วน
4. ประเภทเอนทิตี
ประเภทเอนทิตีใช้เพื่อควบคุมวิธีดึงข้อมูลจากอินพุตของผู้ใช้ปลายทาง ประเภทเอนทิตีของ Dialogflow CX คล้ายกับประเภทเอนทิตีของ Dialogflow ES มาก Dialogflow มีเอนทิตีของระบบที่กำหนดไว้ล่วงหน้าซึ่งจับคู่กับข้อมูลประเภทต่างๆ ทั่วไปได้ เช่น อาจมีเอนทิตีของระบบสำหรับการจับคู่วันที่ เวลา สี อีเมล และอื่นๆ นอกจากนี้ คุณยังสร้างเอนทิตีที่กําหนดเองเพื่อจับคู่ข้อมูลที่กําหนดเองได้ด้วย
มาเริ่มกันด้วยการเตรียมเอนทิตีที่กำหนดเองทั้งหมดก่อนที่จะออกแบบหน้าเว็บในขั้นตอนต่างๆ เราจะสร้างเอนทิตีต่อไปนี้
การสร้างเอนทิตี
มาสร้างเอนทิตีศิลปินกัน
- คลิกจัดการ > ประเภทเอนทิตี
- คลิก + สร้าง
- ชื่อที่แสดง:
Artist
- เอนทิตี
The Google Dolls
(ที่มีคำพ้องความหมาย:Google Dolls
)The Goo Fighters
(ที่มีคำพ้องความหมาย:Goo Fighters
)G's N' Roses
(ที่มีคำพ้องความหมาย:Gs and Roses
)Alice Googler
- คลิกตัวเลือกขั้นสูงแล้วเลือกการจับคู่แบบใกล้เคียง (หากคุณสะกดชื่อวงไม่ถูกต้อง ระบบอาจยังคงจับคู่ชื่อนั้นกับเอนทิตีที่ถูกต้อง)
- ในตัวเลือกขั้นสูง ให้เลือกปกปิดในบันทึกด้วย (หากคุณสะกดชื่อวงผิด ระบบจะแก้ไขชื่อในบันทึก)
- คลิกบันทึก
นอกจากนี้ เรายังต้องการเอนทิตีสำหรับสินค้าMerchด้วย
- คลิกจัดการ > ประเภทเอนทิตี
- คลิก + สร้าง
- ชื่อที่แสดง:
Merch
- เอนทิตี
T-shirt
Longsleeve
(ที่มีคำพ้องความหมาย:Longsleeve shirt
)Tour Movie
Digital Album
(มีคำพ้องความหมาย:MP3 Album
,MP3
)CD
(มีคำพ้องความหมายDisc
,Physical CD
)
- คลิกบันทึก
นอกจากนี้ เรายังต้องการเอนทิตีสำหรับอัลบั้มด้วย
- คลิกจัดการ > ประเภทเอนทิตี
- คลิก + สร้าง
- ชื่อที่แสดง:
Album
- เอนทิตี
Live
Greatest Hits
(ที่มีคำพ้องความหมาย:Hits
)
- คลิกบันทึก
นอกจากนี้ เราจะต้องมีเอนทิตีสำหรับขนาดเสื้อผ้าด้วย
- คลิกจัดการ > ประเภทเอนทิตี
- คลิก + สร้าง
- ชื่อที่แสดง:
ShirtSize
- เอนทิตี
XS
(ที่มีคำพ้องความหมาย:Extra Small
)S
(ที่มีคำพ้องความหมาย:Small
)M
(ที่มีคำพ้องความหมาย:Medium
)L
(ที่มีคำพ้องความหมาย:Large
)XL
(ที่มีคำพ้องความหมาย:Extra Large
)2XL
(ที่มีคำพ้องความหมาย:Extra Extra Large
)3XL
- คลิกบันทึก
และเอนทิตี้สำหรับหมายเลขคำสั่งซื้อ ซึ่งโดยปกติแล้วจะเป็นตัวอักษรและตัวเลขคละกัน 4 หลักและตัวเลข 3 หลัก (เช่น ABCD123)
- คลิกจัดการ > ประเภทเอนทิตี
- คลิก + สร้าง
- ชื่อที่แสดง:
OrderNumber
- เอนทิตีนิพจน์ทั่วไป
- เอนทิตี: [A-Z]{4}[0-9]{3}
- คลิกบันทึก
การกําหนดค่าเอนทิตีควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้
@ศิลปิน:
@Merch:
@อัลบั้ม:
@ShirtSize:
@OrderNumber:
เมื่อเตรียมเอนทิตีที่กำหนดเองแล้ว เราจะเตรียม Intent ได้ มาทําการทดสอบต่อกันเลย
5. Intent
Intent จะจัดหมวดหมู่ความตั้งใจของผู้ใช้ปลายทางสำหรับการสนทนา 1 เทิร์น การดำเนินการเหล่านี้ได้รับการลดความซับซ้อนอย่างมากใน Dialogflow CX และไม่ใช่องค์ประกอบพื้นฐานในการควบคุมแบบการสนทนาอีกต่อไป Dialogflow CX ใช้ Intent เพื่อจับคู่กับสิ่งที่ผู้ใช้พูดเท่านั้น ใน Dialogflow ES คุณต้องเชื่อมโยงทุกอย่างกับ Intent (พารามิเตอร์ เหตุการณ์ การตอบสนอง ฯลฯ) Intent ใน Dialogflow CX มีเฉพาะวลีที่ใช้ฝึกเท่านั้น จึงนํามาใช้ซ้ำได้ และไม่ควบคุมการสนทนาอีกต่อไป ดังนั้น กระบวนการสร้าง Intent จะตรงไปตรงมาดังนี้
วลีที่ใช้ฝึกใน Intent สามารถใช้เอนทิตีเพื่อดึงข้อมูล "ตัวแปร" ด้วยเหตุนี้ การสร้างประเภทเอนทิตีล่วงหน้าจึงเป็นแนวทางปฏิบัติแนะนำ ซึ่งเราได้ทําในหน้าก่อนหน้าของขั้นตอนการทํางานในแท็บทดลอง
การสร้าง Intent
มาเริ่มกันด้วยการเตรียม Intent ทั้งหมดก่อนที่จะออกแบบหน้าเว็บเป็นขั้นตอน
- คลิกจัดการ > Intent
- คลิก + สร้าง
ใช้รายละเอียดต่อไปนี้
- ชื่อที่แสดง
redirect.artists.overview
- คำอธิบาย
Artists overview: The bands supported by the label
เลื่อนลงและสร้างวลีสำหรับการฝึกต่อไปนี้
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
- คลิกบันทึก
- มาสร้าง Intent อื่นๆ ทั้งหมดกันต่อเลย ใช้จินตนาการของคุณเองเพื่อสร้างวลีสำหรับการฝึกเพิ่มเติม แนวทางปฏิบัติแนะนำคือควรมีวลีที่ใช้ฝึกอย่างน้อย 10 วลีต่อความตั้งใจ 1 รายการเพื่อให้ครอบคลุมวิธีที่ผู้ใช้อาจเรียกใช้ความตั้งใจนั้น สําหรับวัตถุประสงค์ของห้องทดลองนี้ การมีจำนวนน้อยกว่าก็น่าจะใช้ได้เช่นกัน
สิ่งที่ควรตรวจสอบมีดังนี้
- โปรดทราบว่าขณะที่คุณป้อนวลีสำหรับการฝึก Dialogflow CX จะกำกับเนื้อหาของเอนทิตีโดยอัตโนมัติ หากไม่แสดง คุณอาจต้องอัปเดตเอนทิตี (โดยการเพิ่มคำพ้องความหมาย) หรือกำกับเนื้อหาวลีที่ใช้ฝึกด้วยตนเอง
- วลีการฝึกที่สั้นลง: ระบบ NLU ของ Dialogflow สามารถใช้กับวลีการฝึกที่สั้นลงได้ด้วย และเราได้แสดงตัวอย่าง 2 รายการไว้ที่นี่
- การฝึกมากเกินไป: วลีที่ใช้ฝึก Intent มากเกินไปอาจทําให้ระบบฝึกมากเกินไปและได้ผลลัพธ์ที่ไม่ต้องการ แนวทางปฏิบัติแนะนำคือใช้การทดสอบแบบซ้ำและแบบเพิ่ม และเพิ่มวลีสำหรับการฝึกในกรณีที่ไม่มีความตั้งใจที่ตรงกัน
ชื่อที่แสดง | วลีสำหรับการฝึก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เมื่อเตรียมองค์ประกอบที่นํามาใช้ซ้ำได้ (ขั้นตอน เอนทิตี และความตั้งใจ) แล้ว เราก็จะรวมองค์ประกอบเหล่านี้เข้าด้วยกันได้โดยการสร้างหน้าเว็บและตัวแฮนเดิลสถานะ
6. หน้าเว็บและตัวแฮนเดิลสถานะ
การสนทนา Dialogflow CX (เซสชัน) สามารถอธิบายและแสดงเป็นภาพเป็นสถานะเครื่องจักรแบบจำกัด ยกตัวอย่างเช่น เครื่องจำหน่ายสินค้าอัตโนมัติอาจจำลองเป็นสถานะเครื่องจักรแบบจำกัด โมเดลนี้มีสถานะต่างๆ ดังนี้ รอเหรียญ เลือกลูกอม มอบลูกอม และเมื่อมีชุดอินพุต ระบบจะย้ายไปมาระหว่างสถานะเหล่านั้น เช่น การวางเหรียญจะย้ายเครื่องจำหน่ายสินค้าจาก "รอเหรียญ" ไปยัง "เลือกขนม" หน้าเป็นวิธีที่เราสามารถจำลองสถานะเหล่านี้สำหรับตัวแทนเสมือนของ Dialogflow CX
เมื่อผู้ใช้ปลายทางโต้ตอบกับ Dialogflow CX ในการสนทนา การสนทนาจะเปลี่ยนไปจากหน้าหนึ่งไปยังอีกหน้าหนึ่ง ดังนั้น ณ เวลาหนึ่งๆ จะมีหน้าปัจจุบันเพียงหน้าเดียวเท่านั้น หน้าปัจจุบันจะถือว่ามีการใช้งานอยู่ และโฟลว์ที่เชื่อมโยงกับหน้านั้นๆ จะถือว่ามีการใช้งานอยู่ด้วย
สําหรับขั้นตอนแต่ละรายการ คุณจะกําหนดหน้าเว็บหลายหน้า โดยที่หน้าเว็บที่รวมกันสามารถจัดการการสนทนาที่สมบูรณ์เกี่ยวกับหัวข้อที่ออกแบบมาสำหรับขั้นตอนนั้น แต่ละขั้นตอนจะมีหน้าเริ่มต้นพิเศษ เมื่อเริ่มใช้งานขั้นตอนแรก หน้าแรกจะกลายเป็นหน้าปัจจุบัน ในแต่ละรอบการสนทนา หน้าปัจจุบันจะยังคงเดิมหรือเปลี่ยนไปเป็นหน้าอื่น แนวคิดนี้จะช่วยให้คุณสร้างตัวแทนที่ใหญ่ขึ้นซึ่งมีหน้าเว็บหลายหน้าและบทสนทนาหลายรอบได้
หน้าเว็บมีการตอบสนอง (กล่องโต้ตอบแบบคงที่และ/หรือ Webhook), พารามิเตอร์ และตัวแฮนเดิลสถานะ การควบคุมการสนทนาเกิดขึ้นผ่านตัวแฮนเดิลสถานะ ซึ่งช่วยให้คุณสร้างเส้นทางการเปลี่ยนผ่านต่างๆ เพื่อเปลี่ยนไปใช้หน้า Dialogflow CX หน้าอื่น รวมถึงทำให้เป็นแบบมีเงื่อนไข (สำหรับการแยกการสนทนา)
สถานะของการสนทนาจะควบคุมโดยการจัดการการเปลี่ยนระหว่างหน้าเว็บด้วยเส้นทาง 3 ประเภท ได้แก่
- เส้นทาง Intent: กรณีที่ควรจับคู่ Intent (เช่น การเปลี่ยนหน้าเว็บตามสิ่งที่ผู้ใช้ปลายทางพูด) (เส้นสีน้ำเงินในแผนภาพ)
- เส้นทางเงื่อนไข: กรณีที่ควรตรวจสอบเงื่อนไข (เช่น การเปลี่ยนหน้าเว็บตามพารามิเตอร์ที่เก็บไว้ในเซสชัน) (เส้นสีส้มในแผนภาพภาพ)
- ตัวแฮนเดิลเหตุการณ์: เมื่อควรจัดการเหตุการณ์สำรองบางอย่าง (เช่น การจัดการกับอินพุตที่ไม่มีการจับคู่ เพื่อไม่ให้ผู้ใช้ปลายทางสับสนระหว่างเส้นทาง Intent หรือเงื่อนไข) (เส้นสีเขียวในแผนภาพภาพ)
วลีการสนทนา (เช่น เนื้อหาหรือการตอบกลับผู้ใช้) กำหนดโดยการดำเนินการซึ่งอาจเป็นแบบคงที่หรือแบบไดนามิกก็ได้ ดังนี้
- การตอบสนองแบบคงที่: เมื่อมีการระบุคำตอบแบบคงที่
- การตอบสนองแบบไดนามิก: เมื่อมีการเรียกใช้ Webhook การตอบสนองสำหรับการตอบกลับแบบไดนามิก
สําหรับบอทค้าปลีก เราจะสร้างเส้นทางตามเจตนาและระบุคําตอบการดําเนินการตามคําขอแบบคงที่ ซึ่งจะแสดงต่อผู้ใช้ทันทีที่หน้าเว็บเปิดใช้งาน หลังจากนั้น เราจะสร้างพารามิเตอร์ที่มีเส้นทางเงื่อนไขเพื่อรวบรวมข้อมูลที่จำเป็นสำหรับทำการสั่งซื้อสินค้า
เส้นทางความตั้งใจของหน้าเว็บ
การสร้างหน้าในขั้นตอนเริ่มต้นเริ่มต้น
แผนภาพขั้นตอนเริ่มต้นเริ่มต้นมีดังนี้
มาคลิกลิงก์นี้ไปด้วยกัน
- คลิกสร้าง > เริ่มต้นขั้นตอนเริ่มต้น
- คลิกหน้าแรก
- คลิกไอคอน + ข้างเส้นทาง
- เพิ่ม redirect.artists.overview
- เลื่อนลงไปที่การเปลี่ยนผ่าน แล้วเปลี่ยนไปใช้ขั้นตอนแคตตาล็อก
- คลิกบันทึก
- ทำตามขั้นตอนข้างต้นซ้ำสำหรับ
redirect.product.overview
และอีก 11 แถวจากตารางนี้
หน้าเว็บ (ใน FLow) | เส้นทาง > Intent | เส้นทาง > การเปลี่ยนเป็น |
เริ่ม |
| - |
เริ่ม |
| ขั้นตอน: แคตตาล็อก |
เริ่ม |
| ขั้นตอน: แคตตาล็อก |
เริ่ม |
| ขั้นตอน: แคตตาล็อก |
เริ่ม |
| ขั้นตอน: แคตตาล็อก |
เริ่ม |
| ขั้นตอน: แคตตาล็อก |
เริ่ม |
| ขั้นตอน: แคตตาล็อก |
เริ่ม |
| ขั้นตอน: การดูแลลูกค้า |
เริ่ม |
| ขั้นตอน: การดูแลลูกค้า |
เริ่ม |
| ขั้นตอน: การดูแลลูกค้า |
เริ่ม |
| ขั้นตอน: คำสั่งซื้อของฉัน |
เริ่ม |
| ขั้นตอน: คำสั่งซื้อของฉัน |
เริ่ม |
| ขั้นตอน: คำสั่งซื้อของฉัน |
เริ่ม |
| หน้าเว็บ: สิ้นสุดเซสชัน |
ขั้นตอนการเริ่มต้นเริ่มต้นจะทํางานเหมือนเมนูตัวเลือกเมื่อโทรหาคอลเซ็นเตอร์ อย่างไรก็ตาม ในกรณีของตัวแทนเสมือนนี้ จะมีการเทรนด้วยภาษาที่เป็นธรรมชาติ โดยมีวลีสำหรับฝึกใน 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?"
มาเริ่มเชื่อมต่อหน้าเว็บกันก่อน
- คลิกสร้าง > แคตตาล็อก
- คลิกหน้าแรก
- คลิกไอคอน + ข้างเส้นทาง
- เพิ่ม redirect.artists.overview
- เลื่อนลงไปที่ทรานซิชัน เลือกหน้า แล้วเลือก + หน้าใหม่
- ใช้ชื่อหน้าเว็บ:
Artist Overview
แล้วกดบันทึก
มาดำเนินการตามขั้นตอนที่เหลือกัน
- คุณทำตามขั้นตอนก่อนหน้าซ้ำได้โดยใช้หน้าเว็บ เจตนา และการตอบสนองต่อไปนี้ ควบคุมตารางนี้ หน้าเว็บคือหน้าเว็บที่คุณเลือกในขั้นตอน เส้นทาง > เปลี่ยนเป็นคือขั้นตอนหรือหน้าเว็บใหม่ที่คุณจะต้องสร้างและเปลี่ยนไปใช้
หน้าเว็บ (ใน FLow) | เส้นทาง > Intent | เส้นทาง > การเปลี่ยนเป็น |
เริ่มต้นแคตตาล็อก |
| ภาพรวมศิลปิน |
เริ่มต้นแคตตาล็อก |
| ผลิตภัณฑ์ |
เริ่มต้นแคตตาล็อก |
| ภาพรวมของผลิตภัณฑ์ |
เริ่มต้นแคตตาล็อก |
| ภาพรวมของผลิตภัณฑ์ |
เริ่มต้นแคตตาล็อก |
| เสื้อ |
เริ่มต้นแคตตาล็อก |
| เพลง |
เริ่มต้นแคตตาล็อก |
| สิ้นสุดเซสชัน |
เริ่มต้นแคตตาล็อก |
| สิ้นสุดขั้นตอน |
ภาพรวมศิลปิน |
| ภาพรวมของผลิตภัณฑ์ |
มาดำเนินการต่อและเพิ่มการจำหน่ายแบบคงที่กัน
- ในขั้นตอนแคตตาล็อก ให้คลิกหน้าภาพรวมศิลปิน
- คลิกแก้ไขการจำหน่ายในส่วนการจำหน่ายสินค้า
- ใช้ผลการค้นหาแบบคงที่ต่อไปนี้ (สิ่งที่ตัวแทนพูด)
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- คลิกบันทึก
- ในขั้นตอนการสร้างแคตตาล็อก ให้คลิกหน้าภาพรวมผลิตภัณฑ์
- คลิกแก้ไขการจำหน่ายในส่วนการจำหน่ายสินค้า
- ใช้การตอบสนองแบบคงที่ต่อไปนี้ (สิ่งที่ตัวแทนพูด)
We sell shirts, music or the tour movie.
- คลิกบันทึก
พารามิเตอร์หน้า
พารามิเตอร์ใช้เพื่อบันทึกและอ้างอิงค่าที่ผู้ใช้ปลายทางระบุระหว่างเซสชัน พารามิเตอร์แต่ละรายการจะมีชื่อและประเภทเอนทิตี @Artist
และ @Merch
คือพารามิเตอร์ขั้นต่ำที่เราจําเป็นต้องรวบรวมเพื่อสร้างคําสั่งซื้อสินค้า สำหรับเสื้อยืดหรือเสื้อแขนยาว คุณจะต้องรวบรวม @ShirtSize
ด้วย และในกรณีที่ต้องการสั่งเพลง คุณจะต้องมีชื่อ @Carrier
และ @Album
ด้วย
พารามิเตอร์เหล่านั้นจะต้องทําเครื่องหมายเป็นต้องระบุ และเมื่อจำเป็นต้องใช้ คุณควรระบุพรอมต์ที่กำหนดเองเพื่อจดจำผู้ใช้ปลายทางเพื่อให้ตอบคำถามที่ถูกต้องเพื่อให้รวบรวมพารามิเตอร์เหล่านี้ได้ Dialogflow CX มีกลไกบางอย่างที่จะช่วยคุณในเรื่องนี้
เช่น คุณอาจระบุข้อความการสั่งซื้อแบบคงที่ที่กำหนดเองในส่วนพารามิเตอร์ หากจำเป็นต้องมีพารามิเตอร์ ระบบจะแสดงการปฏิบัติตามข้อกำหนดของพารามิเตอร์เหล่านี้ ระบบจะเพิ่มข้อความตอบกลับเหล่านี้ลงในคิวการตอบกลับ ในระหว่างที่ตัวแทนเป็นผู้ดำเนินการ คุณสามารถเรียกใช้การตอบสนองหลายรายการได้ (และบางครั้งก็ควรทำเช่นนั้น) ซึ่งแต่ละรายการอาจสร้างข้อความตอบกลับ Dialogflow จะเก็บคำตอบเหล่านี้ไว้ในคิวคำตอบ หากต้องการอ่านเพิ่มเติมเกี่ยวกับวงจรชีวิตของหน้าเว็บและลําดับที่จะเพิ่มการตอบสนองเหล่านี้ลงในคิวการตอบกลับ โปรดอ่านเอกสารหน้า Dialogflow CX
การสร้างพารามิเตอร์ในหน้าภาพรวมศิลปิน
มากำหนดพารามิเตอร์หน้าเว็บกัน
- ในขั้นตอนแคตตาล็อก ให้คลิกหน้าภาพรวมศิลปิน
- คลิก + ในบล็อกพารามิเตอร์ เพิ่มพารามิเตอร์ artist
- ชื่อที่แสดง:
artist
- ประเภทนิติบุคคล:
@Artist
- ต้องระบุ: เลือก
- ปกปิดในบันทึก: เลือก
- ตอนนี้เราจะเพิ่มข้อความการตอบสนองพารามิเตอร์ที่กำหนดเอง หากตัวแทนเสมือนยังไม่ได้รวบรวมพารามิเตอร์ artist ผู้ใช้ปลายทางจะได้รับคำตอบของตัวแทนนี้ซึ่งเพิ่มลงในคิวคำตอบ
From which of these artists would you like to order merchandise?
- เพิ่มตัวเลือกกล่องโต้ตอบที่ 2 ซึ่งมีชิปคำแนะนำที่สมบูรณ์ คลิกเพิ่มตัวเลือกการสนทนา และใช้โค้ดนี้ (ใน JSON)
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
คุณสามารถจัดการพรอมต์การตอบสนองสำรองที่แตกต่างกันตามจำนวนครั้งที่ผู้ใช้ปลายทางพยายามตอบคำถามเหล่านี้ ซึ่งทำได้โดยใช้ตัวแฮนเดิลเหตุการณ์พารามิเตอร์ ตัวแฮนเดิลเหตุการณ์ในตัวมีให้เลือกหลายรายการ เช่น พารามิเตอร์ไม่ถูกต้อง คําพูดยาวเกินไป ไม่มีอินพุต ไม่มีอินพุตในการพยายามครั้งที่ 1 การพยายามครั้งที่ 2 หรือไม่ตรงกัน ความแตกต่างระหว่าง "ไม่มีอินพุต" กับ "ไม่ตรงกัน" คือ "ไม่มีอินพุต" หมายความว่าผู้ใช้ไม่ได้ให้คำตอบ แต่ "ไม่ตรงกัน" หมายความว่าผู้ใช้ให้คำตอบแต่ Dialogflow CX จับคู่ความตั้งใจนี้กับหน้าเว็บไม่ได้
- เลื่อนลงไปที่ส่วนเครื่องจัดการเหตุการณ์ "แสดงข้อความแจ้งอีกครั้ง"
- คลิกเพิ่มตัวแฮนเดิลเหตุการณ์ แล้วเลือกเหตุการณ์
No-match default
- ใช้การตอบสนองด้วยข้อความแบบคงที่ของเหตุการณ์ต่อไปนี้
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?
- คลิกบันทึก
- คลิกเพิ่มตัวแฮนเดิลเหตุการณ์ แล้วเลือกเหตุการณ์
No-input default
- ใช้การตอบสนองด้วยข้อความแบบคงที่ของเหตุการณ์ต่อไปนี้
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?
- คลิกบันทึก
เส้นทางเงื่อนไขหน้าเว็บ
พารามิเตอร์มีประสิทธิภาพมากเมื่อใช้ร่วมกับเส้นทางแบบมีเงื่อนไขของหน้าเว็บ เมื่อเงื่อนไขประเมินเป็น "จริง" ระบบจะเรียกใช้เส้นทางหน้าเว็บที่เกี่ยวข้อง เงื่อนไขอาจเป็นพารามิเตอร์เท่ากับค่าที่เฉพาะเจาะจง หรือพารามิเตอร์ต้องไม่ขาดหายไป หรือแบบฟอร์มที่กรอกข้อมูลครบถ้วนแล้ว และอื่นๆ อีกมากมาย ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์และเงื่อนไขได้ในเอกสารประกอบของ Dialogflow CX
สําหรับตัวแทนเสมือนค้าปลีก เราจะต้องรวบรวมลําดับพารามิเตอร์ ดังนั้นเราจะต้องสร้างเงื่อนไขเพื่อตรวจสอบว่า "แบบฟอร์ม" เสร็จสมบูรณ์แล้วหรือยัง แบบฟอร์มคือรายการพารามิเตอร์ที่ควรรวบรวมจากผู้ใช้ปลายทางสําหรับหน้าเว็บ ตัวแทนเสมือนจะโต้ตอบกับผู้ใช้ปลายทางหลายรอบจนกว่าจะรวบรวมพารามิเตอร์แบบฟอร์มที่จําเป็นทั้งหมด ซึ่งเรียกอีกอย่างว่าพารามิเตอร์หน้าเว็บ
Dialogflow CX จะตั้งค่าพารามิเตอร์ที่ผู้ใช้ปลายทางระบุระหว่างการกรอกแบบฟอร์มโดยอัตโนมัติ หากต้องการตรวจสอบว่ากรอกแบบฟอร์มของหน้าปัจจุบันให้เสร็จสมบูรณ์แล้วหรือยัง ให้ใช้เงื่อนไขต่อไปนี้ $page.params.status = "FINAL"
การสร้างเส้นทางแบบมีเงื่อนไขในหน้าภาพรวมศิลปิน
มาสร้างเส้นทางแบบมีเงื่อนไขกัน ซึ่งจะเปลี่ยนไปที่หน้าถัดไปเมื่อทราบศิลปินแล้ว
- ในหน้าภาพรวมศิลปิน ให้คลิกไอคอน + ในส่วนเส้นทาง
- เลื่อนลงไปที่ส่วนสภาพ
- เลือกอย่างน้อย 1 รายการ (หรือ)
- ต่อไป เราจะเขียนนิพจน์ที่
- พารามิเตอร์:
$page.params.status
- โอเปอเรเตอร์:
=
- ค่า:
"FINAL"
- ตอนนี้เราจะสร้างข้อความการตอบสนองแบบคงที่ที่เฉพาะเจาะจงในเส้นทางเพื่อยืนยันตัวเลือกของผู้ใช้ปลายทาง เลื่อนลงไปที่บล็อกการจำหน่าย แล้วเขียนข้อความการจำหน่ายต่อไปนี้
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- เมื่อเงื่อนไขเป็นจริง คุณควรเปลี่ยนไปที่หน้าภาพรวมผลิตภัณฑ์ เลื่อนลงไปที่ส่วนการเปลี่ยนผ่าน และใช้หน้าต่อไปนี้
Product Overview
- คลิกบันทึก
การสร้างเส้นทางในหน้าภาพรวมผลิตภัณฑ์
เมื่อทราบวิธีสร้างพารามิเตอร์และเส้นทางแบบมีเงื่อนไขแล้ว เรามาสร้างพารามิเตอร์เพิ่มเติมสําหรับหน้าต่อไปนี้กัน
ภาพรวมของผลิตภัณฑ์
- สร้างพารามิเตอร์
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"
}
]
]
}
- สร้างพารามิเตอร์
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"
}
]
}
]
]
}
- สร้างเส้นทางที่จะเปลี่ยนไปยังหน้าผลิตภัณฑ์เมื่อมีการระบุ
artist
และมีการแสดงรายการmerch
- เงื่อนไข:
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.artist != null
- นิพจน์:
$session.params.merch != null
- การดำเนินการตามคำสั่งซื้อ:
Alright! $session.params.merch of $session.params.artist, let's go!
- การเปลี่ยน: หน้าเว็บ:
Product
- สร้างเส้นทางสำหรับกรณีที่ผู้ใช้พูดว่า "เสื้อ"
- Intent: redirect.shirts
- การเปลี่ยน: หน้าเว็บ:
Shirts
- สร้างเส้นทางสำหรับกรณีที่ผู้ใช้พูดว่า "เพลง"
- Intent: redirect.music
- การเปลี่ยน: หน้าเว็บ:
Music
- สร้างเส้นทางสำหรับกรณีที่ผู้ใช้ขอข้อมูลราคา
- Intent: redirect.price
- การเปลี่ยน: สร้างหน้าใหม่:
Price
เมื่อกําหนดค่าข้างต้นแล้ว คุณจะเห็นภาพซึ่งคล้ายกับภาพด้านล่าง โปรดทราบว่าเส้นทางของ Intent เป็นสีน้ำเงินในแผนภาพ และเส้นทางของเงื่อนไขเป็นสีส้ม ตัวแฮนเดิลเหตุการณ์จะเป็นสีเขียว (แม้ว่าจะไม่แสดงในภาพ) และเมื่อเปลี่ยนเส้นทางหลายประเภทไปยังหน้าเว็บ เส้นจะเป็นสีเทา
ตอนนี้คุณได้เรียนรู้วิธีสร้างโฟลว์ เอนทิตี Intent และหน้าที่มีตัวแฮนเดิลสถานะ เช่น เส้นทาง Intent และเส้นทางแบบมีเงื่อนไขตามพารามิเตอร์ ในภายหลังในเซสชันนี้ เราจะใช้การแยกย่อยแบบมีเงื่อนไขในการดำเนินการเพื่อแสดงบทสนทนาที่แตกต่างกันตามอินพุต
คุณใช้การกําหนดค่าต่อไปนี้เพื่อทําให้ผู้ช่วยเสมือนจริงของเราเสร็จสมบูรณ์ได้
หน้าเสื้อ
- สร้างการกําหนดค่าต่อไปนี้ในหน้าเสื้อ
- การดำเนินการตามรายการ:
Do you want a longsleeve or a t-shirt?
- เพย์โหลดที่กำหนดเองสำหรับการนำส่งข้อมูล
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- สร้างเส้นทางความตั้งใจ:
redirect.price
ที่มีการเปลี่ยนไปยังหน้าPrice
- สร้างพารามิเตอร์ต่อไปนี้
- พารามิเตอร์:
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"
}
]
}
]
]
}
- คลิกการเติมเต็มข้อมูล แล้วเลื่อนลงไปที่ค่าพารามิเตอร์ที่กำหนดล่วงหน้า ทุกครั้งที่หน้าเสื้อทำงานอยู่ ระบบจะตั้งค่าพารามิเตอร์หมวดหมู่เป็น shirts
พารามิเตอร์ | ค่า |
|
|
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎอย่างน้อย 1 ข้อ (OR)
- นิพจน์:
$session.params.merch = "T-shirt"
- นิพจน์:
$session.params.merch = "Longsleeve"
- การเปลี่ยนไปยังหน้าใหม่:
Shirt Size
หน้าราคา
เนื่องจากข้อความสำหรับราคาจะขึ้นอยู่กับสินค้าหรือหมวดหมู่สินค้า (เพลงหรือเสื้อ) ที่เลือก เราจะแก้ไขส่วนนี้ในภายหลังในเวอร์ชันทดลอง ตอนนี้การป้อนตัวยึดตําแหน่งก็เพียงพอแล้ว
- สร้างการกําหนดค่าต่อไปนี้ในหน้าราคา
- การดำเนินการตามรายการ:
PRICE TODO
เนื่องจากคุณสามารถขอราคาได้จากที่ต่างๆ ในการสนทนา ฟีเจอร์นี้จึงควรให้คำตอบและโอนคุณกลับไปยังส่วนก่อนหน้าของบทสนทนาเสมอเพื่อสั่งซื้อต่อ แผนภูมิต้นไม้ของบทสนทนามี 5 จุดที่คุณแยกย่อยเพื่อดูข้อมูลราคาได้ (เสื้อ, ขนาดเสื้อ, เพลง, ผู้ให้บริการ และโดยตรงผ่าน Intent Route) เราจึงต้องใช้เส้นทางแบบมีเงื่อนไขเพื่อย้ายกลับดังนี้
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.category = "shirts"
- นิพจน์:
$session.params.merch = "null"
- การเปลี่ยนไปยังหน้าใหม่:
Shirts
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.category = "shirts"
- นิพจน์:
$session.params.size = "null"
- การเปลี่ยนไปยังหน้าใหม่:
Shirt Size
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.category = "music"
- นิพจน์:
$session.params.album = "null"
- การเปลี่ยนไปยังหน้าใหม่:
Music
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.category = "music"
- นิพจน์:
$session.params.merch = "null"
- การเปลี่ยนไปยังหน้าใหม่:
Carrier
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.category = "null"
- การเปลี่ยนไปยังหน้าใหม่:
Product Overview
หน้าขนาดเสื้อ:
- สร้างการกําหนดค่าต่อไปนี้ในหน้าขนาดเสื้อ
- การดำเนินการตามรายการ:
What shirt size do you want?
- Payload ที่กำหนดเองสำหรับการนำส่งข้อมูล
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- สร้างเส้นทางความตั้งใจ:
redirect.price
ที่มีการเปลี่ยนไปยังหน้าPrice
- สร้างพารามิเตอร์ต่อไปนี้
- พารามิเตอร์:
shirtsize
- ประเภทเอนทิตี:@ShirtSize
-Required
,Redact In Log
- พารามิเตอร์ > Event Handler >
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"
}
]
}
]
]
}
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$page.params.shirtsize != "null"
- การเปลี่ยนไปยังหน้าเว็บ:
Product
หน้าเพลง
- สร้างการกําหนดค่าต่อไปนี้ในหน้าเพลง
- การดำเนินการตามรายการ:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- Payload ที่กำหนดเองสำหรับการนำส่งข้อมูล
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- สร้างเส้นทางความตั้งใจ:
redirect.price
ที่มีการเปลี่ยนไปยังหน้าเว็บ:Price
- สร้างพารามิเตอร์ต่อไปนี้
- พารามิเตอร์:
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"
}
]
}
]
]
}
- พารามิเตอร์ > Event Handler >
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"
}
]
}
]
]
}
- คลิกการตอบสนองของข้อมูล แล้วเลื่อนลงไปที่ค่าพารามิเตอร์ที่กำหนดล่วงหน้า ทุกครั้งที่หน้าเพลงทำงานอยู่ ระบบจะตั้งค่าพารามิเตอร์หมวดหมู่เป็น music
พารามิเตอร์ | ค่า |
|
|
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$page.params.album != "null"
- การเปลี่ยนไปยังหน้าเว็บ:
Carrier
หน้าผู้ให้บริการ:
- สร้างการกําหนดค่าต่อไปนี้ในหน้าผู้ให้บริการ
- การดำเนินการตามรายการ:
Do you want this album on CD or MP3?
- เพย์โหลดที่กำหนดเองสำหรับการนำส่งข้อมูล
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- สร้างเส้นทางความตั้งใจ:
redirect.price
ซึ่งเปลี่ยนเป็นหน้าPrice
- สร้างพารามิเตอร์ต่อไปนี้
- พารามิเตอร์:
merch
- ประเภทเอนทิตี:@Merch
-Required
,Redact In Log
- พารามิเตอร์ > Event Handler >
No-match default
- พารามิเตอร์ > การดําเนินการของ Event Handler:
Do you want a physical CD or the digital album?
- พารามิเตอร์ > การตอบสนองของตัวจัดการเหตุการณ์: เพย์โหลดที่กําหนดเอง
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- พารามิเตอร์ > Event Handler >
No-input default
- พารามิเตอร์ > การดําเนินการของ Event Handler:
I couldn't understand if you mean CD or MP3. Which one do you want?
- พารามิเตอร์ > การตอบสนองของตัวจัดการเหตุการณ์: เพย์โหลดที่กําหนดเอง
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$page.params.merch != "null"
- การเปลี่ยนไปยังหน้าเว็บ:
Product
หน้าผลิตภัณฑ์
- สร้างพารามิเตอร์ต่อไปนี้
ชื่อที่แสดงของพารามิเตอร์ | ประเภทเอนทิตีพารามิเตอร์ | การตรวจสอบ |
|
| ต้องระบุ ปกปิดในบันทึก |
|
| ต้องระบุ ปกปิดในบันทึก |
- พารามิเตอร์ 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.
- พารามิเตอร์ 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?
เส้นทางถัดไปจะเปลี่ยนเป็นหน้ายืนยันเมื่อทราบศิลปินแล้วและผู้ใช้เลือก "วิดีโอทัวร์"
- เพิ่มเส้นทางแบบมีเงื่อนไข
- ตรงกับกฎทั้งหมด (และ)
- นิพจน์:
$session.params.artist != null
- นิพจน์:
$session.params.merch = "Tour Movie"
- พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ >
price = 25
- การเปลี่ยนไปยังหน้าใหม่:
Confirmation
เส้นทางถัดไปจะเปลี่ยนไปเป็นหน้ายืนยันเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "เสื้อยืด" และเลือกขนาดเสื้อ
- เพิ่มเส้นทางแบบมีเงื่อนไข
- นิพจน์ที่กําหนดเอง:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ >
price = 25
- การเปลี่ยนไปยังหน้า:
Confirmation
เส้นทางถัดไปจะเปลี่ยนไปเป็นหน้ายืนยันเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "เสื้อแขนยาว" และเลือกขนาดเสื้อ
- เพิ่มเส้นทางแบบมีเงื่อนไข
- นิพจน์ที่กําหนดเอง:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ >
price = 30
- การเปลี่ยนไปยังหน้า:
Confirmation
เส้นทางถัดไปจะเปลี่ยนไปเป็นหน้ายืนยันเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "CD" รวมถึงเลือกชื่ออัลบั้มแล้ว
- เพิ่มเส้นทางแบบมีเงื่อนไข
- นิพจน์ที่กําหนดเอง:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ >
price = 15
- การเปลี่ยนไปยังหน้า:
Confirmation
เส้นทางถัดไปจะเปลี่ยนไปเป็นหน้ายืนยันเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "อัลบั้มดิจิทัล" และเลือกชื่ออัลบั้ม
- เพิ่มเส้นทางแบบมีเงื่อนไข
- นิพจน์ที่กําหนดเอง:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- พารามิเตอร์ที่กำหนดล่วงหน้า เพิ่มพารามิเตอร์ >
price = 10
- การเปลี่ยนไปยังหน้า:
Confirmation
ต่อไปเราจะสร้างเงื่อนไขขั้นสูงด้วยพรอมต์ที่ตรวจหาข้อมูลที่ขาดหายไป เส้นทางถัดไปจะเปลี่ยนกลับไปที่หน้าเพลงเมื่อทราบศิลปินแล้ว และผู้ใช้เลือก "CD" หรือ "อัลบั้มดิจิทัล" แต่ไม่ได้เลือกชื่ออัลบั้ม
- เพิ่มเส้นทางแบบมีเงื่อนไข
- นิพจน์ที่กําหนดเอง:
$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
และเส้นทางสุดท้ายจะเปลี่ยนเป็นหน้ายืนยันเมื่อทราบศิลปินแล้วและผู้ใช้เลือก "เสื้อยืด" หรือ "เสื้อแขนยาว" แต่ไม่ได้เลือกขนาดเสื้อยืด
- เพิ่มเส้นทางแบบมีเงื่อนไข
- นิพจน์ที่กําหนดเอง:
$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
- คลิกหน้าการยืนยัน
- คลิกแก้ไขการตอบสนอง > การตอบกลับของตัวแทน > ตัวเลือกเพิ่มบทสนทนา > การตอบกลับแบบมีเงื่อนไข
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
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd 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.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
- 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..."
}
]
}
]
]
}
- 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
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
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- 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.
- 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?
- 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?
- 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"
}
]
]
}
- 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"
}
]
]
}
- 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?
- 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?
- 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?
- 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?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- 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!
- 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.
- 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.
- Go to Manage > Intents and select the Default Negative Intent.
- 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
- 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
- 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:
- 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.
- 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.
- 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.
- 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
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- 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.
- 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 |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- 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
- สร้างเส้นทางความตั้งใจต่อไปนี้
- ความตั้งใจ:
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
- เลือกหน้าเริ่มต้น แล้วคลิก Intent
redirect.end
สร้างการจำหน่ายต่อไปนี้Thank you for contacting G-Records! Have a nice day!
- เลือกหน้าเริ่มต้น แล้วคลิก Intent
redirect.home
สร้างค่าพารามิเตอร์ที่กำหนดล่วงหน้าrestart = true
ยอดเยี่ยม! ตอนนี้เรามีแชทบอทของผู้ค้าปลีกในชีวิตจริงที่ใช้งานได้อย่างเต็มรูปแบบแล้ว ในบทถัดไป เราจะทดสอบประสิทธิภาพของตัวแทนเสมือน
9. ทดสอบตัวแทนเสมือน
คุณสามารถใช้เครื่องจำลองในตัวเพื่อทดสอบบทสนทนาของตัวแทนเสมือนได้ ข้อดีของการทดสอบขั้นตอนในเครื่องจำลองคือคุณจะเห็นภาพรวมที่ยอดเยี่ยมของขั้นตอน หน้าเว็บ พารามิเตอร์ และเหตุการณ์ (DTMF) ที่เครื่องจำลองรวบรวมขณะเดินผ่านขั้นตอน วิธีนี้ทําให้การทดสอบง่ายกว่าการทดสอบในการผสานรวมโดยตรง เนื่องจากระบบจะซ่อนข้อมูลประเภทดังกล่าวจากผู้ใช้ปลายทาง คุณยังสร้างเคสทดสอบ บันทึก และนําเคสทดสอบเหล่านั้นมาใช้ซ้ำได้ด้วย ซึ่งเหมาะสําหรับกรณีที่คุณต้องดูแลรักษาหรือแก้ไขขั้นตอนเมื่อเวลาผ่านไป และต้องการแน่ใจว่าการเปลี่ยนแปลงจะไม่ทําให้งานก่อนหน้านี้เสียหาย
นอกจากนี้ คุณยังส่งออกและนําเข้าชุดทดสอบที่สร้างไว้ก่อนหน้านี้ได้ด้วย โดยจัดเก็บการทดสอบไว้ใน Google Cloud Storage หรือในเครื่อง การส่งออกการทดสอบจะดาวน์โหลดไฟล์ Blob ดูข้อมูลเพิ่มเติมเกี่ยวกับเครื่องจำลองและชุดทดสอบได้ที่เอกสารเครื่องจำลอง / ชุดทดสอบ
ก่อนสร้างเฟรมเวิร์กการทดสอบ มาดูกันว่าเรามาสรุปข้อมูลที่เหลือของตัวแทนเสมือนกันก่อน
การสร้างขั้นตอนการดูแลลูกค้า
- ไปที่ขั้นตอนการดูแลลูกค้า แล้วสร้างการเปลี่ยนความตั้งใจต่อไปนี้
หน้าเว็บ (ใน FLow) | เส้นทาง > Intent | เส้นทาง > การเปลี่ยนเป็น |
Customer Care Start |
| การจัดส่ง |
Customer Care Start |
| เงินคืน |
Customer Care Start |
| การสลับ |
Customer Care Start |
| สิ้นสุดขั้นตอน |
Customer Care Start |
| สิ้นสุดเซสชัน |
- สร้างการปฏิบัติตามข้อกำหนดในการป้อนข้อมูลต่อไปนี้สำหรับหน้าการจัดส่ง
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- สร้างการดําเนินการต่อไปนี้สําหรับหน้าการคืนเงิน
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?
- สร้างการตอบสนองของข้อมูลต่อไปนี้สําหรับหน้าการแลกเปลี่ยน
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?
- เลือกหน้าเริ่มต้น แล้วคลิก Intent
redirect.end
สร้างการจำหน่ายต่อไปนี้Thank you for contacting G-Records! Have a nice day!
- เลือกหน้าเริ่มต้น แล้วคลิก Intent
redirect.home
สร้างค่าพารามิเตอร์ที่กำหนดล่วงหน้าrestart = true
สร้างเฟรมทดสอบ
- คลิกปุ่มตัวแทนทดสอบทางด้านขวาของหน้าจอ
เมื่อเปิดเครื่องจำลองเป็นครั้งแรก คุณจะต้องเลือกสภาพแวดล้อมของตัวแทนและโฟลว์ที่ใช้งานอยู่ ในกรณีส่วนใหญ่ คุณควรใช้สภาพแวดล้อมแบบร่างและขั้นตอนเริ่มต้นเริ่มต้น
- ประเภท:
Hi
- ถาม:
Which artists are signed with your label?
- พูดว่า
The Google Dolls
- พูดว่า
I am interested in buying a shirt
- พูดว่า
A t-shirt
- พูดว่า
Medium
- จากนั้นคลิกปุ่มบันทึกเคสทดสอบ ซึ่งอยู่ด้านบนของโปรแกรมจำลอง (ข้างลูกศร "ทําซ้ำ" และไอคอนถังขยะ "รีเซ็ต")
- ระบุรายละเอียดต่อไปนี้
- ชื่อเคสทดสอบ:
Buy Google Dolls t-shirt size M
- แท็ก: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- คลิกบันทึก
มาสร้างกรณีทดสอบเพิ่มเติมกัน
- ก่อนอื่น ให้ล้างกล่องโต้ตอบปัจจุบันโดยคลิกไอคอนรีเซ็ต (ถังขยะ)
- สร้างกรณีทดสอบต่อไปนี้
ซื้อเสื้อยืด 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
- คําอธิบาย: ทดสอบข้อมูลราคาในจุดต่างๆ ของกล่องโต้ตอบ
ทดสอบเฟรมทดสอบที่บันทึกไว้ล่วงหน้า
- เลือกจัดการ > Test Case ในเมนูหลักของ Dialogflow ทางด้านซ้าย
- เลือกเทสเคสทั้งหมด แล้วกดปุ่มเรียกใช้เหนือตาราง
Dialogflow CX จะเรียกใช้เฟรมทดสอบที่เลือกทั้งหมดกับไฟล์บันทึกเสียงที่บันทึกไว้เป็น "เฟรมทดสอบที่สมบูรณ์" หากผลลัพธ์เหมือนกับที่คุณบันทึกไว้ แสดงว่าผ่านการทดสอบ - มีการเปลี่ยนแปลงเกิดขึ้นในขั้นตอน เช่น หน้าเว็บที่ไม่ได้กําหนดค่าอย่างถูกต้อง หรือ Intent ที่นําคุณไปยังหน้าเว็บที่ไม่ถูกต้อง การทดสอบจะดำเนินการไม่สําเร็จ
- ถามคำถามต่อไปนี้ในเครื่องจำลอง
How long will shipping take?
- จดบันทึกผลลัพธ์และบันทึกเฟรมทดสอบเป็น
Shipping
พร้อมแท็ก#shipping
- ไปที่แผง "จัดการ" > "Test Case" แล้วกดปุ่มเรียกใช้ที่ด้านขวาบนของตารางกริดเพื่อเรียกใช้เฉพาะ Test Case
Shipping
การทดสอบนี้ควรผ่าน
- กลับไปที่ขั้นตอนการดูแลลูกค้า เลือกหน้าเริ่มต้น แล้วคลิกส่วนหัวเส้นทาง
ซึ่งจะแสดงหน้าจอที่มีตารางกริดซึ่งแสดงเส้นทางทั้งหมด
- นำ
redirect.shipping.info route
ออก - ไปที่แผง "จัดการ" > "Test Case" แล้วกดปุ่มเรียกใช้ที่ด้านขวาบนของตารางกริดเพื่อเรียกใช้เฉพาะ Test Case
Shipping
การทดสอบนี้ควรไม่สําเร็จ
- คุณสามารถคลิกการทดสอบที่ไม่ผ่านเพื่อดูรายละเอียดของการไม่ผ่าน
ในกรณีนี้ การทดสอบล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดด้านล่าง
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
สาเหตุคือหน้านั้นไม่มีอยู่ในขั้นตอนอีกต่อไป เราคาดว่าจะไปยังหน้า Shipping
แต่กลับไม่ได้ออกจากหน้า Start
(หรือผู้ใช้ปลายทางจะได้รับข้อความสำรอง)
กล่าวคือ นี่คือคำขอที่พลาดไป ซึ่งเป็นผลทดสอบลบเท็จ การทดสอบไม่สำเร็จ เราคาดว่าจะเห็นหน้าการจัดส่ง แต่ไม่มีอะไรเกิดขึ้นหรือมีการแสดงข้อความสำรอง
- กลับไปที่ขั้นตอนการดูแลลูกค้า แล้วเพิ่ม
redirect.shipping.info
เป็นเส้นทาง Intent ไปยังหน้า Start อย่าลืมเปลี่ยนไปที่หน้าการจัดส่ง แล้วกดบันทึก - ในเครื่องจำลอง ให้บันทึกกรณีทดสอบต่อไปนี้
I want to swap my item
แล้วบันทึกกรณีทดสอบนี้เป็นSwapping
#swapping
- เปิดจัดการ > Intent > redirect.refund.info แล้วเพิ่มวลีการฝึกต่อไปนี้
I want to swap this item for a refund
หากไม่มีวลีการฝึกนี้ เมื่อผู้ใช้ขอเปลี่ยนสินค้าเพื่อขอเงินคืน ระบบจะตีความว่าผู้ใช้มีเจตนา redirect.swapping.info แต่เราไม่ต้องการให้ข้อมูลเกี่ยวกับการเปลี่ยนสินค้า เราต้องการให้ข้อมูลเกี่ยวกับการคืนเงิน
- สร้างกรณีทดสอบตามตัวอย่างต่อไปนี้
I want to swap this item for a refund
ในเครื่องจำลอง และบันทึกกรณีทดสอบนี้เป็นSwap for Refund
#refund
- กลับไปที่ Intent จัดการ > Intent > redirect.refund.info แล้วนำบรรทัด
I want to swap this item for a refund
ออก - กลับไปที่จัดการ > กรณีทดสอบ เลือกกรณีทดสอบเปลี่ยนสินค้าเพื่อขอเงินคืน แล้วเรียกใช้
การทดสอบครั้งล่าสุดของคุณล้มเหลว โดยมีข้อความแสดงข้อผิดพลาดด้านล่างนี้
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 ความครอบคลุมการทดสอบคือค่าที่ใช้อธิบายระดับการดําเนินการสนทนาของตัวแทนเสมือน (หน้าเว็บและ Intent) เมื่อชุดการทดสอบหนึ่งๆ ทำงาน ตัวแทนเสมือนที่มีการครอบคลุมการทดสอบสูง ซึ่งวัดเป็นเปอร์เซ็นต์ จะมีการโต้ตอบที่ดำเนินการมากขึ้นในระหว่างการทดสอบ ซึ่งหมายความว่ามีโอกาสน้อยที่จะมีข้อบกพร่องที่ตรวจไม่พบ (เช่น คำขอที่เข้าใจผิดซึ่งไม่ได้ดำเนินการ) เมื่อเทียบกับตัวแทนเสมือนที่มีการครอบคลุมการทดสอบต่ำ
- หากต้องการดูรายงานการครอบคลุมการทดสอบสำหรับเทสเคสทั้งหมด ให้คลิกการครอบคลุม
- คลิกแท็บทรานซิชัน
ซึ่งจะแสดงการครอบคลุมการทดสอบของการเปลี่ยนหน้าเว็บทั้งหมด
- คลิกแท็บIntent
ซึ่งจะแสดงการครอบคลุมการทดสอบของ Intent ทั้งหมด
ขอแสดงความยินดี ตอนนี้คุณได้สร้างและทดสอบตัวอย่างการใช้งานจริงที่สมบูรณ์ของบอทผู้ค้าปลีกแล้ว ไปกันที่หน้าห้องทดลองถัดไปเพื่ออ่านสรุปและดูข้อมูลอ้างอิงอันเป็นประโยชน์กัน
10. บทสรุป
Dialogflow CX เป็นแพลตฟอร์ม AI แบบสนทนา (CAIP) สำหรับการสร้างตัวแทนเสมือน เช่น แชทบ็อตหรือบ็อตเสียง Dialogflow CX ช่วยให้ทีมของคุณเร่งสร้างประสบการณ์การสนทนาระดับองค์กรได้ผ่านเครื่องมือสร้างบ็อตแบบภาพ อินเทนต์ที่ใช้ซ้ำได้ และความสามารถในการจัดการการสนทนาแบบหลายรอบ
ในโค้ดแล็บนี้ คุณได้เรียนรู้วิธีสร้างตัวแทนเสมือนจริงสำหรับธุรกิจค้าปลีกในชีวิตจริง เราได้กล่าวถึงแนวคิดต่อไปนี้
- ขั้นตอน
- พารามิเตอร์ เอนทิตีที่กำหนดเองและเอนทิตีของระบบ
- Pages
- แฮนเดิลสถานะ เช่น เส้นทาง Intent และเส้นทางเงื่อนไข
- ข้อความการตอบสนองแบบคงที่และการตอบกลับแบบมีเงื่อนไข
- ข้อความสำรอง
- เครื่องจำลอง กรณีทดสอบ และความครอบคลุม
ข้อมูลอ้างอิง
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ Dialogflow CX โปรดดูบล็อกและเอกสารประกอบต่อไปนี้