Entrega de compilación (Dialogflow)

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:

  1. Inicializa el objeto ActionsSdkApp.
  2. 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:

SDK de Actions (Node.js)
'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);
.
.
SDK de Actions (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
.
.
JSON
{
  "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:

  1. Lleva a cabo cualquier lógica necesaria para procesar la entrada del usuario.

  2. 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:

SDK de Actions (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
.
.
SDK de Actions (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
.
.
JSON
{
  "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.

SDK de Actions (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
.
.
SDK de Actions (Java)
@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.

  1. 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:

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

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