La entrega define la interfaz conversacional para que obtenga tu proyecto de acciones la entrada del usuario y la lógica para procesar la entrada y, finalmente, completar la acción.
Descripción general
Tu entrega recibe solicitudes del Asistente, procesa la solicitud y responde. Este proceso de ida y vuelta de solicitud y respuesta impulsa la avanzar la conversación hasta que finalices la solicitud inicial del usuario.
En los siguientes pasos, se describe cómo compilar una entrega con las Acciones SDK con Node.js o la biblioteca cliente de Java/Kotlin:
- Inicializa el objeto ActionsSdkApp.
- Crea funciones para manejar las solicitudes en tu lógica de entrega.
Cómo compilar diálogos
Inicializa el objeto ActionsSdkApp
.
El siguiente código crea una instancia
ActionsSdkApp
y realiza una 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 manejar las solicitudes
Cuando los usuarios dicen una frase, recibes una solicitud de Asistente de Google. Para cumplir con los intents que vienen en las solicitudes, crear funciones que controlen intent activado.
Para controlar las solicitudes, haz lo siguiente:
Lleva a cabo cualquier lógica necesaria para procesar la entrada del usuario.
Llama a la función
conv.ask()
pasando la respuesta que deseas 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 controlar intents
Una vez que tengas todas las funciones para controlar los intents activados, usa app.intent
para
y 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 que los usuarios
aportan y quieres finalizar la conversación,
llama a la función conv.close()
.
Esta función le indica a Asistente de Google que responda el texto al usuario y cierre la conversación cerrando el micrófono.
Cómo controlar el intent de invocación principal
Por lo general, cuando los usuarios activan el intent app.intent.action.MAIN
, no
no necesita realizar ningún procesamiento de entrada del usuario. Si tu paquete de acciones contiene muchas
y abarca muchos casos de uso, es recomendable orientar al usuario diciéndole
algunas cosas que pueden hacer.
- Llama a la función
conv.ask()
pasando tu respuesta como argumento. Asistente de Google lee tu respuesta al usuario y, luego, espera a que el usuario 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 la conversación
Si usas la API de webhook de HTTP/JSON de conversación, puedes mantener la
estado de tus conversaciones con un objeto con formato JSON (conversationToken
)
que se transmiten entre tú y Asistente de Google. Si eres
con la biblioteca cliente de Node.js
puedes escribir y leer desde el campo conv.data
directamente. Este campo
se pasan automáticamente entre solicitudes y 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");