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:

'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\":{}}"
}

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:

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

Gestione degli intent

Quando hai a disposizione tutte le funzioni per gestire gli intent attivati, usa app.intent per e assegnare gestori agli 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
  // ...
}

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:

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

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