Entrega de compilación (Dialogflow)

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:

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

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

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

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

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

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

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

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

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");