La entrega define la interfaz de conversación para tu proyecto de acciones a fin de obtener la entrada del usuario y la lógica para procesar la entrada y, finalmente, entregar la acción.
Descripción general
Tu entrega recibe solicitudes del Asistente, las procesa y responde. Este proceso de solicitud y respuesta de ida y vuelta impulsa la conversación hasta que finalmente cumplas con la solicitud inicial del usuario.
En los siguientes pasos, se describe cómo compilar la entrega mediante el SDK de Actions con Node.js o la biblioteca cliente de Java/Kotlin:
- Inicializa el objeto ActionsSdkApp.
- Crea funciones para controlar solicitudes en la lógica de entrega.
Cómo compilar diálogos
Inicializa el objeto ActionsSdkApp
Con el siguiente código, se crea una instancia de ActionsSdkApp
y se realiza la configuración estándar de Node.js para 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\":{}}" }
Crea funciones para controlar solicitudes
Cuando los usuarios digan una frase, recibirás una solicitud de Asistente de Google. Para entregar los intents que provienen de solicitudes, crea funciones que controlen el intent activado.
Para controlar solicitudes, haz lo siguiente:
Lleva a cabo la lógica necesaria para procesar la entrada del usuario.
Llama a la función
conv.ask()
pasando la respuesta que quieras mostrar como argumento.
En el siguiente código, se muestra cómo compilar una respuesta simple:
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\":{}}" }
Cómo administrar intents
Una vez que tengas todas las funciones para controlar los intents activados, usa app.intent
a fin de asignar controladores a los intents.
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 // ... }
Finalizando conversaciones
Cuando ya no quieras recibir ninguna entrada del usuario y desees finalizar la conversación, llama a la función conv.close()
.
Esta función le indica a Asistente de Google que le diga el texto al usuario y cierre la conversación cerrando el micrófono.
Controla el intent de invocación principal
Cuando los usuarios activan el intent app.intent.action.MAIN
, por lo general, no es necesario realizar ningún procesamiento de entrada por parte del usuario. Si tu paquete de acciones contiene muchas acciones y abarca muchos casos de uso, te recomendamos orientar al usuario indicándole algunas cosas que puede hacer.
- Llama a la función
conv.ask()
pasando tu respuesta como argumento. Asistente de Google le dice tu respuesta al usuario y espera a que este active uno de los intents que especificaste.
En el siguiente fragmento, se muestra cómo controlar un intent de bienvenida simple:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
Estado de conversación
Si usas la API de webhook de HTTP/JSON de conversación, puedes mantener el estado de tus conversaciones con un objeto con formato JSON (conversationToken
) que se transfiere entre tú y Asistente de Google. Si usas la biblioteca cliente de Node.js, puedes escribir en el campo conv.data
y leer desde allí directamente. Este campo se pasa de forma automática entre las solicitudes y las respuestas.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");