Fulfillment build (Dialogflow)

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:

  1. Lakukan inisialisasi objek ActionsSdkApp.
  2. 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:

Actions SDK (Node.js)
'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);
SDK Actions (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
JSON
{
  "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:

  1. Jalankan logika apa pun yang diperlukan untuk memproses input pengguna.

  2. Panggil fungsi conv.ask() yang meneruskan respons yang ingin Anda tampilkan sebagai argumen.

Kode berikut menunjukkan cara membuat respons sederhana:

Actions SDK (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
SDK Actions (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
JSON
{
  "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.

Actions SDK (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
SDK Actions (Java)
@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.

  1. 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:

Actions SDK (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
SDK Actions (Java)
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.

Actions SDK (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
SDK Actions (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");