Fulfillment build (Dialogflow)

Il fulfillment definisce l'interfaccia di conversazione per il progetto Actions per ottenere l'input dell'utente e la logica per elaborare l'input e, infine, completare l'azione.

Panoramica

Il fulfillment riceve richieste dall'Assistente, elabora la richiesta e risponde. Questo processo di richiesta e risposta porta avanti la conversazione finché alla fine non soddisfi la richiesta iniziale dell'utente.

I passaggi seguenti descrivono come creare il fulfillment utilizzando l'SDK Actions con Node.js o la libreria client Java/Kotlin:

  1. Inizializza l'oggetto ActionsSdkApp.
  2. Crea funzioni per gestire le richieste nella logica di fulfillment.

Creazione di finestre di dialogo

Inizializza l'oggetto ActionsSdkApp

Il seguente codice crea un'istanza di ActionsSdkApp e esegue alcune configurazioni Node.js standard per Google Cloud Functions:

SDK Actions (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\":{}}"
}

Creare funzioni per gestire le richieste

Quando gli utenti pronunciano una frase, ricevi una richiesta dall'Assistente Google. Per soddisfare gli intent che arrivano nelle richieste, crea funzioni che gestiscono l'intent attivato.

Per gestire le richieste:

  1. Esegui le logiche necessarie per elaborare l'input utente.

  2. Richiama la funzione conv.ask() che passa la risposta che vuoi mostrare come argomento.

Il codice seguente mostra come creare una risposta semplice:

SDK Actions (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\":{}}"
}

Gestione degli intent

Quando hai a disposizione tutte le funzioni per gestire gli intent attivati, utilizza app.intent per assegnare gestori agli intent.

SDK Actions (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
  // ...
}

Chiusura delle conversazioni

Quando non vuoi più ricevere input utente e vuoi terminare la conversazione, chiama la funzione conv.close(). Questa funzione indica all'Assistente Google di pronunciare il testo all'utente e di terminare la conversazione chiudendo il microfono.

Gestione dell'intent di chiamata principale

Quando gli utenti attivano l'intent app.intent.action.MAIN, in genere non è necessario eseguire alcuna elaborazione dell'input utente. Se il pacchetto azioni contiene molte azioni e copre molti casi d'uso, è consigliabile orientare l'utente spiegandogli alcune cose che può fare.

  1. Richiama la funzione conv.ask() che trasmette la risposta come argomento. L'Assistente Google pronuncia la tua risposta all'utente, quindi attende che l'utente attivi uno degli intent da te specificati.

Il seguente snippet mostra come gestire un semplice intento di benvenuto:

SDK Actions (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();
}

Stato della conversazione

Se utilizzi l'API webhook HTTP/JSON conversazione, puoi gestire lo stato delle conversazioni con un oggetto in formato JSON (conversationToken) che viene trasmesso tra te e l'Assistente Google. Se utilizzi la libreria client Node.js, puoi scrivere e leggere direttamente dal campo conv.data. Questo campo viene scambiato automaticamente tra una richiesta e l'altra.

SDK Actions (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");