Fulfillment build (Dialogflow)

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:

  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);
Actions SDK (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 tertentu, Anda akan menerima permintaan dari Asisten Google. Kepada memenuhi intent yang masuk dalam permintaan, membuat fungsi yang menangani yang dipicu.

Untuk menangani permintaan:

  1. Melakukan 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.`);
Actions SDK (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.
});
Actions SDK (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

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.

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

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

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