Fulfillment build (Dialogflow)

Fulfillment definisce l'interfaccia conversazionale che il progetto Actions può ottenere l'input dell'utente e la logica per elaborare l'input e infine completare l'azione.

Panoramica

Il fulfillment riceve richieste dall'assistente, le elabora e risponde. Questo processo continuo di richieste e risposte genera una conversazione finché non soddisferai la richiesta iniziale dell'utente.

I passaggi seguenti spiegano come creare il completamento utilizzando le Azioni SDK 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.
di Gemini Advanced.

Creazione di finestre di dialogo

Inizializza l'oggetto ActionsSdkApp

Il seguente codice crea un'istanza ActionsSdkApp ed esegue la configurazione boilerplate di Node.js 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. A gli intent che arrivano nelle richieste, creano funzioni che gestiscono che ha innescato l'intento.

Per gestire le richieste:

  1. Esegui tutte le logiche richieste per elaborare l'input dell'utente.

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

Il seguente codice 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, usa app.intent per e 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

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

Gestione dell'intento di chiamata principale

Quando gli utenti attivano l'intent app.intent.action.MAIN, di solito non eseguire alcuna elaborazione degli input utente. Se il pacchetto azioni contiene molti azioni e copre molti casi d'uso, è buona norma orientare l'utente comunicando alcune delle 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 e poi attende che l'utente attivi uno degli intent che hai specificato.

Il seguente snippet mostra come gestire un semplice intent 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 conversazione

Se utilizzi l'API Conversation HTTP/JSON webhook, puoi mantenere stato delle conversazioni con un oggetto in formato JSON (conversationToken) che viene scambiato per te e l'Assistente Google. Se utilizzando la libreria client Node.js, puoi può scrivere e leggere direttamente dal campo conv.data. Questo campo vengono passati automaticamente tra le richieste e le risposte.

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");