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 | translatorcommunicatormachinedecodertranslatecompass | 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 spellsI really really want to use a phonemagic!cashI 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 เพื่อแชร์สิ่งที่คุณสร้าง
แบบสำรวจความคิดเห็น
ก่อนจากกัน โปรดกรอกแบบสำรวจสั้นๆ เกี่ยวกับประสบการณ์ของคุณ