Las acciones de conversación te permiten ampliar Asistente de Google con tus propias interfaces conversacionales 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 las 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 a Asistente que quieren iniciar una conversación con una de tus Acciones. La invocación de una Acción se define mediante un solo intent que se detecta cuando los usuarios solicitan la acción.
- Una conversación define cómo los usuarios interactúan con una acción después de que se la invoca. Las conversaciones se compilan con intents, tipos, escenas y mensajes.
- Además, tus acciones pueden delegar trabajo adicional a las entregas, que son servicios web que se comunican con tus acciones a través de webhooks. Esto te permite realizar la validación de 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 prácticos que son importantes para los usuarios, en un contenedor lógico llamado proyecto de Acciones. Tu proyecto de acciones contiene todo tu modelo de invocación (la colección de todas tus invocaciones), que permite a los usuarios comenzar en lugares lógicos en tu modelo de conversación (todo lo que los usuarios pueden decir y todas las formas posibles en las que puedes responderles).
Invocación
La invocación se asocia con un nombre visible que representa una marca, un nombre o un arquetipo que permite a los usuarios pedirle al Asistente que invoque tus acciones. Los usuarios pueden usar este nombre visible por sí solo (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 Datos sobre Google"
- "Hey Google, habla con Datos sobre Google para obtener datos sobre la empresa"
- "Hey Google, habla con Datos sobre 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 del sistema especial 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 funcionalidades específicas. Estas invocaciones corresponden a los intents de usuario que designaste como globales. Cada invocación de este ejemplo proporciona un punto de entrada a una conversación y corresponde a una sola Acción.
En la Figura 2, se describe un flujo de invocación principal típico:
- Cuando los usuarios solicitan una acción, por lo general, se la piden al Asistente usando tu nombre visible.
- Asistente asocia la solicitud del usuario con el intent correspondiente que coincide con la solicitud. En este caso, sería
actions.intent.MAIN
. - 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 se la invoca. A fin de crear estas interacciones, define la entrada del usuario válida para la conversación, la lógica para procesar esa entrada y los mensajes correspondientes con los que responder al usuario. En la siguiente figura y explicación, se muestra cómo funciona un turno típico de conversación con los componentes de bajo nivel de una conversación: intents, tipos, escenas y mensajes.
En la Figura 3, se describe un turno típico de conversación:
- Cuando los usuarios dicen algo, la CLN de Asistente asocia la entrada con un intent adecuado. Un intent coincide si su modelo de lenguaje para ese intent puede coincidir de manera cercana o exacta con la entrada del usuario. Para definir el modelo de lenguaje, debes especificar 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 idioma del intent.
- Cuando la CLN de Asistente establece una coincidencia con un intent, puede extraer 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 deseas extraer.
- Luego, una escena procesa el intent coincidente. Puedes pensar en las escenas como los ejecutores lógicos de una acción, que realizan el trabajo pesado y llevan a cabo la lógica necesaria para impulsar una conversación. Las escenas se ejecutan en bucle, lo que proporciona un ciclo de vida de ejecución flexible que te permite realizar acciones como validar parámetros de intents, completar ranuras, enviar mensajes al usuario y mucho más.
- Cuando termina de ejecutarse una escena, por lo general, vuelve a enviar un mensaje a los usuarios para que continúen 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 notifica a un servicio de entrega para que realice algunas tareas.
En la Figura 4, se describe cómo puedes usar la entrega para generar mensajes, una forma común de usar la entrega:
- En puntos específicos de la ejecución de tu Acción, puede activar un webhook que envíe una solicitud a un controlador de webhooks registrado (tu servicio de entrega) con una carga útil de JSON.
- Tu entrega procesa la solicitud, como llamar a una API de REST para buscar datos o validar algunos datos de la carga útil de JSON. Una forma muy común de usar las entregas es generar una instrucción dinámica durante el tiempo de ejecución para que tus conversaciones se adapten mejor al usuario actual.
- 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 con su ejecución y responder al usuario.