Fulfillment menentukan antarmuka percakapan untuk project Action Anda guna mendapatkan input pengguna serta logika untuk memproses input dan pada akhirnya memenuhi Action.
Ringkasan
Fulfillment Anda menerima permintaan dari Asisten, memproses permintaan tersebut, dan merespons. Proses permintaan dan respons dua kali ini mendorong percakapan maju hingga Anda akhirnya memenuhi permintaan pengguna awal.
Langkah-langkah berikut menjelaskan cara mem-build fulfillment menggunakan Actions SDK dengan Node.js atau library klien Java/Kotlin:
- Lakukan inisialisasi objek ActionsSdkApp.
- Buat fungsi untuk menangani permintaan dalam logika fulfillment Anda.
Membuat dialog
Melakukan inisialisasi objek ActionsSdkApp
Kode berikut membuat instance ActionsSdkApp
dan melakukan beberapa penyiapan Node.js boilerplate untuk Google Cloud Functions:
'use strict'; const {actionssdk} = require('actions-on-google'); const functions = require('firebase-functions'); const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Hi!'); }); // More intent handling if needed exports.myFunction = functions.https.onRequest(app);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi!" } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
Membuat fungsi untuk menangani permintaan
Saat pengguna mengucapkan frasa, Anda akan menerima permintaan dari Asisten Google. Untuk memenuhi intent yang muncul dalam permintaan, buat fungsi yang menangani intent yang dipicu.
Untuk menangani permintaan:
Jalankan logika apa pun yang diperlukan untuk memproses input pengguna.
Panggil fungsi
conv.ask()
yang meneruskan respons yang ingin Anda tampilkan sebagai argumen.
Kode berikut menunjukkan cara membuat respons sederhana:
conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi! Say something, and I'll repeat it." } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
Menangani intent
Setelah Anda memiliki semua fungsi untuk menangani intent yang dipicu, gunakan app.intent
untuk
menetapkan pengendali ke intent.
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@ForIntent("actions.intent.MAIN") public ActionResponse main(ActionRequest request) { // handle main intent // ... } @ForIntent("actions.intent.TEXT") public ActionResponse text(ActionRequest request) { // handle text intent // ... }
Mengakhiri percakapan
Jika Anda tidak lagi menginginkan input pengguna sebagai balasan dan ingin mengakhiri percakapan,
panggil fungsi conv.close()
.
Fungsi ini memberi tahu Asisten Google untuk mengucapkan teks kepada pengguna dan mengakhiri percakapan dengan menutup mikrofon.
Menangani intent pemanggilan utama
Saat pengguna memicu intent app.intent.action.MAIN
, Anda biasanya tidak
perlu melakukan pemrosesan input pengguna. Jika paket tindakan Anda berisi banyak
tindakan dan mencakup banyak kasus penggunaan, sebaiknya arahkan pengguna dengan memberi tahu
beberapa hal yang dapat mereka lakukan.
- Panggil fungsi
conv.ask()
yang meneruskan respons Anda sebagai argumen. Asisten Google mengucapkan respons Anda kepada pengguna, lalu menunggu pengguna memicu salah satu intent yang Anda tentukan.
Cuplikan berikut menunjukkan cara menangani intent sambutan sederhana:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
Status percakapan
Jika menggunakan API webhook HTTP/JSON percakapan, Anda dapat mempertahankan
status percakapan dengan objek berformat JSON (conversationToken
)
yang diteruskan bolak-balik antara Anda dan Asisten Google. Jika menggunakan library klien Node.js, Anda dapat menulis ke dan membaca dari kolom conv.data
secara langsung. Kolom ini
diteruskan secara otomatis antara permintaan dan respons.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");