Acciones conversacionales

Las acciones de conversación te permiten extender Asistente de Google con tus propias interfaces de conversación que brindan a los usuarios acceso a tus productos y servicios. Las acciones aprovechan el potente motor de comprensión del lenguaje natural (CLN) de Asistente para procesar y comprender entradas de lenguaje natural y realizar tareas basadas en esa entrada.

Descripción general

Una acción de conversación es un objeto simple que define un punto de entrada (denominado invocación) en una conversación:

  • Una invocación define cómo los usuarios le dicen al Asistente que quieren iniciar una conversación con una de tus Acciones. La invocación de una acción se define mediante un intent único que coincide cuando los usuarios la solicitan.
  • Una conversación define cómo interactúan los usuarios con una acción después de invocarla. Puedes crear conversaciones con intents, tipos, escenas y mensajes.
  • Además, tus acciones pueden delegar trabajo adicional a la entrega, que son servicios web que se comunican con tus acciones a través de webhooks. Esto te permite validar datos, llamar a otros servicios web, llevar a cabo la lógica empresarial y mucho más.

Se agrupan una o varias acciones, según los casos de uso que sean importantes para los usuarios, en un contenedor lógico llamado proyecto de Actions. Tu proyecto de Acciones contiene tu modelo de invocación completo (el conjunto de todas tus invocaciones), lo que permite a los usuarios comenzar en lugares lógicos de tu modelo de conversación (todo lo que los usuarios pueden decir y todas las formas en que respondes a los usuarios).

Figura 1: Una colección de acciones que sirven como puntos de entrada en un modelo de conversación. Los intents aptos para la invocación se consideran globales.

Invocación

La invocación está asociada con un nombre visible que representa una marca, un nombre o una persona que permite a los usuarios pedirle a Asistente que invoque tus acciones. Los usuarios pueden usar este nombre visible por su cuenta (llamado invocación principal) o en combinación con frases opcionales de vínculo directo para invocar tus acciones.

Por ejemplo, los usuarios pueden decir las siguientes frases para invocar tres acciones distintas en un proyecto con el nombre visible "Datos sobre Google":

  • "Hey Google, habla con Facts about Google"
  • "Hey Google, habla con Facts about Google para obtener datos sobre la empresa"
  • "Hey Google, habla con Facts about Google para obtener datos históricos"

La primera invocación del ejemplo es la invocación principal. Esta invocación está asociada con un intent especial del sistema llamado actions.intent.MAIN. La segunda y la tercera invocación son invocaciones de vínculos directos que te permiten especificar frases adicionales que permiten a los usuarios solicitar una funcionalidad específica. Estas invocaciones corresponden a intents de usuario que designaste como globales. En este ejemplo, cada invocación proporciona un punto de entrada a una conversación y corresponde a una sola Acción.

Figura 2: Ejemplo de invocación principal

En la Figura 2, se describe un flujo de invocación principal típico:

  1. Por lo general, cuando los usuarios solicitan una acción, le piden al Asistente por tu nombre visible.
  2. Asistente hace coincidir la solicitud del usuario con el intent correspondiente que coincide con la solicitud. En este caso, sería actions.intent.MAIN.
  3. La acción recibe una notificación sobre la coincidencia del intent y responde con el mensaje correspondiente para iniciar una conversación con el usuario.

Conversación

La conversación define cómo interactúan los usuarios con una acción después de que esta se invoca. A fin de compilar estas interacciones, define la entrada válida del usuario para tu conversación, la lógica a fin de procesar esa entrada y los mensajes correspondientes a fin de responderle al usuario. En la siguiente figura y explicación, se muestra cómo funciona un turno de conversación típico con los componentes de bajo nivel de una conversación: intents, tipos, escenas y mensajes.

Figura 3: Ejemplo de una conversación

En la Figura 3, se describe un turno de conversación típico:

  1. Cuando los usuarios dicen algo, la CLN del Asistente hace coincidir la entrada con un intent apropiado. Un intent coincide si el modelo de idioma de ese intent puede coincidir de manera cercana o exacta con la entrada del usuario. Para definir el modelo de lenguaje, especifica frases de entrenamiento, o ejemplos de lo que los usuarios podrían querer decir. Asistente toma estas frases de entrenamiento y las expande para crear el modelo de lenguaje del intent.
  2. Cuando la CLN del Asistente coincide con un intent, puede extraer los parámetros que necesitas de la entrada. Estos parámetros tienen tipos asociados, como una fecha o un número. Debes anotar partes específicas de las frases de entrenamiento de un intent para especificar qué parámetros quieres extraer.
  3. Luego, una escena procesa el intent coincidente. Puedes considerar a las escenas como los ejecutores lógicos de una acción, realizando el trabajo pesado y la lógica necesaria para impulsar una conversación. Las escenas se ejecutan en un bucle, lo que proporciona un ciclo de vida de ejecución flexible que te permite realizar acciones como validar parámetros de intent, completar espacios publicitarios, enviar mensajes al usuario y mucho más.
  4. Cuando se termina de ejecutar una escena, por lo general, envía un mensaje a los usuarios para continuar la conversación o puede finalizarla si corresponde.

Entrega

Durante la invocación o una conversación, tu acción puede activar un webhook que notifique a un servicio de entrega para que realice algunas tareas.

Figura 4: Ejemplo de una conversación

En la Figura 4, se describe cómo usar la entrega para generar mensajes, una forma común de usar la entrega:

  1. En puntos específicos de la ejecución de la acción, puede activar un webhook que envíe una solicitud a un controlador de webhook registrado (tu servicio de entrega) con una carga útil JSON.
  2. Tu entrega procesa la solicitud, como llamar a una API de REST para que realice algunas búsquedas de datos o valide algunos datos de la carga útil de JSON. Una forma muy común de usar la entrega es generar un mensaje dinámico en el tiempo de ejecución, de modo que las conversaciones se adapten mejor al usuario actual.
  3. Tu entrega muestra una respuesta a tu acción que contiene una carga útil de JSON. Puede usar los datos de la carga útil para continuar su ejecución y responder al usuario.