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:
- Inizializza l'oggetto ActionsSdkApp.
- 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
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:
Esegui tutte le logiche richieste per elaborare l'input dell'utente.
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.
- 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");