Fulfillment menentukan antarmuka percakapan untuk project Action Anda guna mendapatkan input pengguna dan logika untuk memproses input dan akhirnya memenuhi Action.
Ringkasan
Pemenuhan pesanan Anda menerima permintaan dari Asisten, memproses permintaan, dan merespons. Proses permintaan dan respons bolak-balik ini mendorong percakapan maju hingga Anda akhirnya memenuhi permintaan awal pengguna.
Langkah-langkah berikut menjelaskan cara membuat fulfillment menggunakan Action 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 tertentu, Anda akan menerima permintaan dari Asisten Google. Kepada memenuhi intent yang masuk dalam permintaan, membuat fungsi yang menangani yang dipicu.
Untuk menangani permintaan:
Melakukan 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
Ketika Anda tidak lagi menginginkan masukan pengguna sebagai balasan dan ingin mengakhiri percakapan,
panggil fungsi conv.close()
.
Fungsi ini memberi tahu Asisten Google untuk mengucapkan kembali 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, ada baiknya untuk mengarahkan pengguna dengan
beberapa hal yang
dapat mereka lakukan.
- Panggil fungsi
conv.ask()
yang meneruskan respons Anda sebagai argumen. Asisten Google akan mengucapkan respons Anda kepada pengguna, lalu menunggu pengguna memicu salah satu intent yang telah Anda tentukan.
Cuplikan berikut ini menunjukkan cara menangani intent selamat datang 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 Anda dengan objek berformat JSON (conversationToken
)
yang diteruskan antara Anda dan Asisten Google. Jika Anda
menggunakan library klien Node.js, Anda harus
dapat menulis dan membaca dari kolom conv.data
secara langsung. Kolom ini
diteruskan secara otomatis di 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");