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:
- 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 di
ActionsSdkApp
e esegue alcune configurazioni Node.js standard 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. Per soddisfare gli intent che arrivano nelle richieste, crea funzioni che gestiscono l'intent attivato.
Per gestire le richieste:
Esegui le logiche necessarie per elaborare l'input utente.
Richiama la funzione
conv.ask()
che passa la risposta che vuoi mostrare come argomento.
Il codice seguente 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, utilizza app.intent
per 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
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.
- 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:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
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.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");