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
Fortune
baru 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
Start
ke 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
handler
untuk intentyes
sehingga 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.yaml
di 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.yaml
di direktoritypes
:
touch custom/types/available_options.yaml
- Buka
custom/types/available_options.yaml
di 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
entities
dansynonyms
berikut 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.yaml
di editor teks Anda. - Tambahkan data
slots
berikut 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.yaml
di editor teks Anda. - Tambahkan data
conditionalEvents
ke 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 app
di kolom Input dan tekan Enter. - Ketik
Yes
di 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.yaml
di editor teks Anda. - Ganti data
conditionalEvents
dengan 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 app
di 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.yaml
di direktoriscenes
:
touch custom/scenes/Again.yaml
- Buka
custom/scenes/Again.yaml
di editor teks Anda. - Tambahkan data
onEnter
berikut 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.yaml
di editor teks Anda. - Tambahkan
transitionToScene: Again
ke 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 app
di kolom Input, lalu tekan Enter. - Ketik
Yes
di 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.yaml
di editor teks Anda. - Tambahkan data
intentEvents
di 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 app
di kolom Input, lalu tekan Enter. - Ketik
Yes
di kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Klik, ketik, atau ucapkan salah satu opsi.
- Ketik
Yes
di 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
No
di 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.yaml
di direktoritypes
:
touch custom/types/unavailable_options.yaml
- Buka
custom/types/unavailable_options.yaml
di editor teks Anda. - Tambahkan data
synonyms
berikut 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.yaml
di direktoriintents
:
touch custom/intents/other_option.yaml
- Buka
custom/intents/other_option.yaml
di editor teks Anda. - Tambahkan data
parameters
dantrainingPhrases
berikut 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.yaml
di editor teks Anda. - Tambahkan data
intentEvents
berikut di antara dataconditionalEvents
dan 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 app
di kolom Input, lalu tekan Enter. - Ketik
Yes
di kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Ketik
magic
di 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.yaml
di editor teks Anda. - Perbarui file
Fortune.yaml
dengan dataintentEvents
berikut:
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.js
di editor teks Anda. - Tambahkan kode berikut ke
index.js
di 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
option
dari objekconv
dan menetapkanoption
ke propertioriginal
, yang merupakan input mentah dari pengguna - Menetapkan
optionKey
ke propertiresolved
, yang merupakan kunci untuk typeunavailable_options
- Memeriksa apakah
optionKey
merupakan 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_options
keActionsOnGoogleFulfillment.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 app
di kolom Input dan tekan Enter. - Ketik
Yes
di kolom Input, lalu tekan Enter. Atau, klik chip saran Yes. - Ketik
magic
di kolom Input, lalu tekan Enter. Lalu, ketikhorse
di 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
Start
Action, 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.