1. ภาพรวม
แพลตฟอร์มนักพัฒนาซอฟต์แวร์ Google Assistant ให้คุณสร้างซอฟต์แวร์เพื่อขยายฟังก์ชันการทํางานของ Google Assistant ซึ่งเป็นผู้ช่วยส่วนตัวในอุปกรณ์กว่า 1 พันล้านเครื่อง รวมถึงลําโพงอัจฉริยะ โทรศัพท์ รถยนต์ ทีวี หูฟัง และอื่นๆ ผู้ใช้มีส่วนร่วมกับ Assistant ในการสนทนาเพื่อทําสิ่งต่างๆ เช่น ซื้อของชําหรือจองรถโดยสาร ในฐานะนักพัฒนาซอฟต์แวร์ คุณจะใช้แพลตฟอร์มสําหรับนักพัฒนาแอป Assistant เพื่อสร้างและจัดการประสบการณ์การสนทนาที่น่าพอใจและมีประสิทธิภาพระหว่างผู้ใช้และบริการดําเนินการตามคําสั่งซื้อของบุคคลที่สามของคุณเองได้
Codelab นี้ครอบคลุมแนวคิดระดับกลางเพื่อการพัฒนาด้วย Google Assistant และต่อยอดจากการดําเนินการที่สร้างใน Codelab ระดับ 1 เราขอแนะนําอย่างยิ่งให้คุณเรียน Codelab ระดับ 1 ให้เสร็จสมบูรณ์ก่อนเริ่มหลักสูตรนี้
แอ็กชันที่คุณสร้างใน Codelab นี้จะแจ้งให้ผู้ใช้ทราบเกี่ยวกับภารกิจของตนเองในพื้นนรกตํานาน Gryffinberg โดยขึ้นอยู่กับความช่วยเหลือที่ผู้ใช้เลือก
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณสร้างการดําเนินการสนทนาที่ซับซ้อนด้วยฟังก์ชันต่อไปนี้
- รวบรวมข้อมูลจากผู้ใช้และแก้ไขข้อความแจ้งการสนทนา ทั้งนี้ขึ้นอยู่กับค่า
- ตอบกลับด้วยคําถามติดตามผลเพื่อสนทนาต่อ
- สร้าง Game Loop เพื่อให้ผู้ใช้โต้ตอบกับ Action ได้อีกครั้งหลังจากได้รับแต้ม
ก่อนที่จะเริ่มสร้าง คุณสามารถโต้ตอบกับการดําเนินการแบบสดในอุปกรณ์ที่พร้อมใช้งาน Google Assistant ด้วยการพูดว่า "Hey Google คุยกับ Fate และ Fortune" เส้นทางเริ่มต้นผ่านการกระทํานี้สําหรับผู้ใช้ที่กลับมามีลักษณะดังต่อไปนี้
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ slots เพื่อรวบรวมข้อมูลจากผู้ใช้
- วิธีใช้เงื่อนไขเพื่อเพิ่มตรรกะลงในฉาก
- วิธีเพิ่ม Game Loop
- วิธีเพิ่มเส้นทางสนับสนุน
สิ่งที่ต้องมี
ข้อกําหนดเบื้องต้นสําหรับ Codelab มีดังนี้
- เว็บเบราว์เซอร์ เช่น Google Chrome
- โปรเจ็กต์การดําเนินการ Codelab ระดับ 1 ที่เสร็จสมบูรณ์ ( สร้างการดําเนินการสําหรับ Google Assistant โดยใช้ Actions Builder ระดับ 1)
เราขอแนะนําเป็นอย่างยิ่งให้ทําความคุ้นเคยกับ JavaScript (ES6) เพื่อทําความเข้าใจรหัสการดําเนินการสําหรับ Codelab นี้
2. สร้างอินเทอร์เฟซการสนทนาต่อไป
ใน Codelab แรก คุณสร้างการดําเนินการสนทนาแบบง่ายๆ ด้วยโหมดเดียว ซึ่งก็คือ Start
ใน Codelab นี้ คุณขยายการสนทนาของ Action' ได้ คุณจะกําหนดค่าการดําเนินการของคุณเพื่อดําเนินการต่อไปนี้ในส่วนต่อไปนี้
- การเปลี่ยนไปใช้โหมด
Fortune
ใหม่เมื่อผู้ใช้ต้องการทราบ - ถามผู้ใช้ว่าต้องการเลือกเส้นทางใด
- ทํานายโชคชะตาที่กําหนดเองโดยอิงตามตัวเลือกของผู้ใช้
สร้างโหมดFortune
ในส่วนนี้ คุณจะสร้างฉาก Fortune
และกําหนดวิธีที่ผู้ใช้เปลี่ยนฉากในระหว่างการสนทนา
ในการสร้างฉากใหม่ที่ชื่อ Fortune
ให้ทําตามขั้นตอนต่อไปนี้
- เปิดโปรเจ็กต์การดําเนินการของ Codelab ระดับ 1
- คลิกพัฒนาในแถบนําทาง
- ในส่วนฉาก ให้คลิกฉากเริ่มต้น
- คลิกความตั้งใจ ใช่ (ช่องเมื่อจับคู่ถูกต้อง) เพื่อเปิดตัวเลือก
- ล้างส่งข้อความแจ้งเพื่อนําข้อความแจ้งออก
- ในส่วนการเปลี่ยน ให้คลิกเมนูแบบเลื่อนลง จากนั้นคลิกในช่องข้อความ แล้วพิมพ์
Fortune
- คลิกเพิ่ม การดําเนินการนี้จะสร้างฉากใหม่ที่ชื่อ
Fortune
และยังเพิ่มการเปลี่ยนฉากจากฉากStart
เป็นฉากFortune
ตอนที่ผู้ใช้ต้องการฟังไพ่
กําหนดตรรกะการสนทนาสําหรับฉาก Fortune
ใน Codelab นี้ คุณกําหนดค่าฉาก Fortune
เพื่อถามผู้ใช้ &"คุณเลือกที่จะให้ความช่วยเหลือภารกิจ มังกร นักแปลภาษา หรือเข็มทิศได้อย่างไร คุณใช้ความสามารถที่เรียกว่าการเติมช่องโฆษณาเพื่อรวบรวมข้อมูลที่จําเป็นจากผู้ใช้ก่อนดําเนินการต่อได้
แอ็กชันของคุณจะช่วยแนะนําเครื่องช่วย 3 อย่าง ทั้งมังกร นักแปล และเข็มทิศ หากต้องการกําหนดค่าการดําเนินการเพื่อระบุตัวเลือก 3 รายการนี้ในอินพุตของผู้ใช้ คุณจะต้องสร้างประเภทใหม่
คุณสามารถใช้ประเภทภายในขั้นตอนเติมช่องโฆษณาของฉากเพื่อกําหนดข้อมูลที่คุณต้องการจากผู้ใช้ เมื่อเครื่องมือ NLU ตรวจพบช่องที่ตรงกันในอินพุตของผู้ใช้ ระบบจะแยกช่องโฆษณาเป็นพารามิเตอร์ที่พิมพ์ออกมา เพื่อให้คุณใช้ตรรกะที่มีในฉากได้
สร้างประเภท available_options
ในส่วนนี้ คุณสร้างประเภทใหม่ชื่อ available_options
ซึ่งระบุ 3 ตัวเลือกที่ผู้ใช้เลือกได้ (มังกร นักแปล และเข็มทิศ) เพื่อตอบสนองต่อข้อความแจ้ง นอกจากนี้ คุณยังกําหนดคําพ้องความหมายให้กับตัวเลือกเหล่านี้ได้ในกรณีที่ผู้ใช้กล่าวถึงสิ่งที่คล้ายกัน ในหัวข้อถัดไป คุณเพิ่มประเภท available_options
ในช่องเพื่อระบุว่าต้องการตัวเลือกจากผู้ใช้หรือไม่
หากต้องการสร้างประเภท available_options
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกประเภทในแถบนําทาง
- คลิก + (เครื่องหมายบวก) พิมพ์
available_options
แล้วกดEnter
- คลิก
available_options
เพื่อเปิดตัวเลือก
ประเภทจะได้รับการกําหนดค่าเป็นคู่คีย์-ค่า โดยที่ key คือชื่อของประเภท และ value เป็นคําพ้องความหมายของคีย์นั้น เมื่อกําหนดคีย์ ระบบจะเพิ่มคีย์ดังกล่าวเป็นค่าโดยอัตโนมัติ
ในการเพิ่มตัวเลือก 3 อย่างที่ผู้ใช้สามารถเลือกได้ ให้ทําตามขั้นตอนต่อไปนี้
- เลื่อนไปที่ส่วนเพิ่มรายการ
- ในช่องรายการใหม่ ให้พิมพ์
dragon
แล้วกดEnter
การดําเนินการนี้จะสร้างคีย์dragon
- พิมพ์
hydra
ในช่อง Add value แล้วกดEnter
เพื่อเพิ่มเป็นค่า (คําพ้องความหมาย) จากนั้น ทําขั้นตอนนี้ซ้ําสําหรับค่าlizard
- เพิ่มส่วนที่เหลือของคีย์และค่าที่เกี่ยวข้องดังนี้
translator | translator
,communicator
,machine
,decoder
,translate
compass | compass
,direction
,guide
- คลิกบันทึก
ตอนนี้การดําเนินการของคุณจะเข้าใจว่า available_options
เป็นมังกร นักแปล และเข็มทิศ และจะจดจําคําพ้องความหมายที่เกี่ยวข้องได้ด้วย
กําหนดค่าการเติมช่องโฆษณา
ถัดไป คุณต้องกําหนดค่าการส่งโฆษณาในช่อง Fortune
หากต้องการกําหนดค่าตรรกะแบบเติมช่องโฆษณา ให้ทําตามขั้นตอนต่อไปนี้
- ในแถบนําทางใต้ Scenes ให้คลิก 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
ในช่อง ซึ่งจะบอกข้อมูลที่คุณต้องใช้ที่รวบรวมจากผู้ใช้ (ตัวเลือกความช่วยเหลือ) ก่อนดําเนินการต่อ นอกจากนี้ คุณยังกําหนดค่าข้อความแจ้งภายในช่องได้ ซึ่งเพิ่มไปยังคิวข้อความแจ้งเมื่อผู้ใช้ไปถึงขั้นตอนการเติมช่องโฆษณาของฉาก
โปรดทราบว่าเมื่อคุณตั้งชื่อของช่องโฆษณา chosenOptions
ช่องปรับแต่งการเขียนค่าช่องโฆษณาจะมีการอัปเดตด้วยชื่อเดียวกัน ($session.params.chosenOptions
) คุณสามารถเข้าถึงพารามิเตอร์นี้ตามชื่อนั้นในเครื่องมือสร้างการดําเนินการและดําเนินการตามคําสั่งซื้อผ่านไลบรารีของไคลเอ็นต์ได้
กําหนดค่าเงื่อนไข 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.
- คลิกบันทึก
ทดสอบการทํางานในเครื่องจําลอง
ณ จุดนี้คุณได้กําหนดได้ว่าผู้ใช้ควรเลือกตัวเลือกใดเพื่อเติมช่องโฆษณา หลังจากได้รับข้อมูลจากผู้ใช้แล้ว การดําเนินการของคุณควรแสดงข้อความแจ้งที่อ้างอิงตัวเลือกเฉพาะที่ผู้ใช้เลือกไว้
หากต้องการทดสอบการดําเนินการ ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนําทาง
- คลิกหรือพิมพ์
Talk to my test app
ในช่อง Input แล้วกดEnter
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
(หรือคลิกชิปคําแนะนําใช่)
- คลิก พิมพ์ หรือพูดว่า
dragon
คุณควรได้รับข้อความแจ้ง "คุณได้เลือก Dragon."
ในส่วนถัดไป คุณจะปรับแต่งข้อความแจ้งสําหรับแต่ละความช่วยเหลือที่ผู้ใช้เลือกได้
ปรับแต่งข้อความแจ้งโดยใช้เงื่อนไข
ในส่วนนี้ คุณสามารถเพิ่มเงื่อนไขสําหรับตัวเลือกแต่ละรายการที่ผู้ใช้สามารถเลือกและเพิ่มข้อความแจ้งที่กําหนดเองสําหรับแต่ละเงื่อนไขได้
ปรับแต่งดวงชะตาของ dragon
หากต้องการอัปเดตเงื่อนไขและปรับแต่งข้อความแจ้งเมื่อผู้ใช้เลือก "dragon" ให้ทําตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนําทาง
- ในแถบนําทาง ให้คลิกฉากดวงชะตา
- คลิก
scene.slots.status == "FINAL"
เพื่อเปิดหน้าต่างตัวเลือก - อัปเดตคําสั่งเงื่อนไขเป็น
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
- เลือกส่งข้อความแจ้ง
- อัปเดต Prompt ด้วยการติดตามต่อไปนี้ในตัวแก้ไขโค้ด
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.
- คลิกบันทึก
ตอนนี้เมื่อผู้ใช้พูดว่า "dragon" หรือเสียงที่ฟังดูคล้ายคลึงกัน การกระทําของคุณจะเป็นโชคชะตาโดยอิงตามการเลือกนั้น จากนั้น คุณเพิ่มตัวเลือก 2 รายการที่เหลือ
ปรับแต่งดวงชะตาของ translator
หากต้องการเพิ่มเงื่อนไขและปรับแต่งข้อความแจ้งเมื่อผู้ใช้เลือก "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
หากต้องการเพิ่มเงื่อนไขและปรับแต่งข้อความแจ้งเมื่อผู้ใช้เลือก "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.
- คลิกบันทึก
ทดสอบการทํางานในเครื่องจําลอง
ณ จุดนี้ การดําเนินการของคุณควรมีการปรับแต่งให้เหมาะกับผู้ใช้โดยอิงตามตัวเลือกที่ผู้ใช้เลือก
หากต้องการทดสอบการดําเนินการ ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนําทาง
- พิมพ์
Talk to my test app
ในช่อง Input แล้วกดEnter
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
หรือคลิกชิปคําแนะนําใช่ - คลิก พิมพ์ หรือพูดว่า
Translator
คุณควรจะได้รับโชคที่เหมาะสมสําหรับตัวเลือก "นักแปล"
3. เพิ่ม Game Loop
ในส่วนนี้ คุณจะกําหนดค่าการดําเนินการเพื่อให้ผู้ใช้เลือกตัวเลือกอื่นและฟังคําขอที่แตกต่างกันได้หลังจากเลือก การเปลี่ยนแปลงนี้คล้ายกับข้อความ "คุณต้องการเล่นอีกครั้งCPDquot; เมื่อสิ้นสุดเกมหรือไม่ หากต้องการสร้างลูปนี้ คุณสามารถนําความตั้งใจ yes
และ no
ที่สร้างไว้ก่อนหน้านี้มาใช้และเพิ่มในฉากใหม่ที่ชื่อ Again
ได้
สร้างโหมดAgain
ในส่วนนี้ คุณสร้างฉาก Again
ใหม่และเพิ่มข้อความแจ้งที่ถามผู้ใช้ว่าต้องการเลือกตัวเลือกอื่นหรือไม่
ในการสร้างฉาก Again
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนําทาง
- คลิก + (เครื่องหมายบวก) ใต้ฉาก
- พิมพ์
Again
แล้วกดEnter
- คลิกฉาก
Again
ในแถบนําทาง - คลิก + (เครื่องหมายบวก) ถัดจากเมื่อป้อน
- เลือกส่งข้อความแจ้ง แล้วเพิ่มข้อความแจ้งและชิปคําแนะนําต่อไปนี้
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
ในส่วนการเปลี่ยน - คลิกบันทึก
ทดสอบการทํางานในเครื่องจําลอง
ในขั้นนี้ การดําเนินการของคุณควรแสดงข้อความแจ้งต่อไปนี้หลังจากได้รับโชคดี ดังนี้ "สิทธิ์การเข้าถึงนั้นเป็นสิ่งที่ฉันเห็น คุณต้องการเลือกตัวเลือกอื่นและสํารวจตัวเลือกในอนาคตหรือไม่"
หากต้องการทดสอบการดําเนินการ ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนําทาง
- พิมพ์
Talk to my test app
ในช่อง Input แล้วกดEnter
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
หรือคลิกชิปคําแนะนําใช่ - คลิก พิมพ์ หรือพูดว่า
dragon
คุณควรได้รับโชคชะตาสําหรับตัวเลือกมังกรและข้อความแจ้ง Again
เพิ่มความตั้งใจและเปลี่ยนไปเป็นฉากของ Again
ในส่วนนี้ คุณจะเพิ่มความตั้งใจ yes
และ no
ในฉาก Again
เพื่อให้การดําเนินการของคุณเข้าใจว่าผู้ใช้ต้องการเลือกตัวเลือกใหม่หรือไม่ คุณเพิ่มการเปลี่ยนที่เหมาะสมสําหรับความตั้งใจ yes
และ no
ได้ด้วย ความตั้งใจ yes
จะเปลี่ยนเป็นโหมด Fortune
ในขณะที่ความตั้งใจ no
จะเปลี่ยนเป็นโหมดระบบ End conversation
หากต้องการเพิ่มความตั้งใจและการเปลี่ยนไปใช้ฉาก Again
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนําทาง
- คลิกฉาก
Again
- คลิก + (เครื่องหมายบวก) ข้างการจัดการความตั้งใจของผู้ใช้
- เลือกใช่จากเมนูแบบเลื่อนลง Intent
- เลือก
Fortune
จากเมนูแบบเลื่อนลงการเปลี่ยน - คลิกบันทึก
- คลิก + (เครื่องหมายบวก) ข้างการจัดการความตั้งใจของผู้ใช้
- เลือกไม่จากเมนูแบบเลื่อนลง Intent
- เลือกจบการสนทนาจากเมนูแบบเลื่อนลงการเปลี่ยน
- เลือกส่งข้อความแจ้งและเพิ่มข้อความแจ้งต่อไปนี้ในตัวแก้ไขโค้ด
candidates:
- first_simple:
variants:
- speech: >-
It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
- คลิกบันทึก
ทดสอบการทํางานในเครื่องจําลอง
การดําเนินการของคุณควรเข้าใจว่าผู้ใช้ต้องการเลือกตัวเลือกใหม่หรือสิ้นสุดการสนทนา
หากต้องการทดสอบ Intent ของ yes
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนําทาง
- พิมพ์
Talk to my test app
ในช่อง Input แล้วกดEnter
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
หรือคลิกชิปคําแนะนําใช่ - คลิกพิมพ์ พิมพ์ หรือพูดตัวเลือกใดตัวเลือกหนึ่ง
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
คุณควรได้รับข้อความแจ้ง"คุณเลือกที่จะช่วยทําภารกิจ มังกร นักแปล หรือเข็มทิศดิจิทัล
หากต้องการทดสอบ Intent ของ no
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกพิมพ์ พิมพ์ หรือพูดตัวเลือกใดตัวเลือกหนึ่ง
- พิมพ์
No
ในช่องป้อนข้อมูลแล้วกดEnter
คุณควรได้รับข้อความแจ้งของ End conversation
: "ขอขอบคุณที่พอใจกับการเลือกของคุณ ขอให้โชคดีกับภารกิจของคุณ Farewell."
4. เพิ่มเส้นทางที่รองรับ
ขณะนี้ คุณได้สร้างเส้นทางหลักที่ผู้ใช้ส่วนใหญ่ดําเนินการแล้ว อย่างไรก็ตาม ผู้ใช้สามารถตอบกลับข้อความแจ้งจากโหมด Fortune
, "คุณเลือกที่จะให้ความช่วยเหลือเกี่ยวกับภารกิจ มังกร นักแปล หรือเข็มทิศดิจิทัลได้อย่างไร ด้วยตัวเลือกที่ไม่ใช่ตัวเลือกที่ให้ไว้
ในส่วนนี้ คุณจะต้องกําหนดค่าการดําเนินการเพื่อทําความเข้าใจว่าผู้ใช้เลือก "magic", "money", "horse" หรือ "phone" ไปให้ผู้ใช้เลือกหนึ่งใน 3 ตัวเลือกเดิมเมื่อเลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ หากต้องการกําหนดค่าตรรกะนี้ คุณต้องสร้าง type
ใหม่ที่มีตัวเลือกอื่นๆ เหล่านี้และ other_option
ใหม่ที่ต้องการซึ่งจะตรงกันเมื่อผู้ใช้พูดว่า 1 ในตัวเลือกต่อไปนี้ คุณต้องใส่คําอธิบายประกอบในวลีการฝึกอบรมภายใน other_option
เพื่อระบุและแยกพารามิเตอร์ Intent
เมื่อเครื่องมือประมวลผลภาษาธรรมชาติ (NLU) ของ Assistant ตรวจพบการจับคู่พารามิเตอร์ในการป้อนข้อมูลของผู้ใช้ จะดึงค่าเป็นพารามิเตอร์ที่พิมพ์ออกมาเพื่อให้คุณใช้ตรรกะกับฉากนั้นๆ ในฉากได้ ใน Codelab นี้ คุณกําหนดค่าการดําเนินการเพื่อดึงความช่วยเหลือที่ผู้ใช้เลือก และอ้างอิงถึงตัวเลือกนั้นในข้อความแจ้ง
สร้างประเภท unavailable_options
ตอนนี้คุณสามารถสร้างประเภท unavailable_options
ที่มีตัวเลือกต่างๆ ได้แล้ว เพื่อให้การดําเนินการของคุณระบุข้อมูลในอินพุตของผู้ใช้
หากต้องการสร้างประเภท unavailable_options
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนําทาง
- คลิก + (เครื่องหมายบวก) ในส่วนประเภท
- พิมพ์
unavailable_options
แล้วกดEnter
- คลิก
unavailable_options
เพื่อเปิดตัวเลือก - ป้อนข้อมูลต่อไปนี้และค่าที่เกี่ยวข้องในส่วนเพิ่มรายการ
|
|
|
|
|
|
|
|
ตารางคีย์-ค่าควรมีลักษณะดังนี้
- คลิกบันทึก
สร้าง Intent ของ other_option
ขั้นต่อไป ให้สร้าง Intent ชื่อ other_option
และเพิ่มวลีการฝึกอบรมที่มีตัวเลือกประเภท unavailable_options
ระบบจะจับคู่ความตั้งใจนี้เมื่อผู้ใช้เลือกตัวเลือกที่อยู่ในประเภท unavailable_options
หากต้องการสร้างและกําหนดค่า Intent ของ 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 ช่วยให้คุณดึงชื่อของตัวเลือกและใช้ตัวเลือกนั้นในข้อความแจ้งได้
เพิ่มความตั้งใจ other_option
ลงในฉาก Fortune
ตอนนี้คุณมีความตั้งใจ other_option
ที่จัดการผู้ใช้ที่ระบุตัวเลือกที่ไม่ใช่ 1 ใน 1 ตัวเลือกเดิมได้แล้ว ในส่วนนี้ ให้เพิ่มความตั้งใจ other_option
ลงในฉาก Fortune
คุณใช้พารามิเตอร์ Intent เพื่อปรับแต่งข้อความแจ้งโดยอิงตามข้อมูลที่ผู้ใช้ป้อน
หากต้องการเพิ่ม Intent ของ other_option
ไปยังฉาก Fortune
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกโหมดดวงชะตา
- คลิก + (เครื่องหมายบวก) ข้างการจัดการความตั้งใจของผู้ใช้
- เลือก
other_option
จากเมนูแบบเลื่อนลง Intent - เลือกส่งข้อความแจ้งและเพิ่มข้อความแจ้งต่อไปนี้
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
จะเพิ่มข้อความแจ้งไปยังคิวข้อความแจ้ง จากนั้นระบบจะส่งคิวข้อความแจ้งไปให้ผู้ใช้
ทดสอบการทํางานในเครื่องจําลอง
การดําเนินการของคุณควรตอบสนองอย่างเหมาะสมเมื่อผู้ใช้เลือกตัวเลือกข้อใดข้อหนึ่งในประเภท unavailable_options
และระบุสิ่งที่ผู้ใช้เลือก การดําเนินการของคุณควรจะแจ้งให้ผู้ใช้เลือกหนึ่งในตัวเลือกดั้งเดิม (มังกร นักแปล หรือเข็มทิศ)
หากต้องการทดสอบการดําเนินการในเครื่องจําลอง ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนําทาง
- พิมพ์
Talk to my test app
ในช่อง Input แล้วกดEnter
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
หรือคลิกชิปคําแนะนําใช่ - พิมพ์
magic
ในช่อง Input แล้วกดEnter
คุณอาจสังเกตเห็นว่าข้อความแจ้งแสดงขึ้นไม่ถูกต้องเมื่อผู้ใช้เลือก "magic" จากบทความ "a" ที่วางไว้ก่อนหน้า คุณแก้ไขปัญหานี้ได้ในส่วนต่อไปนี้
เพิ่มเครื่องจัดการ unavailable_options
ในการวางบทความ "a" ก่อนตัวเลือกที่เหมาะสมจากประเภท unavailable_options
คุณสามารถกําหนดค่าเครื่องจัดการเหตุการณ์ในตรรกะการดําเนินการตามคําสั่งซื้อเพื่อตรวจสอบว่าตัวเลือกที่ผู้ใช้ต้องการต้องมี "a" มาก่อนหรือไม่ ก่อนอื่น คุณจะต้องกําหนดค่าการดําเนินการให้เรียกเครื่องจัดการในคอนโซล
หากต้องการเพิ่มเครื่องจัดการ unavailable_options
ให้ทําตามขั้นตอนต่อไปนี้
- คลิกพัฒนาในแถบนําทาง
- คลิกฉาก
Fortune
- ในส่วนการจัดการ Intent ของผู้ใช้ ให้คลิกเมื่อจับคู่ other_option อยู่เพื่อเปิดหน้าต่าง
- ล้างช่องทําเครื่องหมายส่งข้อความแจ้ง
- เลือกช่องทําเครื่องหมายเรียกใช้เว็บฮุค
- ป้อน
unavailable_options
ในกล่องข้อความสําหรับเครื่องจัดการเหตุการณ์
- คลิกบันทึก
อัปเดตและทําให้การดําเนินการตามคําสั่งซื้อใช้งานได้
เมื่อกําหนดค่าการดําเนินการให้เรียกเครื่องจัดการเหตุการณ์ unavailable_options
แล้ว คุณจะอัปเดตเครื่องจัดการในการดําเนินการดําเนินการตามคําสั่งซื้อและทําให้ใช้งานได้
หากต้องการอัปเดตการดําเนินการตามคําสั่งซื้อ ให้ทําตามขั้นตอนต่อไปนี้
- คลิกเว็บฮุคในแถบนําทาง
- เพิ่มโค้ดต่อไปนี้ในเครื่องจัดการ
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');
- คลิก Save Fulfillment
- คลิก Deploy Fulfillment เมื่อการติดตั้งใช้งานเสร็จสมบูรณ์ ข้อความเหนือเครื่องมือแก้ไขจะระบุว่าการติดตั้งใช้งาน Cloud Function เป็นเวอร์ชันล่าสุดแล้ว
ทําความเข้าใจโค้ด
เครื่องจัดการ unavailable_options
จะดําเนินการต่อไปนี้
- รับข้อมูล
option
จากออบเจ็กต์conv
และกําหนดoption
ให้กับพร็อพเพอร์ตี้original
ซึ่งเป็นอินพุตดิบจากผู้ใช้ - กําหนด
optionKey
ให้กับพร็อพเพอร์ตี้resolved
ซึ่งเป็นคีย์สําหรับประเภทunavailable_options
- ตรวจสอบว่า
optionKey
เป็นหนึ่งในตัวเลือกที่ต้องการ "a" ไหม ให้สร้างข้อความด้วย "a" - เพิ่มข้อความผ่าน
conv.add(message)
ทดสอบการทํางานในเครื่องจําลอง
การดําเนินการของคุณควรปรับเปลี่ยนข้อความแจ้งโดยพิจารณาว่าการเลือกของผู้ใช้จากประเภท unavailable_options
ต้องการบทความ "a" มาก่อนหรือไม่
หากต้องการทดสอบการดําเนินการ ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทดสอบในแถบนําทาง
- คลิกหรือพิมพ์
Talk to my test app
ในช่อง Input แล้วกดEnter
- พิมพ์
Yes
ในช่อง Input แล้วกดEnter
หรือคลิกชิปคําแนะนําใช่ - พิมพ์
magic
ในช่อง Input แล้วกดEnter
- พิมพ์
horse
ในช่อง Input แล้วกดEnter
การดําเนินการของคุณควรเพิ่มบทความ "a" ก่อนตัวเลือก "horse" ขณะสร้างข้อความแจ้งที่ไม่มีตัวเลือก "a" สําหรับตัวเลือก "magic"
ทําความสะอาดโปรเจ็กต์ [แนะนํา]
เราขอแนะนําให้นําโปรเจ็กต์ที่คุณไม่ได้ตั้งใจจะใช้ออกเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่อาจเกิดขึ้น หากต้องการลบโปรเจ็กต์ที่สร้างใน Codelab นี้ ให้ทําตามขั้นตอนต่อไปนี้
- หากต้องการลบโปรเจ็กต์ระบบคลาวด์และทรัพยากร ให้ทําตามขั้นตอนที่ระบุในส่วนการปิด (ลบ) โปรเจ็กต์
- ไม่บังคับ: หากต้องการนําโปรเจ็กต์ออกจากคอนโซลการดําเนินการทันที โปรดดูลบโปรเจ็กต์ หากไม่ดําเนินการขั้นตอนนี้ ระบบจะลบโปรเจ็กต์ออกโดยอัตโนมัติหลังจากผ่านไปประมาณ 30 วัน
5. ยินดีด้วย
ตอนนี้คุณได้เรียนรู้ทักษะระดับกลางที่จําเป็นต่อการสร้างการดําเนินการสําหรับ Google Assistant แล้ว
สิ่งที่คุณครอบคลุม
- วิธีพัฒนาการดําเนินการสนทนาโดยใช้ไลบรารีการดําเนินการ Node.js
- วิธีใช้ช่องโฆษณาเพื่อรวบรวมข้อมูลจากผู้ใช้
- วิธีใช้เงื่อนไขเพื่อเพิ่มตรรกะลงในฉาก
- วิธีเพิ่ม Game Loop
- วิธีเพิ่มเส้นทางสนับสนุน
ดูข้อมูลเพิ่มเติม
สํารวจแหล่งข้อมูลต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง Actions for Google Assistant
- เอกสารประกอบสําหรับการพัฒนาการดําเนินการสําหรับ Google Assistant
- หน้าการดําเนินการใน Google GitHub สําหรับโค้ดตัวอย่างและไลบรารี
- ชุมชน Reddit อย่างเป็นทางการสําหรับนักพัฒนาซอฟต์แวร์ที่ทํางานกับ Google Assistant
- หลักเกณฑ์การออกแบบการสนทนาสําหรับแนวทางปฏิบัติแนะนําและหลักเกณฑ์เกี่ยวกับการสนทนา
ติดตาม @ActionsOnGoogle บน Twitter เพื่อติดตามประกาศล่าสุดและทวีตไปที่ #AoGDevs เพื่อแชร์สิ่งที่คุณสร้าง
แบบสํารวจความคิดเห็น
ก่อนดําเนินการ โปรดกรอกแบบสํารวจสั้นๆ เกี่ยวกับประสบการณ์การใช้งาน