Jika Action Anda memberikan nilai kepada pengguna setiap hari, beri pengguna pengingat untuk menggunakannya dengan mengonfigurasi update harian. Jika berlangganan update harian Action Anda, pengguna akan menerima notifikasi push yang dapat diketuk untuk memanggil salah satu intent Action Anda.
Pengalaman pengguna terkait update ini adalah sebagai berikut:
- Pengguna memanggil salah satu intent Action yang telah Anda konfigurasi sebagai update harian.
- Pengguna mengikuti perintah untuk berlangganan update harian. Dialog ini diberikan di tengah percakapan atau sebagai chip saran saat percakapan berakhir.
- Pengguna menjadwalkan waktu untuk menerima update harian Anda, mendaftarkan update tersebut ke Asisten Google.
- Pada waktu yang dijadwalkan setiap hari, pengguna akan menerima notifikasi Asisten di perangkat selulernya.
- Saat membuka notifikasi ini, pengguna akan memanggil intent yang dikonfigurasi sebagai update harian dan berinteraksi dengan Action Anda.
Secara default, permintaan pendaftaran update harian akan muncul sebagai chip saran saat pengguna berhasil keluar dari Action. Anda juga dapat menambahkan perintah pendaftaran di tengah percakapan atau mempersonalisasi update pengguna.
Kasus penggunaan
Update harian dapat menjadi alat interaksi yang berguna, tetapi tidak boleh disertakan dalam setiap Action. Pertimbangkan tips berikut saat memutuskan apakah akan menambahkan langganan update harian ke Action:
- Pastikan info terbaru harian akan membuat pengguna melihat informasi yang berbeda dan berguna setiap hari. Jika mengetuk update harian menghasilkan perintah yang sama setiap kali, pengguna mungkin akan berhenti berlangganan setelah beberapa hari.
- Pastikan dialog Anda masuk akal bagi pengguna jika mereka langsung ke maksud update harian. Pengguna Anda tidak harus memulai dari awal percakapan, jadi mereka seharusnya tidak memiliki banyak konteks.
- Tunjukkan manfaat Action Anda kepada pengguna sebelum meminta mereka mendaftar untuk mendapatkan info terbaru harian. Pengguna Anda seharusnya berpikir "Saya ingin konten ini setiap hari" saat mereka diberi opsi untuk berlangganan.
- Jangan membuat pengguna bingung dengan saran berulang untuk mendaftar. Tawarkan langganan update harian tepat setelah menampilkan langganan kepada pengguna, dan hindari mengulangi penawaran dalam konteks lain.
- Buat percakapan singkat setelah intent pembaruan dipicu. Sebagian besar update harian hanya boleh terdiri dari satu respons, lalu ditutup tanpa memerlukan input pengguna.
Menyiapkan info terbaru harian
Jelajahi di Dialogflow
Klik Continue untuk mengimpor contoh Update harian di Dialogflow. Kemudian, ikuti langkah-langkah di bawah ini untuk men-deploy dan menguji sampel:
- Masukkan nama agen dan buat agen Dialogflow baru untuk contoh.
- Setelah agen selesai mengimpor, klik Buka agen.
- Dari menu navigasi utama, buka Fulfillment.
- Aktifkan Inline Editor, lalu klik Deploy. Editor berisi kode contoh.
- Dari menu navigasi utama, buka Integrations, lalu klik Google Assistant.
- Di jendela modal yang muncul, aktifkan Perubahan pratinjau otomatis, lalu klik Uji untuk membuka simulator Action.
- Pada simulator, masukkan
Talk to my test app
untuk menguji sampel.
Guna mengonfigurasi salah satu intent Action untuk update harian, ikuti petunjuk berikut:
1. Menyiapkan intent update
Konfigurasikan salah satu intent Action Anda sebagai intent pemicu. Intent ini memungkinkan update harian dikirim kepada pengguna; saat pengguna membuka notifikasi update harian, intent terpicu dan percakapan berlanjut dari sana.
Untuk menentukan intent pemicu di Dialogflow, lakukan hal berikut:
- Di Dialogflow Console, klik Integrations.
- Di bagian Asisten Google, klik Setelan Integrasi.
- Di bagian Discovery > Implicit invocation, klik Add intent, lalu pilih intent pemicu jika belum ada di sana.
- Aktifkan perubahan Pratinjau otomatis jika belum diaktifkan.
- Klik Close.
Di Actions SDK, tentukan intent pembaruan Anda sebagai intent pemicu dalam paket Action.
2. Aktifkan update
Untuk mengaktifkan update harian untuk intent pemicu Anda, lakukan hal berikut:
- Di Konsol Actions, buka Develop > Actions.
- Pilih intent pemicu Anda. Jika intent Anda tidak muncul dalam daftar, pastikan intent tersebut dikonfigurasi sebagai intent pemicu dan integrasi Asisten Dialogflow ditetapkan ke perubahan pratinjau otomatis.
- Scroll ke bawah ke bagian Engagement pengguna, lalu aktifkan Apakah Anda ingin menawarkan info terbaru harian kepada pengguna.
- Masukkan Judul konten.
- Klik Simpan.
Anda sekarang telah mengonfigurasi Action untuk menawarkan langganan update harian untuk suatu intent. Kini Anda dapat menguji info terbaru harian di perangkat seluler Anda sendiri.
Menyesuaikan pendaftaran update (opsional)
Selain chip saran dan alur pendaftaran update harian yang ditangani Asisten, buat pengguna berlangganan info terbaru harian melalui dialog dan perintah pendaftaran Anda sendiri.
Untuk contoh lengkap Action yang menangani fitur update harian opsional, lihat contoh interaksi pengguna Actions on Google (Node.js dan Java).
Untuk menambahkan dialog pendaftaran update harian kustom ke percakapan Anda, ikuti petunjuk berikut:
1. Tambahkan dialog pendaftaran
Tambahkan dialog dan chip saran ke percakapan saat Anda ingin meminta pengguna untuk berlangganan info terbaru harian. Tawarkan perintah ini setelah pengguna berinteraksi dengan intent update Anda, agar mereka memahami konten update harian Anda.
Kode contoh berikut meminta pengguna untuk berlangganan update harian yang menawarkan perkiraan suhu terendah setiap hari:
app.intent('Daily Lowest Temperature', (conv, params) => { const today = DAYS[new Date().getDay()]; const lowestTemperature = lowestTemperatures[today]; conv.ask(`The lowest temperature for today is ${lowestTemperature}`); conv.ask('I can send you daily updates with the lowest temperature' + ' of the day. Would you like that?'); conv.ask(new Suggestions('Send daily updates')); });
@ForIntent("Daily Lowest Temperature") public ActionResponse dailyLowestTemperature(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); Integer lowestTemperature = LOWEST_TEMPERATURES.get(LocalDate.now().getDayOfWeek()); responseBuilder .add("The lowest temperature for today is " + lowestTemperature + " degrees Fahrenheit.") .add("I can send you daily updates with the lowest temperature of " + "the day. Would you like that?") .addSuggestions(new String[] { "Send daily updates" }); return responseBuilder.build(); }
Perhatikan bahwa JSON di bawah menjelaskan respons webhook.
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit" } }, { "simpleResponse": { "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?" } } ], "suggestions": [ { "title": "Send daily updates" } ] } } } }
Perhatikan bahwa JSON di bawah menjelaskan respons webhook.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit" } }, { "simpleResponse": { "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?" } } ], "suggestions": [ { "title": "Send daily updates" } ] } } } ] }
2. Menangani pendaftaran update
Siapkan intent baru yang akan dipicu saat pengguna mengikuti permintaan pendaftaran Anda. Dalam fulfillment untuk intent baru ini, picu intent bawaan actions_intent_CONFIGURE_UPDATES
dengan
parameter berikut:
intent
- Tetapkan ke intent update yang Anda konfigurasi.frequency
- Tetapkan ke "HARIAN".
Kode berikut mendaftarkan update harian untuk intent "Suhu Terendah Harian" :
app.intent('Subscribe to Daily Updates', (conv) => { conv.ask(new RegisterUpdate({ intent: 'Daily Lowest Temperature', frequency: 'DAILY', })); });
conv.ask(new RegisterUpdate({ intent: 'Daily Lowest Temperature', frequency: 'DAILY', }));
@ForIntent("Subscribe to Daily Updates") public ActionResponse subscribeToDailyUpdates(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); return responseBuilder.add(new RegisterUpdate() .setIntent("Daily Lowest Temperature") .setFrequency("DAILY")) .build(); }
ResponseBuilder responseBuilder = getResponseBuilder(request); return responseBuilder.add(new RegisterUpdate() .setIntent("Daily Lowest Temperature") .setFrequency("DAILY")) .build();
{ "payload": { "google": { "expectUserResponse": true, "systemIntent": { "intent": "actions.intent.REGISTER_UPDATE", "data": { "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec", "intent": "Daily Lowest Temperature", "triggerContext": { "timeContext": { "frequency": "DAILY" } } } } } } }
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.REGISTER_UPDATE", "inputValueData": { "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec", "intent": "Daily Lowest Temperature", "triggerContext": { "timeContext": { "frequency": "DAILY" } } } } ] } ] }
3. Menangani hasil
Asisten akan menangani percakapan Anda dan memandu pengguna untuk menyelesaikan konfigurasi update hariannya. Setelah pendaftaran selesai, Asisten akan memicu intent dengan parameter yang menunjukkan apakah pendaftaran berhasil atau tidak.
Petunjuk untuk langkah ini berbeda-beda, bergantung pada apakah Anda menggunakan Dialogflow atau Actions SDK untuk pengembangan.
Ikuti langkah-langkah berikut untuk membuat intent yang menangani hasil pendaftaran:
- Di konsol Dialogflow, buat intent baru.
- Tambahkan peristiwa
actions_intent_REGISTER_UPDATE
. - Aktifkan fulfillment webhook untuk intent.
- Klik Simpan.
registered
untuk mendapatkan hasilnya, dan lakukan pivot pada percakapan sebagaimana mestinya.
app.intent('Confirm Daily Updates Subscription', (conv, params, registered) => { if (registered && registered.status === 'OK') { conv.close(`Ok, I'll start giving you daily updates.`); } else { conv.close(`Ok, I won't give you daily updates.`); } });
@ForIntent("Confirm Daily Updates Subscription") public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); if (request.isUpdateRegistered()) { responseBuilder.add("Ok, I'll start giving you daily updates."); } else { responseBuilder.add("Ok, I won't give you daily updates."); } return responseBuilder.endConversation().build(); }
{ "payload": { "google": { "expectUserResponse": false, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Ok, I'll start giving you daily updates." } } ] } } } }
Dalam kode fulfillment Anda, tambahkan penanganan untuk intent bawaan actions.intent.REGISTER.UPDATE
. Periksa hasilnya parameter registered
, dan ubah percakapan sebagaimana mestinya.
app.intent('actions.intent.REGISTER_UPDATE', (conv, params, registered) => { if (registered && registered.status === 'OK') { conv.close(`Ok, I'll start giving you daily updates.`); } else { conv.close(`Ok, I won't give you daily updates.`); } });
@ForIntent("actions.intent.REGISTER_UPDATE") public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); if (request.isUpdateRegistered()) { responseBuilder.add("Ok, I'll start giving you daily updates."); } else { responseBuilder.add("Ok, I won't give you daily updates."); } return responseBuilder.endConversation().build(); }
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Ok, I'll start giving you daily updates." } } ] } } }
Mempersonalisasi update (opsional)
Untuk mempersonalisasi intent update Anda, tambahkan parameter kustom saat pengguna mendaftarkan update harian. Saat Anda memenuhi intent update, referensikan parameter ini untuk menyesuaikan update harian bagi pengguna tersebut.
Petunjuk untuk fitur ini berbeda-beda, bergantung pada apakah Anda menggunakan Dialogflow atau Actions SDK untuk pengembangan.
Tentukan entity Dialogflow untuk menangani parameter kustom untuk update, lalu serahkan nilai parameter sebagai argumen untuk intent update Anda. Untuk menyiapkan update yang dipersonalisasi di Dialogflow, lakukan langkah-langkah berikut:
- Di konsol Dialogflow, buat entity baru.
- Tambahkan beberapa entri dan sinonim yang relevan untuk parameter Anda.
- Klik Save, lalu buka intent update Anda.
- Di bagian Tindakan dan parameter, tetapkan
actions.intent.CONFIGURE_UPDATES
sebagai peristiwa. Di bagian yang sama, tambahkan parameter dengan jenis yang sama dengan entity baru. - Buka intent "update registration" yang menangani intent bawaan
CONFIGURE_UPDATES
. - Di bagian Tindakan dan parameter, tambahkan parameter wajib dan tetapkan jenisnya ke entity yang dibuat sebelumnya.
- Perbarui kode fulfillment intent pendaftaran Anda untuk menyertakan objek
arguments
dengan konten berikut:name
- Nama parameter Anda seperti yang dikonfigurasi di Dialogflow.textValue
- Nilai parameter Anda.
Kode berikut membaca nilai parameter dan menggunakannya dalam permintaan pendaftaran update:
app.intent('setup_update', (conv) => { conv.ask(new RegisterUpdate({ intent: 'update_of_the_day', arguments: [ { name: 'category', textValue: 'Daily_lowest_temperature', }, ], frequency: 'DAILY', })); });
@ForIntent("setup_update") public ActionResponse setupUpdate2(ActionRequest request) { List<Argument> args = Arrays.asList( new Argument() .setName("category") .setTextValue(request.getParameter("category").toString())); return getResponseBuilder(request) .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY")) .build(); }
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "PLACEHOLDER" } } ] }, "userStorage": "{\"data\":{}}", "systemIntent": { "intent": "actions.intent.REGISTER_UPDATE", "data": { "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec", "intent": "update_of_the_day", "arguments": [ { "name": "category", "textValue": "Daily_lowest_temperature" } ], "triggerContext": { "timeContext": { "frequency": "DAILY" } } } } } }, "outputContexts": [ { "name": "/contexts/_actions_on_google", "lifespanCount": 99, "parameters": { "data": "{}" } } ] }
Minta informasi tambahan dari pengguna dalam fulfillment intent Anda, lalu berikan informasi tersebut sebagai argumen untuk intent update Anda. Untuk menyiapkan update yang dipersonalisasi di Action SDK, lakukan langkah-langkah berikut:
- Minta informasi kepada pengguna yang ingin Anda gunakan untuk personalisasi.
- Dalam kode fulfillment untuk intent "update pendaftaran" Anda yang
menangani
CONFIGURE UPDATES
, sertakan objekarguments
dengan konten berikut:name
- Nama untuk argumen Anda.textValue
- Informasi dari pengguna, yang akan diteruskan sebagai argumen.
Kode berikut mengirim argumen bersama permintaan pendaftaran pembaruan:
app.intent('actions.intent.TEXT', (conv) => { if (conv.input.raw === 'Send daily') { conv.ask(new RegisterUpdate({ intent: 'update_of_the_day', arguments: [ { name: 'category', textValue: 'Daily_lowest_temperature', }, ], frequency: 'DAILY', })); } });
@ForIntent("actions.intent.CONFIGURE_UPDATES") public ActionResponse configureUpdatesActionsSdk(ActionRequest request) { List<Argument> args = Arrays.asList( new Argument() .setName("category") .setTextValue(request.getParameter("category").toString())); return getResponseBuilder(request) .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY")) .build(); } @ForIntent("actions.intent.TEXT") public ActionResponse text(ActionRequest request) { ResponseBuilder rb = getResponseBuilder(request); String input = request.getRawInput().getQuery(); if (input.equals("DAILY_NOTIFICATION_SUGGESTION")) { rb.add("For which category do you want to receive daily updates?"); } else { rb.add("Sorry, I didn't get that. Please try again later").endConversation(); } return rb.build(); }
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "PLACEHOLDER" } } ] } }, "possibleIntents": [ { "intent": "actions.intent.REGISTER_UPDATE", "inputValueData": { "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec", "intent": "update_of_the_day", "arguments": [ { "name": "category", "textValue": "Daily_lowest_temperature" } ], "triggerContext": { "timeContext": { "frequency": "DAILY" } } } } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
Saat pengguna memanggil update harian, intent update Anda kini menyertakan argumen yang berisi nilai yang diberikan oleh pengguna selama pendaftaran. Gunakan nilai ini untuk mempersonalisasi update bagi setiap pengguna.
Uji pembaruan harian
Uji update harian Anda menggunakan perangkat seluler dengan Asisten Google menggunakan Akun Google yang sama dengan yang Anda gunakan untuk membuat Action. Panggil Action Anda dan berlangganan info terbaru harian, lalu periksa notifikasi perangkat Anda sekitar waktu update.