Platform developer Asisten Google memungkinkan Anda membuat software untuk memperluas fungsi Asisten Google (asisten pribadi virtual) di lebih dari 1 miliar perangkat, termasuk smart speaker, ponsel, mobil, TV, headphone, dan lainnya. Pengguna berinteraksi dengan Asisten melalui percakapan untuk menyelesaikan berbagai hal, seperti membeli bahan makanan atau memesan transportasi online. Sebagai developer, Anda dapat menggunakan platform developer Asisten untuk dengan mudah membuat dan mengelola pengalaman percakapan yang menyenangkan dan efektif antara pengguna dan layanan fulfillment pihak ketiga Anda sendiri.
Codelab ini mencakup konsep tingkat menengah pengembangan dengan Asisten Google dan build dari Action yang dibuat di codelab Level 1. Kami sangat menyarankan agar Anda menyelesaikan codelab Level 1 sebelum memulai codelab ini.
Action yang Anda buat dalam codelab ini memberi tahu pengguna tentang ramalan (Fortune) dari perjalanan mereka di sebuah dunia dongeng, Gryffinberg, berdasarkan bantuan yang mereka pilih.
Yang akan Anda buat
Dalam codelab ini, Anda membuat Action Percakapan canggih dengan fungsi berikut:
- Mengumpulkan data dari pengguna dan, tergantung nilainya, mengubah pesan percakapan.
- Menanggapi dengan pertanyaan lanjutan untuk melanjutkan percakapan.
- Membuat game loop sehingga pengguna dapat kembali berinteraksi dengan Action setelah menerima sebuah ramalan.
Sebelum mulai membuat, Anda dapat berinteraksi dengan Action versi live di perangkat Anda yang dilengkapi Asisten Google dengan mengucapkan "Ok Google, bicara dengan Fate dan Fortune". Untuk pengguna yang kembali, jalur default melalui Action ini terlihat seperti interaksi berikut:


Yang akan Anda pelajari
- Cara menggunakan slot untuk mengumpulkan data dari pengguna
- Cara menggunakan kondisi untuk menambahkan logika ke sebuah scene
- Cara menambahkan game loop
- Cara menambahkan jalur pendukung
Yang akan Anda butuhkan
Prasyarat untuk codelab ini meliputi yang berikut:
- IDE/editor teks pilihan Anda.
- Terminal untuk menjalankan perintah shell dengan NodeJS, npm, dan git sudah terinstal.
- Browser web, seperti Google Chrome.
- Project Action codelab Level 1 yang sudah selesai.
Untuk memahami kode fulfillment code lab ini, pemahaman tentang JavaScript (ES6) sangat direkomendasikan, meskipun tidak diwajibkan.
Opsional: Dapatkan kode contoh
Anda juga dapat memperoleh kode project level 1 lengkap dari repositori GitHub ini atau kode project level 2 lengkap dari repositori GitHub ini.
Di codelab pertama, Anda membuat Action Percakapan sederhana dengan satu scene, Start.
Di codelab ini, Anda akan memperluas percakapan Action Anda. Di bagian berikut, Anda akan mengonfigurasi Action untuk melakukan hal berikut:
- Melakukan transisi ke scene
Fortunebaru saat pengguna ingin mendengar ramalan mereka - Bertanya kepada pengguna bantuan mana yang ingin mereka pilih untuk perjalanan mereka
- Memberikan ramalan yang disesuaikan berdasarkan pilihan pengguna
Membuat dan melakukan transisi ke scene Fortune
Di bagian ini, Anda akan melakukan hal berikut:
- Menghapus pesan yang ada dari scene
Start, yang merespons pengguna dan mengakhiri percakapan - Menentukan transisi dari scene
Startke sceneFortune - Membuat scene
Fortune
Untuk mengubah scene Start dan menambahkan transisi ke scene Fortune, ikuti langkah-langkah berikut:
- Buka project Action Anda dari codelab Level 1 di editor teks.
- Buka file
custom/scenes/Start.yaml. - Perbarui
handleruntuk intentyessehingga kode Anda cocok dengan cuplikan di bawah:
Start.yaml
intentEvents:
- intent: "yes"
transitionToScene: Fortune
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I understand, stranger. Best of luck on your quest! Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- Simpan file tersebut.
Untuk membuat scene baru bernama Fortune, ikuti langkah berikut:
- Arahkan ke project Action codelab Level 1 Anda di terminal.
- Buat file baru bernama
Fortune.yamldi direktoriscenes:
touch custom/scenes/Fortune.yaml
Anda akan mengedit file ini di bagian berikutnya.
Menentukan logika percakapan untuk scene Fortune
Dalam codelab ini, Anda akan mengonfigurasi scene Fortune untuk bertanya kepada pengguna, "What do you choose to help you on your quest, a dragon, a translator, or a compass?"("Apa yang akan Anda pilih untuk membantu misi Anda, naga, penerjemah, atau kompas?") Anda dapat menggunakan fitur yang disebut pengisian slot untuk mengumpulkan informasi yang diperlukan dari pengguna sebelum melanjutkan.
Action Anda memberikan ramalan untuk tiga bantuan: naga, penerjemah, dan kompas. Untuk mengonfigurasi Action guna mengidentifikasi ketiga opsi ini di input pengguna, Anda harus membuat tipe baru.
Anda dapat menggunakan type dalam sebuah tahapan slot filling scene untuk menentukan informasi yang Anda inginkan dari pengguna. Ketika mesin NLU mendeteksi kecocokan slot dalam input pengguna, mesin akan mengekstrak slot sebagai parameter yang diketik, sehingga Anda dapat menjalankan logika dengannya dalam sebuah scene.
Membuat tipe available_options
Pada bagian ini, Anda akan membuat tipe baru yang disebut available_options, yang menentukan ketiga opsi yang bisa dipilih pengguna (naga, penerjemah, dan kompas) sebagai tanggapan terhadap pesannya. Anda juga dapat menentukan beberapa sinonim untuk opsi-opsi ini jika pengguna mengatakan sesuatu yang serupa. Di bagian selanjutnya, Anda akan menambahkan tipe available_options ke slot untuk menentukan bahwa Anda ingin memperoleh pilihan pengguna.
Untuk membuat tipe available_options, ikuti langkah-langkah berikut:
- Buat direktori baru bernama
types:
mkdir custom/types
- Buat file baru bernama
available_options.yamldi direktoritypes:
touch custom/types/available_options.yaml
- Buka
custom/types/available_options.yamldi editor teks Anda.
Tipe dikonfigurasikan sebagai informasi key-value pair: kunci adalah nama tipe dan nilai adalah sinonim kunci tersebut. Setelah menentukan kunci, kunci akan otomatis ditambahkan sebagai sebuah nilai. Dengan Actions SDK, Anda menampilkan kunci sebagai entities, dan nilai sebagai synonyms.
Untuk menambahkan ketiga opsi yang dapat dipilih pengguna, ikuti langkah-langkah berikut:
- Tambahkan
entitiesdansynonymsberikut dalam fileavailable_options.yaml:
available_options.yaml
synonym:
entities:
dragon:
synonyms:
- dragon
- hydra
- lizard
translator:
synonyms:
- translator
- communicator
- machine
- decoder
- translate
compass:
synonyms:
- compass
- direction
- guide
- navigator
matchType: EXACT_MATCH
- Simpan file tersebut.
Action Anda sekarang memahami bahwa available_options adalah naga, penerjemah, dan kompas, serta dapat mengenali beberapa sinonim yang sesuai.
Mengonfigurasi pengisian slot
Selanjutnya, Anda perlu mengonfigurasi pengisian slot di scene Fortune. Untuk mengonfigurasi logika pengisian slot, ikuti langkah-langkah berikut:
- Buka
custom/scenes/Fortune.yamldi editor teks Anda. - Tambahkan data
slotsberikut ke fileFortune.yaml:
Fortune.yaml
slots:
- commitBehavior:
writeSessionParam: chosenOptions
name: chosenOptions
promptSettings:
initialPrompt:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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
required: true
type:
name: available_options
- Simpan file tersebut.
Sekarang Anda telah menambahkan tipe available_options ke slot, yang memberi tahu Action Anda informasi yang perlu dikumpulkan dari pengguna (yaitu pilihan bantuan) sebelum melanjutkan. Anda juga telah mengonfigurasi pesan dalam slot, yang ditambahkan ke antrean pesan saat pengguna mencapai tahap pengisian slot dalam scene.
Saat Anda memberi nama slot chosenOptions, kolom writeSessionsParam akan diperbarui dengan nama yang sama ($session.params.chosenOptions). Anda dapat mengakses parameter ini dengan nama tersebut dalam perintah dan fulfillment Anda melalui library klien.
Tambahkan kondisi
Setelah menambahkan slot yang memerlukan pilihan bantuan pengguna, Anda dapat menambahkan condition untuk memeriksa apakah data slot telah diperoleh sebelum pengguna dapat melanjutkan percakapan.
Di bagian ini, Anda menambahkan kondisi scene.slots.status == "FINAL", yang memeriksa pengisian slot agar selesai. Setelah semua slot diisi, kondisi menambahkan pesan (You picked $session.params.chosenOptions.) ke antrean pesan.
Untuk mengonfigurasi kondisi scene.slots.status == "FINAL", ikuti langkah-langkah berikut:
- Buka
custom/scenes/Fortune.yamldi editor teks Anda. - Tambahkan data
conditionalEventske bagian atas fileFortune.yaml:
Fortune.yaml
conditionalEvents:
- condition: scene.slots.status == "FINAL"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: You picked $session.params.chosenOptions.
- Simpan file tersebut.
Menguji Action Anda di simulator
Pada tahap ini, Anda telah menentukan opsi mana yang harus dipilih pengguna untuk mengisi slot. Setelah mendapatkan informasi ini dari pengguna, Action Anda seharusnya akan memberikan pesan yang merujuk pada opsi yang telah mereka pilih.
Untuk menguji Action Anda, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut:
gactions deploy preview
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Salin URL yang diberikan dan tempelkan ke browser.
- Klik atau ketik
Talk to my test appdi kolom Input dan tekan Enter. - Ketik
Yesdi kolom Input, lalu tekan Enter. Atau, Anda dapat mengklik chip saran Ya.

- Klik, ketik, atau ucapkan
dragon. Anda akan menerima perintah "You picked dragon" ("Anda telah memilih naga").
Di bagian berikutnya, Anda akan menyesuaikan perintah untuk setiap bantuan yang bisa dipilih pengguna.
Menyesuaikan perintah menggunakan condition
Di bagian ini, Anda akan menambahkan kondisi untuk setiap opsi yang dapat dipilih pengguna dan menambahkan pesan kustom untuk setiap kondisi.
Menyesuaikan fortune dragon
Untuk memperbarui kondisi dan menyesuaikan pesan saat pengguna memilih "naga", ikuti langkah berikut:
- Buka
custom/scenes/Fortune.yamldi editor teks Anda. - Ganti data
conditionalEventsdengan cuplikan berikut di fileFortune.yaml:
Fortune.yaml
conditionalEvents:
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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.
- Simpan file tersebut.
Sekarang, saat pengguna mengatakan "naga" atau sesuatu yang terdengar mirip, Action Anda memberikan ramalan berdasarkan pilihan tersebut. Selanjutnya, Anda akan menambahkan dua pilihan yang tersisa.
Sesuaikan ramalan translator dan compass
Untuk menambahkan kondisi dan menyesuaikan pesan saat pengguna mengucapkan "penerjemah" atau "kompas", ikuti langkah berikut:
- Di file
custom/scenes/Fortune.yaml, tambahkan dua kondisi lainnya ke kondisidragon:
Fortune.yaml
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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 other journeys across the
earth. After its work is done, it retires honorably to a premier location
in the Gryffinberg History Museum.
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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.
- Simpan file tersebut.
Menguji Action Anda di simulator
Pada tahap ini, Action Anda akan memberikan ramalan yang disesuaikan untuk pengguna berdasarkan opsi yang mereka pilih.
Untuk menguji Action Anda, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut:
gactions deploy preview
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Salin URL yang diberikan dan tempelkan ke browser.
- Ketik
Talk to my test appdi kolom Input, lalu tekan Enter. - Ketik Yes di kolom Input, lalu tekan Enter. Atau, klik chip saran Yes.
- Klik, ketik, atau ucapkan
Translator.

Anda akan menerima ramalan yang sesuai untuk opsi "penerjemah".
Di bagian ini, Anda akan mengonfigurasi Action Anda sehingga pengguna dapat memilih opsi lain dan mendengar ramalan yang berbeda setelah membuat pilihan. Perubahan ini mirip dengan pesan "Do you want to play again?" ("Apakah Anda ingin bermain lagi?") di akhir sebuah game. Untuk membuat loop ini, Anda dapat menggunakan kembali intent yes dan no yang dibuat sebelumnya, lalu menambahkannya ke scene baru yang disebut Again.
Membuat scene Again
Di bagian ini, Anda akan membuat scene Again baru dan menambahkan perintah yang menanyakan pengguna apakah mereka ingin memilih opsi yang berbeda.
Untuk membuat dan mengonfigurasi scene Again, ikuti langkah-langkah berikut:
- Buat file baru bernama
Again.yamldi direktoriscenes:
touch custom/scenes/Again.yaml
- Buka
custom/scenes/Again.yamldi editor teks Anda. - Tambahkan data
onEnterberikut keAgain.yaml:
Again.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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"
- Simpan file tersebut.
Tambahkan transisi dari scene Fortune ke Again
Setelah pengguna menerima ramalannya, percakapan perlu bertransisi ke scene Again yang baru.
Untuk menambahkan transisi dari scene Fortune ke scene Again, ikuti langkah-langkah berikut:
- Buka
custom/scenes/Fortune.yamldi editor teks Anda. - Tambahkan
transitionToScene: Againke setiap kondisi, seperti yang ditunjukkan dalam cuplikan berikut:
Fortune.yaml
conditionalEvents:
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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.
transitionToScene: Again
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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 other journeys across the
earth. After its work is done, it retires honorably to a premier location
in the Gryffinberg History Museum.
transitionToScene: Again
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
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.
transitionToScene: Again
- Simpan file tersebut.
Menguji Action Anda di simulator
Pada tahap ini, Action Anda akan memberikan pesan berikut kepada pengguna setelah mereka menerima ramalannya: "That is what I see for you. Would you like to choose a different option and explore another future?"("Itu yang saya lihat untuk Anda. Apa Anda ingin memilih opsi lain dan menjelajahi masa depan yang berbeda?")
Untuk menguji Action Anda, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut:
gactions deploy preview
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Salin URL yang diberikan dan tempelkan ke browser.
- Ketik
Talk to my test appdi kolom Input, lalu tekan Enter. - Ketik
Yesdi kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Klik, ketik, atau ucapkan
dragon.

Anda akan menerima ramalan untuk opsi naga dan perintah Again.
Tambahkan intent dan transisi ke scene Again
Di bagian ini, Anda akan menambahkan intent yes dan no ke scene Again sehingga Action Anda memahami apakah pengguna ingin memilih opsi baru atau tidak. Anda juga akan menambahkan transisi yang sesuai untuk intent yes dan no. Intent yes bertransisi ke scene Fortune, sementara intent no bertransisi ke scene sistem End conversation.
Untuk menambahkan intent dan transisi ke scene Again, ikuti langkah-langkah berikut:
- Buka
custom/scenes/Again.yamldi editor teks Anda. - Tambahkan data
intentEventsdi bagian atas fileAgain.yaml, di atasOnEnter:
Again.yaml
intentEvents:
- intent: "yes"
transitionToScene: Fortune
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: It pleases me that you are satisfied with your choice. Best
of luck on your quest. Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- Simpan file tersebut.
Menguji Action Anda di simulator
Action Anda sekarang akan memahami apakah pengguna ingin memilih opsi baru atau mengakhiri percakapan.
Untuk menguji intent yes, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut:
gactions deploy preview
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Salin URL yang diberikan dan tempelkan ke browser.
- Ketik
Talk to my test appdi kolom Input, lalu tekan Enter. - Ketik
Yesdi kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Klik, ketik, atau ucapkan salah satu opsi.
- Ketik
Yesdi kolom Input dan tekan Enter.

Anda akan menerima pesan, "What do you choose to help you on your quest, a dragon, a translator, or a compass?"("Apa yang akan Anda pilih untuk membantu misi Anda, naga, penerjemah, atau kompas?")
Untuk menguji intent no, ikuti langkah-langkah berikut:
- Klik, ketik, atau ucapkan salah satu opsi.
- Ketik
Nodi kolom input dan tekan Enter.
Anda akan menerima pesan End conversation: "It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell. ("Saya senang mengetahui Anda puas dengan pilihan Anda. Semoga sukses dalam misi Anda. Selamat tinggal")
Anda kini telah membuat jalur utama yang sebagian besar pengguna akan lakukan dalam Action Anda. Akan tetapi, pengguna bisa saja merespons perintah dari sceneFortune, "Apa yang akan Anda pilih untuk membantu misi Anda, naga, penerjemah, atau kompas?", dengan pilihan yang bukan salah satu dari opsi yang disediakan.
Di bagian ini, Anda akan mengonfigurasi Action untuk memahami saat pengguna mengucapkan "ajaib", "uang", "kuda", atau "telepon", dan meminta ulang pengguna untuk memilih salah satu dari tiga pilihan asli saat mereka memilih salah satu dari opsi di atas. Untuk mengonfigurasi logika ini, Anda perlu membuat type baru yang berisi pilihan lain ini dan intent baru, other_option, yang cocok saat pengguna mengucapkan salah satu dari opsi ini. Anda juga perlu menganotasi frasa pelatihan di dalam intent other_option untuk mengidentifikasi dan mengekstrak parameter intent.
Saat mesin Natural Language Processing Asisten mendeteksi kecocokan parameter dalam input pengguna, mesin ini mengekstrak nilai sebagai parameter yang diketik sehingga Anda dapat menjalankan logika dengan parameter tersebut dalam sebuah scene. Dalam codelab ini, Anda mengonfigurasi Action untuk mengekstrak bantuan yang dipilih pengguna dan merujuk ke pilihan tersebut dalam perintah.
Membuat tipe unavailable_options
Anda sekarang dapat membuat tipe unavailable_options yang berisi berbagai opsi, sehingga Action Anda dapat mengidentifikasi data tersebut dalam input pengguna.
Untuk membuat tipe unavailable_options, ikuti langkah-langkah berikut:
- Buat file baru bernama
unavailable_options.yamldi direktoritypes:
touch custom/types/unavailable_options.yaml
- Buka
custom/types/unavailable_options.yamldi editor teks Anda. - Tambahkan data
synonymsberikut ke fileunavailable_options.yaml:
unavailable_options.yaml
synonym:
entities:
money:
synonyms:
- money
- cash
- gold
horse:
synonyms:
- horse
- stallion
- steed
magic:
synonyms:
- magic
- enchanted
- spells
phone:
synonyms:
- phone
- cell
- apps
matchType: EXACT_MATCH
- Simpan file tersebut.
Membuat intent other_option
Selanjutnya, Anda akan membuat intent yang disebut other_option dan menambahkan frasa pelatihan yang menyertakan opsi tersebut dalam tipe unavailable_options. Intent ini akan dicocokkan saat pengguna memilih pilihan yang ada dalam type unavailable_options.
Untuk membuat dan mengonfigurasi intent other_option, ikuti langkah-langkah berikut:
- Buat file baru bernama
other_option.yamldi direktoriintents:
touch custom/intents/other_option.yaml
- Buka
custom/intents/other_option.yamldi editor teks Anda. - Tambahkan data
parametersdantrainingPhrasesberikut ke fileother_option.yaml:
other_option.yaml
parameters:
- name: chosenUnavailableOption
type:
name: unavailable_options
trainingPhrases:
- I want to use ($chosenUnavailableOption 'spells' auto=true)
- I really really want to use a ($chosenUnavailableOption 'phone' auto=true)
- ($chosenUnavailableOption 'magic' auto=true)!
- ($chosenUnavailableOption 'cash' auto=true)
- I want to ride a ($chosenUnavailableOption 'horse' auto=true)
Di sini, Anda menganotasi frasa pelatihan secara manual dengan opsi tidak tersedia yang Anda tetapkan di bagian sebelumnya. Parameter intent, chosenUnavailableOption, memungkinkan Anda mengekstrak nama opsi dan menggunakan opsi tersebut dalam pesan, yang akan Anda lakukan di bagian berikut.
- Simpan file tersebut.
Tambahkan intent other_option ke scene Fortune
Anda sekarang memiliki intent, other_option, yang dapat menangani pengguna yang menentukan opsi yang bukan salah satu dari opsi asli. Di bagian ini, Anda akan menambahkan intent other_option ke scene Fortune. Anda menggunakan parameter intent untuk menyesuaikan pesan berdasarkan input pengguna.
Untuk menambahkan intent other_option ke scene Fortune, ikuti langkah-langkah berikut:
- Buka
custom/scenes/Fortune.yamldi editor teks Anda. - Tambahkan data
intentEventsberikut di antara dataconditionalEventsdan dataslots:
Fortune.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I have seen the future and a $intent.params.chosenUnavailableOption.original will not aid you on your journey.
intent: other_option
- Simpan file tersebut.
Ekspresi $intent.params.chosenUnavailableOption mengacu pada objek parameter intent, dan $intent.params.chosenUnavailableOption.original mengacu pada nilai objek tersebut. Properti original merujuk pada input mentah yang ditentukan pengguna.
Saat pengguna mengatakan opsi yang tercantum dalam tipe unavailable_options selama scene Fortune, intent other_option akan dicocokkan dan menambahkan pesan ke antrean pesan. Karena tidak ada transisi yang ditetapkan, loop eksekusi scene berlanjut dengan mengevaluasi ulang tahapan kondisi. Slot chosenOptions kemudian menambahkan permintaannya ke antrean pesan, dan antrean pesan dikirimkan ke pengguna.
Menguji Action Anda di simulator
Action Anda sekarang seharusnya merespons secara tepat ketika pengguna memilih salah satu opsi yang tercantum dalam tipe unavailable_options dan menentukan bantuan yang dipilih pengguna. Kemudian, Action Anda akan meminta ulang pengguna untuk memilih salah satu pilihan asli (naga, penerjemah, atau kompas).
Untuk menguji Action Anda di simulator, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut:
gactions deploy preview
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Salin URL yang diberikan dan tempelkan ke browser.
- Ketik
Talk to my test appdi kolom Input, lalu tekan Enter. - Ketik
Yesdi kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Ketik
magicdi kolom Input, lalu tekan Enter.

Anda mungkin melihat bahwa pesan tidak terdengar benar saat pengguna memilih "ajaib" karena artikel "a" yang ditempatkan sebelumnya. Anda mengatasi masalah ini di bagian berikutnya.
Menambahkan pengendali unavailable_options
Untuk menempatkan artikel "a" sebelum pilihan yang sesuai dari tipe unavailable_options, Anda dapat mengonfigurasi pengendali peristiwa dalam logika fulfillment Anda untuk memeriksa apakah opsi yang dipilih pengguna memerlukan "a" sebelumnya. Pertama, Anda perlu mengonfigurasi Action untuk memanggil pengendali dari scene Fortune.
Untuk menambahkan pengendali unavailable_options ke scene Fortune, ikuti langkah berikut:
- Buka
custom/scenes/Fortune.yamldi editor teks Anda. - Perbarui file
Fortune.yamldengan dataintentEventsberikut:
Fortune.yaml
intentEvents:
- handler:
webhookHandler: unavailable_options
intent: other_option
- Simpan file tersebut.
Memperbarui dan men-deploy fulfillment
Setelah mengonfigurasi Action untuk memanggil pengendali peristiwa unavailable_options, Anda dapat memperbarui pengendali di fulfillment Anda dan melakukan deployment.
Untuk memperbarui fulfillment Anda, ikuti langkah-langkah berikut:
- Buka
webhooks/ActionsOnGoogleFulfillment/index.jsdi editor teks Anda. - Tambahkan kode berikut ke
index.jsdi bagian pengendaligreeting:
index.js
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);
});
- Tambahkan kode berikut di bagian
const app = conversation({debug:true});:
index.js
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Simpan file tersebut.
Memahami kode
Pengendali unavailable_options melakukan hal berikut:
- Mengambil data
optiondari objekconvdan menetapkanoptionke propertioriginal, yang merupakan input mentah dari pengguna - Menetapkan
optionKeyke propertiresolved, yang merupakan kunci untuk typeunavailable_options - Memeriksa apakah
optionKeymerupakan salah satu opsi yang memerlukan "a"; Jika ya, maka akan membuat pesan dengan tambahan "a" - Menambahkan pesan melalui
conv.add(message)
Memperbarui pengendali
Untuk mengizinkan Action menggunakan unavailable_options, tambahkan pengendali unavailable_options ke webhooks/ActionsOnGoogleFulfillment.yaml.
- Tambahkan nama pengendali
unavailable_optionskeActionsOnGoogleFulfillment.yaml:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- Simpan file tersebut.
Menguji Action Anda di simulator
Action Anda sekarang harus menyesuaikan perintah berdasarkan apakah pilihan pengguna dari tipe unavailable_options memerlukan artikel "a" sebelumnya.
Untuk menguji Action Anda, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut:
gactions deploy preview
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Salin URL yang diberikan dan tempelkan ke browser.
- Klik atau ketik
Talk to my test appdi kolom Input dan tekan Enter. - Ketik
Yesdi kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Ketik
magicdi kolom Input, lalu tekan Enter. Lalu, ketikhorsedi kolom Input dan tekan Enter.

Action Anda harus menambahkan artikel "a" sebelum pilihan "kuda", sambil menyusun perintah tanpa artikel "a" untuk pilihan "ajaib".
Actions SDK memiliki interoperabilitas dengan IDE berbasis web yang disebut Actions Builder yang terintegrasi ke dalam konsol Actions. Anda dapat mengirim sistem file lokal ke draf Action di konsol dengan perintah gactions push. Konsol Actions menyediakan representasi visual dari konfigurasi Action Anda. Melihat Action Anda dipetakan secara visual bisa berguna selama pengembangan, dan tidak memengaruhi versi Action yang disajikan untuk pengujian.
Untuk mendorong project Action Anda dan melihatnya di konsol Actions, ikuti langkah-langkah berikut:
- Di terminal, jalankan perintah berikut untuk mendorong project Anda ke konsol Actions:
gactions push
Anda akan menerima output yang tampak seperti berikut ini:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Salin URL yang diberikan dan tempelkan ke browser.
- Di konsol Actions, klik Kembangkan di bagian atas menu navigasi.
- Klik panah drop-down di samping Scene, lalu klik Start. Anda akan melihat representasi visual scene
StartAction, seperti yang ditunjukkan di screenshot berikut:

Selamat!
Sekarang Anda telah mempelajari keterampilan menengah yang diperlukan untuk membuat Action untuk Asisten Google dengan Action SDK.
Yang telah Anda pelajari
- Cara mengembangkan Action Percakapan menggunakan library fulfillment Node.js
- Cara menggunakan slot untuk mengumpulkan data dari pengguna
- Cara menggunakan kondisi untuk menambahkan logika ke scene
- Cara menambahkan game loop
- Cara menambahkan jalur pendukung
Referensi pembelajaran tambahan
Anda dapat menjelajahi referensi berikut untuk mempelajari pembuatan Action untuk Asisten Google:
- Dokumentasi untuk membuat Action untuk Asisten Google
- Halaman GitHub Actions on Google untuk kode contoh dan library
- Komunitas Reddit resmi untuk developer yang menangani Asisten Google
- Pedoman desain Percakapan untuk praktik terbaik dan panduan terkait Action Percakapan
Ikuti kami di Twitter @ActionsOnGoogle untuk terus mengikuti pengumuman terbaru kami, dan kirim tweet ke #AoGDevs untuk membagikan yang telah Anda buat!
Membersihkan project [disarankan]
Untuk menghindari biaya yang mungkin dikenakan, sebaiknya hapus project yang tidak ingin Anda gunakan. Untuk menghapus project yang Anda buat di codelab ini, ikuti langkah-langkah berikut:
- Untuk menghapus Project Cloud dan resource, selesaikan langkah-langkah yang tercantum di bagian Shutting down (deleting) projects.
- Opsional: Untuk segera menghapus project Anda dari Konsol Actions, selesaikan langkah-langkah yang tercantum di bagian Deleting a project. Jika Anda tidak menyelesaikan langkah ini, project Anda akan dihapus secara otomatis setelah sekitar 30 hari.
Survei masukan
Sebelum pergi, isi survei singkat tentang pengalaman Anda.