1. ภาพรวม
แพลตฟอร์มสำหรับนักพัฒนาแอปของ Google Assistant ช่วยให้คุณสร้างซอฟต์แวร์เพื่อขยายฟังก์ชันการทำงานของ Google Assistant ซึ่งเป็นผู้ช่วยส่วนตัวเสมือนจริงในอุปกรณ์กว่า 1,000 ล้านเครื่อง รวมถึงลำโพงอัจฉริยะ โทรศัพท์ รถยนต์ ทีวี หูฟัง และอื่นๆ ผู้ใช้จะสนทนากับ Assistant เพื่อทำสิ่งต่างๆ เช่น ซื้อของชำหรือจองรถ ในฐานะนักพัฒนาแอป คุณสามารถใช้แพลตฟอร์มนักพัฒนาแอปของ Assistant เพื่อสร้างและจัดการประสบการณ์การสนทนาที่น่าพึงพอใจและมีประสิทธิภาพระหว่างผู้ใช้กับบริการจัดการคำสั่งซื้อของบุคคลที่สามของคุณเองได้อย่างง่ายดาย
Codelab นี้ครอบคลุมแนวคิดระดับกลางสำหรับการพัฒนาด้วย Google Assistant และต่อยอดจาก Action ที่สร้างใน Codelab ระดับ 1 เราขอแนะนำอย่างยิ่งให้คุณทำ Codelab ระดับ 1 ให้เสร็จก่อนเริ่มทำ Codelab นี้
Action ที่คุณสร้างในโค้ดแล็บนี้จะบอกโชคชะตาของผู้ใช้ในการผจญภัยในดินแดนแห่งตำนานอย่างกริฟฟินเบิร์ก โดยอิงตามความช่วยเหลือที่ผู้ใช้เลือก
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะได้สร้าง Conversational Action ที่ซับซ้อนซึ่งมีฟังก์ชันต่อไปนี้
- รวบรวมข้อมูลจากผู้ใช้ และแก้ไขพรอมต์การสนทนาตามมูลค่า
- ตอบคำถามติดตามเพื่อสานต่อการสนทนา
- สร้างลูปเกมเพื่อให้ผู้ใช้โต้ตอบกับแอ็กชันได้อีกครั้งหลังจากได้รับคำทำนาย
ก่อนเริ่มสร้าง คุณโต้ตอบกับการดำเนินการที่ใช้งานจริงในอุปกรณ์ที่พร้อมใช้งาน Google Assistant ได้โดยพูดว่า "Ok Google คุยกับ Fate and Fortune" เส้นทางเริ่มต้นผ่านการดำเนินการนี้สำหรับผู้ใช้ที่กลับมาจะมีลักษณะเป็นการโต้ตอบต่อไปนี้
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ช่องเพื่อรวบรวมข้อมูลจากผู้ใช้
- วิธีใช้เงื่อนไขเพื่อเพิ่มตรรกะลงในฉาก
- วิธีเพิ่ม Game Loop
- วิธีเพิ่มเส้นทางที่สนับสนุน
สิ่งที่คุณต้องมี
ข้อกำหนดเบื้องต้นสำหรับ Codelab นี้มีดังนี้
- เว็บเบราว์เซอร์ เช่น Google Chrome
- โปรเจ็กต์ Actions Codelab ระดับ 1 ที่ทำเสร็จแล้ว ( สร้าง Actions สำหรับ Google Assistant โดยใช้ Actions Builder ระดับ 1)
เราขอแนะนำอย่างยิ่งให้มีความคุ้นเคยกับ JavaScript (ES6) เพื่อให้เข้าใจโค้ดการดำเนินการตามคำสั่งสำหรับ Codelab นี้ แม้ว่าจะไม่จำเป็นก็ตาม
2. สร้างอินเทอร์เฟซแบบสนทนาต่อไป
ใน Codelab แรก คุณได้สร้าง Conversational Action อย่างง่ายที่มีฉากเดียวคือ Start
ในโค้ดแล็บนี้ คุณจะได้ขยายการสนทนาของ Action ในส่วนต่อไปนี้ คุณจะกำหนดค่า Action ให้ทำสิ่งต่อไปนี้
- เปลี่ยนไปใช้
Fortune
ฉากใหม่เมื่อผู้ใช้ต้องการฟังคำทำนาย - ถามผู้ใช้ว่าต้องการเลือกความช่วยเหลือใดสำหรับการเดินทาง
- แสดงคำทำนายที่ปรับแต่งตามตัวเลือกของผู้ใช้
สร้างฉาก Fortune
ในส่วนนี้ คุณจะสร้างFortune
ฉากและกำหนดวิธีที่ผู้ใช้เปลี่ยนไปใช้ฉากดังกล่าวในระหว่างการสนทนา
หากต้องการสร้างฉากใหม่ชื่อ Fortune
ให้ทำตามขั้นตอนต่อไปนี้
- เปิดโปรเจ็กต์ Actions ของ Codelab ระดับ 1
- คลิกพัฒนาในแถบนำทาง
- ในส่วนฉาก ให้คลิกฉากเริ่ม
- คลิกเจตนาใช่ (ช่องเมื่อตรงกับ "ใช่") เพื่อเปิดตัวเลือก
- ล้างส่งพรอมต์เพื่อนำพรอมต์ออก
- ในส่วนการเปลี่ยนฉาก ให้คลิกเมนูแบบเลื่อนลง คลิกในกล่องข้อความ แล้วพิมพ์
Fortune
- คลิกเพิ่ม ซึ่งจะเป็นการสร้างฉากใหม่ชื่อ
Fortune
นอกจากนี้ ยังเพิ่มการเปลี่ยนจากฉากStart
ไปยังฉากFortune
เมื่อผู้ใช้ต้องการฟังคำทำนาย
กำหนดตรรกะการสนทนาสำหรับฉาก Fortune
ในโค้ดแล็บนี้ คุณจะกำหนดค่าFortune
ฉากเพื่อถามผู้ใช้ว่า "คุณจะเลือกอะไรเพื่อช่วยในการผจญภัยของคุณ ไม่ว่าจะเป็นมังกร นักแปล หรือเข็มทิศ" คุณใช้ความสามารถที่เรียกว่าการป้อนข้อมูลในช่องเพื่อรวบรวมข้อมูลที่จำเป็นจากผู้ใช้ก่อนดำเนินการต่อได้
Action ของคุณจะให้คำทำนายสำหรับเครื่องช่วย 3 อย่าง ได้แก่ มังกร นักแปล และเข็มทิศ หากต้องการกำหนดค่า Action เพื่อระบุตัวเลือกทั้ง 3 นี้ในอินพุตของผู้ใช้ คุณต้องสร้างประเภทใหม่
คุณสามารถใช้ประเภทภายในขั้นตอนการเติมข้อมูลในช่องของฉากเพื่อกำหนดข้อมูลที่ต้องการจากผู้ใช้ เมื่อเครื่องมือ NLU ตรวจพบการจับคู่ช่องในอินพุตของผู้ใช้ ระบบจะดึงข้อมูลช่องเป็นพารามิเตอร์ที่พิมพ์ เพื่อให้คุณใช้ตรรกะกับช่องในฉากได้
สร้างประเภทavailable_options
ในส่วนนี้ คุณจะสร้างประเภทใหม่ที่ชื่อ available_options
ซึ่งระบุตัวเลือก 3 รายการที่ผู้ใช้เลือกได้ (มังกร นักแปล และเข็มทิศ) เพื่อตอบกลับพรอมต์ นอกจากนี้ คุณยังกำหนดคำพ้องความหมายสำหรับตัวเลือกเหล่านี้ได้ในกรณีที่ผู้ใช้พูดสิ่งที่คล้ายกัน ในส่วนถัดไป คุณจะเพิ่มavailable_options
ประเภทลงในช่องเพื่อระบุว่าต้องการรับตัวเลือกของผู้ใช้
หากต้องการสร้างavailable_options
ให้ทำตามขั้นตอนต่อไปนี้
- คลิกประเภทในแถบนำทาง
- คลิก + (เครื่องหมายบวก) พิมพ์
available_options
แล้วกดEnter
- คลิก
available_options
เพื่อเปิดตัวเลือก
ระบบจะกำหนดค่าประเภทเป็นคู่คีย์-ค่าของข้อมูล โดยที่คีย์คือชื่อของประเภท และค่าคือคำพ้องความหมายของคีย์นั้น เมื่อคุณกำหนดคีย์ ระบบจะเพิ่มคีย์เป็นค่าโดยอัตโนมัติ
หากต้องการเพิ่ม 3 ตัวเลือกที่ผู้ใช้เลือกได้ ให้ทำตามขั้นตอนต่อไปนี้
- เลื่อนไปที่ส่วนเพิ่มรายการ
- ในช่องรายการใหม่ ให้พิมพ์
dragon
แล้วกดEnter
การดำเนินการนี้จะสร้างคีย์dragon
- พิมพ์
hydra
ในช่องเพิ่มค่า แล้วกดEnter
เพื่อเพิ่มเป็นค่า (คำพ้องความหมาย) จากนั้นทำขั้นตอนนี้ซ้ำสำหรับค่าlizard
- เพิ่มคีย์ที่เหลือและค่าที่เกี่ยวข้อง
translator | translator
communicator
machine
decoder
translate
compass | compass
,direction
,guide
- คลิกบันทึก
ตอนนี้ Action ของคุณเข้าใจแล้วว่า available_options
คือมังกร นักแปล และเข็มทิศ และยังจดจำคำพ้องความหมายที่เกี่ยวข้องได้อีกด้วย
กำหนดค่าการป้อนข้อมูลในช่อง
จากนั้นคุณต้องกำหนดค่าการป้อนข้อมูลในช่องในฉาก Fortune
หากต้องการกำหนดค่าตรรกะการป้อนข้อมูลในช่อง ให้ทำตามขั้นตอนต่อไปนี้
- ในแถบนำทาง ให้คลิกโชคลาภในส่วนฉาก
- ใน
Fortune
ฉาก ให้คลิก + (เครื่องหมายบวก) สำหรับการป้อนข้อมูลในช่อง - ในช่องป้อนชื่อช่อง ให้เพิ่ม
chosenOptions
เป็นชื่อช่อง - ในรายการแบบเลื่อนลงเลือกประเภท ให้เลือก
available_options
เป็นประเภทช่อง - เลือกช่องทําเครื่องหมายต้องระบุช่องนี้
- เลือกส่งพรอมต์ แล้วเพิ่มข้อความและชิปคำแนะนำต่อไปนี้
candidates:
- first_simple:
variants:
- speech: >-
What do you choose to help you on your quest, a dragon, a
translator, or a compass?
suggestions:
- title: 'Dragon'
- title: 'Translator'
- title: 'Compass'
- คลิกบันทึก
ตอนนี้คุณได้เพิ่มประเภท available_options
ลงในช่องแล้ว ซึ่งจะบอก Action ว่าคุณต้องรวบรวมข้อมูลใดจากผู้ใช้ (ตัวเลือกความช่วยเหลือของผู้ใช้) ก่อนดำเนินการต่อ นอกจากนี้ คุณยังกำหนดค่าพรอมต์ภายในช่อง ซึ่งจะเพิ่มลงในคิวพรอมต์เมื่อผู้ใช้ไปถึงขั้นตอนการกรอกข้อมูลในช่องของฉาก
โปรดทราบว่าเมื่อคุณตั้งชื่อช่อง chosenOptions
ฟิลด์การเขียนกลับค่าช่องที่กําหนดเองจะได้รับการอัปเดตด้วยชื่อเดียวกัน ($session.params.chosenOptions
) คุณสามารถเข้าถึงพารามิเตอร์นี้ได้โดยใช้ชื่อดังกล่าวใน Actions Builder และในการดำเนินการตามคำสั่งผ่านไลบรารีไคลเอ็นต์
กำหนดค่าเงื่อนไข scene.slots.status == "FINAL"
เมื่อเพิ่มช่อง ระบบจะเพิ่มเงื่อนไข scene.slots.status == "FINAL"
ลงในรายการเงื่อนไขโดยอัตโนมัติ
เงื่อนไข scene.slots.status == "FINAL"
จะตรวจสอบว่าการระบุค่าในช่องเสร็จสมบูรณ์แล้วหรือไม่ เมื่อช่องทั้งหมดเต็มแล้ว เงื่อนไขจะทริกเกอร์เว็บฮุก เปลี่ยนไปฉากใหม่ หรือเพิ่มพรอมต์ลงในคิวพรอมต์ได้
ในส่วนนี้ คุณจะกำหนดค่า scene.slots.status == "FINAL"
เพื่อเพิ่มพรอมต์ลงในคิวพรอมต์เมื่อช่องเต็มแล้ว
หากต้องการเพิ่มพรอมต์นี้ลงในเงื่อนไข FINAL
ให้ทำตามขั้นตอนต่อไปนี้
- คลิก
scene.slots.status == "FINAL"
เพื่อเปิดหน้าต่างตัวเลือก - เลือกส่งพรอมต์ แล้วเพิ่มพรอมต์ต่อไปนี้
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- คลิกบันทึก
ทดสอบ Action ในเครื่องมือจำลอง
ตอนนี้คุณได้กำหนดตัวเลือกที่ผู้ใช้ควรเลือกเพื่อกรอกข้อมูลในช่องแล้ว หลังจากได้รับข้อมูลนี้จากผู้ใช้แล้ว แอ็กชันของคุณควรแสดงข้อความที่อ้างอิงถึงตัวเลือกที่ผู้ใช้เลือก
หากต้องการทดสอบแอ็กชัน ให้ทำตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนำทาง
- คลิกหรือพิมพ์
Talk to my test app
ในช่องอินพุต แล้วกดEnter
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
(หรือจะคลิกชิปคำแนะนำใช่ก็ได้)
- คลิก พิมพ์ หรือพูดว่า
dragon
คุณควรได้รับข้อความแจ้งว่า "คุณเลือกมังกร"
ในส่วนถัดไป คุณจะปรับแต่งพรอมต์สำหรับความช่วยเหลือแต่ละอย่างที่ผู้ใช้เลือกได้
ปรับแต่งพรอมต์โดยใช้เงื่อนไข
ในส่วนนี้ คุณจะเพิ่มเงื่อนไขสำหรับแต่ละตัวเลือกที่ผู้ใช้เลือกได้ และเพิ่มพรอมต์ที่กำหนดเองสำหรับแต่ละเงื่อนไข
ปรับแต่งคำทำนายของ dragon
หากต้องการอัปเดตเงื่อนไขและปรับแต่งพรอมต์เมื่อผู้ใช้เลือก "มังกร" ให้ทำตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนำทาง
- คลิกฉากโชคลาภในแถบนำทาง
- คลิก
scene.slots.status == "FINAL"
เพื่อเปิดหน้าต่างตัวเลือก - อัปเดตข้อความระบุสภาพสินค้าเป็น
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
- เลือกส่งพรอมต์
- อัปเดตพรอมต์ด้วยคำทำนายต่อไปนี้ในตัวแก้ไขโค้ด
candidates:
- first_simple:
variants:
- speech: >-
The people of Gryffinberg will be awestruck by the beauty and power
of the ancient dragon. Much to your dismay, the townspeople fall
into dispute over who will receive the honor of riding the dragon
first. You return home from your quest without everlasting glory or
a dragon.
- คลิกบันทึก
ตอนนี้เมื่อผู้ใช้พูดว่า "มังกร" หรือคำที่คล้ายกัน แอ็กชันของคุณจะให้คำทำนายตามตัวเลือกนั้น จากนั้นเพิ่มการเลือกอีก 2 รายการที่เหลือ
ปรับแต่งคำทำนายของ translator
หากต้องการเพิ่มเงื่อนไขและปรับแต่งพรอมต์เมื่อผู้ใช้เลือก "นักแปล" ให้ทำตามขั้นตอนต่อไปนี้
- คลิก + (เครื่องหมายบวก) ข้างเงื่อนไข
- เพิ่ม
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
ลงในช่อง else if - เลือกส่งพรอมต์
- เพิ่มพรอมต์ต่อไปนี้ในตัวแก้ไขโค้ด
candidates:
- first_simple:
variants:
- speech: >-
With the help of the translator, the rival factions in Gryffinberg
are finally able to communicate with each other and resolve their
disputes. You will complete your quest to restore peace in the town.
The translator will be used on many subsequent journeys across the
earth. After its work is done, it retires honorably to a premier
location in the Gryffinberg History Museum.
- คลิกบันทึก
ปรับแต่งคำทำนายของ compass
หากต้องการเพิ่มเงื่อนไขและปรับแต่งพรอมต์เมื่อผู้ใช้เลือก "เข็มทิศ" ให้ทำตามขั้นตอนต่อไปนี้
- คลิก + (เครื่องหมายบวก) ข้างสภาพ
- เพิ่ม
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
ลงในกล่องข้อความ else if - เลือกส่งพรอมต์
- เพิ่มพรอมต์ต่อไปนี้ในตัวแก้ไขโค้ด
candidates:
- first_simple:
variants:
- speech: >-
The compass will help you find the mystical and ancient Library of
Gryffinberg. Among its infinite stacks of dusty books, you find one
entitled "Wisdom of the Ages". By the time you've read the
50,000-page tome, the townspeople have forgotten their problems. You
will write a second edition of "Wisdom of the Ages", but have
limited commercial success.
- คลิกบันทึก
ทดสอบ Action ในเครื่องมือจำลอง
ในขั้นตอนนี้ แอ็กชันควรให้คำทำนายที่ปรับแต่งสำหรับผู้ใช้ตามตัวเลือกที่ผู้ใช้เลือก
หากต้องการทดสอบแอ็กชัน ให้ทำตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนำทาง
- พิมพ์
Talk to my test app
ในช่องอินพุต แล้วกดEnter
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
หรือคลิกชิปคำแนะนำใช่ - คลิก พิมพ์ หรือพูดว่า
Translator
คุณควรได้รับคำทำนายที่เหมาะสมสำหรับตัวเลือก "นักแปล"
3. เพิ่มลูปเกม
ในส่วนนี้ คุณจะกำหนดค่า Action เพื่อให้ผู้ใช้เลือกตัวเลือกอื่นและฟังคำทำนายอื่นได้หลังจากเลือกแล้ว การเปลี่ยนแปลงนี้คล้ายกับข้อความ "คุณต้องการเล่นอีกครั้งไหม" ที่ท้ายเกม หากต้องการสร้างลูปนี้ คุณสามารถใช้ Intent yes
และ no
ที่สร้างไว้ก่อนหน้านี้ซ้ำ แล้วเพิ่มลงในฉากใหม่ที่ชื่อ Again
สร้างฉาก Again
ในส่วนนี้ คุณจะสร้างAgain
ฉากใหม่และเพิ่มพรอมต์ที่ถามผู้ใช้ว่าต้องการเลือกตัวเลือกอื่นหรือไม่
หากต้องการสร้างAgain
ฉาก ให้ทำตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนำทาง
- คลิก + (เครื่องหมายบวก) ใต้ฉาก
- พิมพ์
Again
แล้วกดEnter
- คลิกฉาก
Again
ในแถบนำทาง - คลิก + (เครื่องหมายบวก) ข้าง เมื่อกด Enter
- เลือกส่งพรอมต์ แล้วเพิ่มพรอมต์และชิปคำแนะนำต่อไปนี้
candidates:
- first_simple:
variants:
- speech: >-
That is what I see for you. Would you like to choose a different option and
explore another future?
suggestions:
- title: 'Yes'
- title: 'No'
- คลิกบันทึก
เพิ่มการเปลี่ยนจากฉาก Fortune
ไปยังฉาก Again
หลังจากผู้ใช้ได้รับคำทำนายแล้ว การสนทนาจะต้องเปลี่ยนไปเป็นฉาก Again
ใหม่
หากต้องการเพิ่มทรานซิชันจากฉาก Fortune
ไปยังฉาก Again
ให้ทำตามขั้นตอนต่อไปนี้
- คลิกฉากทำนาย
- คลิกเงื่อนไขแรก (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
) เพื่อเปิดหน้าต่างตัวเลือก - เลื่อนและเลือก
Again
ในส่วนการเปลี่ยนฉาก - คลิกบันทึก
- คลิกเงื่อนไขที่ 2 เพื่อเปิดหน้าต่างตัวเลือก
- เลื่อนและเลือก
Again
ในส่วนการเปลี่ยนฉาก - คลิกบันทึก
- คลิกเงื่อนไขที่ 3 เพื่อเปิดหน้าต่างตัวเลือก
- เลื่อนและเลือก
Again
ในส่วนการเปลี่ยนฉาก - คลิกบันทึก
ทดสอบ Action ในเครื่องมือจำลอง
ในขั้นตอนนี้ แอ็กชันของคุณควรแสดงข้อความแจ้งต่อไปนี้แก่ผู้ใช้หลังจากที่ได้รับคำทำนาย"นี่คือสิ่งที่ฉันเห็นสำหรับคุณ คุณต้องการเลือกตัวเลือกอื่นและสำรวจอนาคตอื่นไหม"
หากต้องการทดสอบแอ็กชัน ให้ทำตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนำทาง
- พิมพ์
Talk to my test app
ในช่องอินพุต แล้วกดEnter
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
หรือคลิกชิปคำแนะนำใช่ - คลิก พิมพ์ หรือพูดว่า
dragon
คุณควรได้รับคำทำนายสำหรับตัวเลือกมังกรและพรอมต์ Again
เพิ่มความตั้งใจและเปลี่ยนไปใช้ฉาก Again
ในส่วนนี้ คุณจะเพิ่มเจตนา yes
และ no
ลงในฉาก Again
เพื่อให้ Action เข้าใจว่าผู้ใช้ต้องการเลือกตัวเลือกใหม่หรือไม่ นอกจากนี้ คุณยังเพิ่มทรานซิชันที่เหมาะสมสำหรับความตั้งใจ yes
และ no
ได้ด้วย เจตนา yes
จะเปลี่ยนไปเป็นฉาก Fortune
ส่วนเจตนา no
จะเปลี่ยนไปเป็นฉากของระบบ End conversation
หากต้องการเพิ่ม Intent และการเปลี่ยนฉากไปยังAgain
ฉาก ให้ทำตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนำทาง
- คลิกฉาก
Again
- คลิก + (เครื่องหมายบวก) ข้างการจัดการความตั้งใจของผู้ใช้
- เลือกใช่จากเมนูแบบเลื่อนลงของเจตนา
- เลือก
Fortune
จากเมนูแบบเลื่อนลงการเปลี่ยน - คลิกบันทึก
- คลิก + (เครื่องหมายบวก) ข้างการจัดการความตั้งใจของผู้ใช้
- เลือกไม่จากเมนูแบบเลื่อนลงของเจตนา
- เลือกจบการสนทนาจากเมนูแบบเลื่อนลงการเปลี่ยน
- เลือกส่งพรอมต์ แล้วเพิ่มพรอมต์ต่อไปนี้ในตัวแก้ไขโค้ด
candidates:
- first_simple:
variants:
- speech: >-
It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
- คลิกบันทึก
ทดสอบ Action ในเครื่องมือจำลอง
ตอนนี้ Action ของคุณควรเข้าใจแล้วว่าผู้ใช้ต้องการเลือกตัวเลือกใหม่หรือสิ้นสุดการสนทนา
หากต้องการทดสอบyes
เจตนา ให้ทำตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนำทาง
- พิมพ์
Talk to my test app
ในช่องอินพุต แล้วกดEnter
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
หรือคลิกชิปคำแนะนำใช่ - คลิก พิมพ์ หรือพูดตัวเลือกใดตัวเลือกหนึ่ง
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
คุณควรได้รับข้อความแจ้งว่า "คุณจะเลือกอะไรเพื่อช่วยในการผจญภัยของคุณ มังกร นักแปล หรือเข็มทิศ"
หากต้องการทดสอบno
เจตนา ให้ทำตามขั้นตอนต่อไปนี้
- คลิก พิมพ์ หรือพูดตัวเลือกใดตัวเลือกหนึ่ง
- พิมพ์
No
ในช่องป้อนข้อมูล แล้วกดEnter
คุณควรได้รับข้อความแจ้ง End conversation
: "ฉันยินดีที่คุณพอใจกับตัวเลือกของคุณ ขอให้โชคดีในการค้นหานะ ลาก่อน"
4. เพิ่มเส้นทางที่สนับสนุน
ตอนนี้คุณได้สร้างเส้นทางหลักที่ผู้ใช้ส่วนใหญ่ใช้ในแอ็กชันแล้ว อย่างไรก็ตาม ผู้ใช้อาจตอบกลับพรอมต์จากFortune
ฉาก "คุณเลือกอะไรเพื่อช่วยในการผจญภัยของคุณ มังกร นักแปล หรือเข็มทิศ" ด้วยตัวเลือกที่ไม่ได้อยู่ในตัวเลือกที่ให้ไว้
ในส่วนนี้ คุณจะกำหนดค่า Action ให้เข้าใจเมื่อผู้ใช้เลือก "เวทมนตร์" "เงิน" "ม้า" หรือ "โทรศัพท์" และแจ้งให้ผู้ใช้เลือกจาก 3 ตัวเลือกเดิมเมื่อเลือกตัวเลือกใดตัวเลือกหนึ่งเหล่านี้ หากต้องการกําหนดค่าตรรกะนี้ คุณต้องสร้าง type
ใหม่ที่มีตัวเลือกอื่นๆ เหล่านี้ และเจตนาใหม่ other_option
ที่ตรงกันเมื่อผู้ใช้พูดตัวเลือกใดตัวเลือกหนึ่ง นอกจากนี้ คุณยังต้องใส่คำอธิบายประกอบวลีการฝึกภายในother_option
เจตนาเพื่อระบุและแยกพารามิเตอร์เจตนา
เมื่อเครื่องมือประมวลผลภาษาธรรมชาติ (NLU) ของ Assistant ตรวจพบพารามิเตอร์ที่ตรงกันในอินพุตของผู้ใช้ ระบบจะดึงค่าออกมาเป็นพารามิเตอร์ที่พิมพ์เพื่อให้คุณใช้ตรรกะกับค่าดังกล่าวในฉากได้ ในโค้ดแล็บนี้ คุณจะกำหนดค่า Action เพื่อดึงความช่วยเหลือที่ผู้ใช้เลือกและอ้างอิงถึงตัวเลือกนั้นในพรอมต์
สร้างประเภทunavailable_options
ตอนนี้คุณสามารถสร้างunavailable_options
ประเภทที่มีตัวเลือกต่างๆ มากมายเพื่อให้ Action ระบุข้อมูลนั้นในอินพุตของผู้ใช้ได้
หากต้องการสร้างunavailable_options
ให้ทำตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนำทาง
- คลิก + (เครื่องหมายบวก) ในส่วนประเภท
- พิมพ์
unavailable_options
แล้วกดEnter
- คลิก
unavailable_options
เพื่อเปิดตัวเลือก - ป้อนรายการและค่าที่เกี่ยวข้องต่อไปนี้ในส่วนเพิ่มรายการ
|
|
|
|
|
|
|
|
ตารางคีย์-ค่าควรมีลักษณะดังนี้
- คลิกบันทึก
สร้างความตั้งใจ other_option
จากนั้นสร้างความตั้งใจชื่อ other_option
แล้วเพิ่มวลีฝึกที่มีตัวเลือกในประเภท unavailable_options
ระบบจะจับคู่อินเทนต์นี้เมื่อผู้ใช้เลือกตัวเลือกที่มีอยู่ในunavailable_options
ประเภท
หากต้องการสร้างและกำหนดค่าother_option
เจตนา ให้ทำตามขั้นตอนต่อไปนี้
- คลิก + (เครื่องหมายบวก) ในส่วนความตั้งใจที่กำหนดเอง
- พิมพ์
other_option
แล้วกดEnter
- คลิก
other_option
เพื่อเปิดหน้าต่าง - เพิ่มวลีการฝึกต่อไปนี้ แล้วกด
Enter
หลังแต่ละวลี
I want to use spells
I really really want to use a phone
magic!
cash
I want to ride a horse
- ในส่วนเพิ่มพารามิเตอร์ความตั้งใจ ให้อัปเดตชื่อพารามิเตอร์เป็น
chosenUnavailableOption
- คลิกบันทึก
เมื่อคุณป้อนวลีการฝึก Actions Builder จะจดจำ spells
, phone
, magic
, cash
และ horse
จากประเภท unavailable_options
และไฮไลต์ (อธิบายประกอบ) คำเหล่านั้นโดยอัตโนมัติ ตัวสร้างการดำเนินการจะเพิ่มพารามิเตอร์ Intent ในส่วนเพิ่มพารามิเตอร์ Intent โดยอัตโนมัติ ดังที่แสดงในรูปภาพต่อไปนี้
พารามิเตอร์ความตั้งใจช่วยให้คุณดึงชื่อของตัวเลือกและใช้ตัวเลือกนั้นในพรอมต์ได้
เพิ่มความตั้งใจ other_option
ไปยังFortune
ฉาก
ตอนนี้คุณมีเจตนา other_option
ที่สามารถจัดการกับผู้ใช้ที่ระบุตัวเลือกซึ่งไม่ใช่ตัวเลือกเดิม ในส่วนนี้ คุณจะเพิ่มความตั้งใจother_option
ไปยังฉากFortune
คุณใช้พารามิเตอร์ความตั้งใจเพื่อปรับแต่งพรอมต์ตามอินพุตของผู้ใช้
หากต้องการเพิ่มเจตนา other_option
ลงในฉาก Fortune
ให้ทำตามขั้นตอนต่อไปนี้
- คลิกฉากทำนาย
- คลิก + (เครื่องหมายบวก) ข้างการจัดการความตั้งใจของผู้ใช้
- เลือก
other_option
จากเมนูแบบเลื่อนลงของเจตนา - เลือกส่งพรอมต์ แล้วเพิ่มพรอมต์ต่อไปนี้
candidates:
- first_simple:
variants:
- speech: >-
I have seen the future and a $intent.params.chosenUnavailableOption.original
will not aid you on your journey.
นิพจน์ $intent.params.chosenUnavailableOption
หมายถึงออบเจ็กต์พารามิเตอร์ Intent และ $intent.params.chosenUnavailableOption.original
หมายถึงค่าของออบเจ็กต์นั้น original property
หมายถึงอินพุตดิบที่ผู้ใช้ระบุ
- คลิกบันทึก
เมื่อผู้ใช้พูดตัวเลือกที่แสดงในunavailable_options
ประเภทระหว่างฉากFortune
ระบบจะจับคู่เจตนาother_option
และเพิ่มพรอมต์ลงในคิวพรอมต์ เนื่องจากไม่ได้ระบุการเปลี่ยนฉากไว้ ลูปการเรียกใช้ฉากจึงดำเนินต่อไปโดยการประเมินขั้นตอนเงื่อนไขอีกครั้ง จากนั้นช่อง chosenOptions
จะเพิ่มพรอมต์ลงในคิวพรอมต์ และระบบจะส่งคิวพรอมต์ไปยังผู้ใช้
ทดสอบ Action ในเครื่องมือจำลอง
ตอนนี้ Action ของคุณควรตอบสนองอย่างเหมาะสมเมื่อผู้ใช้เลือกตัวเลือกใดตัวเลือกหนึ่งที่แสดงในunavailable_options
ประเภท และระบุความช่วยเหลือที่ผู้ใช้เลือก จากนั้น Action ของคุณควรแจ้งให้ผู้ใช้เลือกตัวเลือกเดิม (มังกร นักแปล หรือเข็มทิศ)
หากต้องการทดสอบ Action ในเครื่องจำลอง ให้ทำตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนำทาง
- พิมพ์
Talk to my test app
ในช่องอินพุต แล้วกดEnter
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
หรือคลิกชิปคำแนะนำใช่ - พิมพ์
magic
ในช่องอินพุต แล้วกดEnter
คุณอาจสังเกตเห็นว่าพรอมต์ฟังดูไม่ถูกต้องเมื่อผู้ใช้เลือก "magic" เนื่องจากมีคำนำหน้า "a" อยู่ก่อนหน้า คุณแก้ไขปัญหานี้ได้ในส่วนต่อไปนี้
เพิ่มแฮนเดิล unavailable_options
หากต้องการวางคำนำหน้า "a" ไว้หน้าตัวเลือกที่เหมาะสมจากunavailable_options
ประเภท คุณสามารถกำหนดค่าตัวแฮนเดิลเหตุการณ์ในตรรกะการจำหน่ายเพื่อตรวจสอบว่าตัวเลือกที่ผู้ใช้เลือกต้องมี "a" นำหน้าหรือไม่ ก่อนอื่นคุณต้องกำหนดค่า Action เพื่อเรียกแฮนเดิลในคอนโซล
หากต้องการเพิ่มตัวแฮนเดิล unavailable_options
ให้ทำตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนำทาง
- คลิกฉาก
Fortune
- ในส่วนการจัดการความตั้งใจของผู้ใช้ ให้คลิกเมื่อตรงกับ other_option เพื่อเปิดหน้าต่าง
- ล้างช่องทำเครื่องหมายส่งพรอมต์
- เลือกช่องทําเครื่องหมายเรียกใช้เว็บฮุก
- ป้อน
unavailable_options
ในกล่องข้อความสำหรับตัวแฮนเดิลเหตุการณ์
- คลิกบันทึก
อัปเดตและติดตั้งใช้งานการดำเนินการตามคำสั่งซื้อ
ตอนนี้คุณได้กำหนดค่า Action ให้เรียกใช้ตัวแฮนเดิลเหตุการณ์ unavailable_options
แล้ว คุณสามารถอัปเดตตัวแฮนเดิลในการดำเนินการตามคำสั่งและนำไปใช้งานได้
หากต้องการอัปเดตการดำเนินการตามคำสั่ง ให้ทำตามขั้นตอนต่อไปนี้
- คลิก Webhook ในแถบนำทาง
- เพิ่มโค้ดต่อไปนี้ในส่วน
greeting
แฮนเดิลเลอร์
app.handle('unavailable_options', conv => {
const option = conv.intent.params.chosenUnavailableOption.original;
const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
let message = 'I have seen the future and ';
if(optionsNeedA.has(optionKey)){
message = message + 'a ';
}
message = message + `${option} will not aid you on your journey. `;
conv.add(message);
});
- เพิ่มโค้ดต่อไปนี้ในส่วน
const app = conversation();
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- คลิกบันทึกการปฏิบัติตามคำสั่งซื้อ
- คลิกติดตั้งใช้งานการดำเนินการตามคำสั่งซื้อ เมื่อการติดตั้งใช้งานเสร็จสมบูรณ์ ข้อความเหนือเครื่องมือแก้ไขจะระบุว่าการติดตั้งใช้งาน Cloud Functions เป็นเวอร์ชันล่าสุดแล้ว
ทำความเข้าใจโค้ด
ตัวแฮนเดิล unavailable_options
จะทำสิ่งต่อไปนี้
- รับ
option
จากออบเจ็กต์conv
และกําหนดoption
ให้กับพร็อพเพอร์ตี้original
ซึ่งเป็นอินพุตดิบจากผู้ใช้ - กำหนด
optionKey
ให้กับพร็อพเพอร์ตี้resolved
ซึ่งเป็นคีย์สำหรับประเภทunavailable_options
- ตรวจสอบว่า
optionKey
เป็นหนึ่งในตัวเลือกที่ต้องมี "a" หรือไม่ หากใช่ ให้สร้างข้อความโดยเพิ่ม "a" - เพิ่มข้อความผ่าน
conv.add(message)
ทดสอบ Action ในเครื่องมือจำลอง
ตอนนี้ Action ของคุณควรปรับพรอมต์ตามว่าตัวเลือกของผู้ใช้จากunavailable_options
ประเภทต้องมีคำนำหน้า "a" หรือไม่
หากต้องการทดสอบแอ็กชัน ให้ทำตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนำทาง
- คลิกหรือพิมพ์
Talk to my test app
ในช่องอินพุต แล้วกดEnter
- พิมพ์
Yes
ในช่องอินพุต แล้วกดEnter
หรือคลิกชิปคำแนะนำใช่ - พิมพ์
magic
ในช่องอินพุต แล้วกดEnter
- พิมพ์
horse
ในช่องอินพุต แล้วกดEnter
Action ของคุณควรเพิ่มคำนำหน้า "a" ก่อนตัวเลือก "horse" ขณะสร้างพรอมต์โดยไม่มีคำนำหน้า "a" สำหรับตัวเลือก "magic"
ล้างข้อมูลโปรเจ็กต์ [แนะนำ]
ขอแนะนำให้นำโปรเจ็กต์ที่คุณไม่ได้ตั้งใจจะใช้ออกเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่อาจเกิดขึ้น หากต้องการลบโปรเจ็กต์ที่คุณสร้างในโค้ดแล็บนี้ ให้ทำตามขั้นตอนต่อไปนี้
- หากต้องการลบโปรเจ็กต์และทรัพยากรในระบบคลาวด์ ให้ทำตามขั้นตอนที่ระบุไว้ในส่วนการปิด (ลบ) โปรเจ็กต์
- ไม่บังคับ: หากต้องการนำโปรเจ็กต์ออกจากคอนโซล Actions ทันที ให้ดูลบโปรเจ็กต์ หากไม่ทำตามขั้นตอนนี้ให้เสร็จสมบูรณ์ ระบบจะนำโปรเจ็กต์ของคุณออกโดยอัตโนมัติหลังจากผ่านไปประมาณ 30 วัน
5. ยินดีด้วย
ตอนนี้คุณได้เรียนรู้ทักษะระดับกลางที่จำเป็นต่อการสร้าง Actions สำหรับ Google Assistant แล้ว
สิ่งที่คุณได้พูดถึง
- วิธีพัฒนาการกระทำแบบสนทนาโดยใช้ไลบรารีการจัดการคำขอของ Node.js
- วิธีใช้ช่องเพื่อรวบรวมข้อมูลจากผู้ใช้
- วิธีใช้เงื่อนไขเพื่อเพิ่มตรรกะลงในฉาก
- วิธีเพิ่ม Game Loop
- วิธีเพิ่มเส้นทางที่สนับสนุน
ดูข้อมูลเพิ่มเติม
สำรวจแหล่งข้อมูลต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง Actions สำหรับ Google Assistant
- เอกสารประกอบสำหรับการพัฒนา Actions สำหรับ Google Assistant
- หน้า GitHub ของ Actions on Google สำหรับโค้ดตัวอย่างและไลบรารี
- ชุมชน Reddit อย่างเป็นทางการสำหรับนักพัฒนาแอปที่ทำงานร่วมกับ Google Assistant
- หลักเกณฑ์การออกแบบการสนทนาสำหรับแนวทางปฏิบัติแนะนำและหลักเกณฑ์เกี่ยวกับ Conversational Action
ติดตาม @ActionsOnGoogle บน Twitter เพื่อรับทราบประกาศล่าสุดของเรา และทวีตถึง #AoGDevs เพื่อแชร์สิ่งที่คุณสร้าง
แบบสำรวจความคิดเห็น
ก่อนจากกัน โปรดกรอกแบบสำรวจสั้นๆ เกี่ยวกับประสบการณ์ของคุณ