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 la entrada de lenguaje natural y realizar tareas según 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. Una invocación de acción se define mediante un solo intent que coincide cuando los usuarios la solicitan.
- Una conversación define cómo interactúan los usuarios con una acción después de que se la invoca. Puedes crear conversaciones con intents, tipos, escenas y mensajes.
- Además, tus acciones pueden delegar tareas adicionales a la entrega, que son servicios web que se comunican con las acciones a través de webhooks. Esto te permite validar los datos, llamar a otros servicios web, llevar a cabo la lógica empresarial y mucho más.
Se empaquetan una o varias acciones, según los casos prácticos que sean importantes para los usuarios, en un contenedor lógico llamado proyecto de acciones. Tu proyecto de acciones contiene el modelo de invocación completo (el conjunto de todas las invocaciones), lo que permite que los usuarios comiencen en lugares lógicos de tu modelo de conversación (todas las cosas que pueden decir los usuarios y todas las formas posibles en las que les respondes).
Invocación
La invocación está asociada a un nombre visible que representa una marca, un nombre o una persona y que permite a los usuarios pedirle al 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":
- "Ok Google, habla con Facts about Google"
- "Ok Google, habla con Facts about Google para obtener datos sobre la empresa"
- "Ok 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 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 los intents de los usuarios 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 lo piden a Asistente mediante tu nombre visible.
- Asistente hace coincidir 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 de 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 compilar estas interacciones, debes definir la entrada del usuario válida para tu conversación, la lógica a fin de procesar esa entrada y los mensajes correspondientes para responder 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.
En la figura 3, se describe un turno de conversación típico:
- 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 para ese intent puede coincidir de forma 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 lenguaje del intent.
- 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. Anotas partes específicas de las frases de entrenamiento de un intent para especificar qué parámetros quieres extraer.
- Luego, una escena procesa el intent coincidente. Puedes pensar que las escenas son los ejecutores lógicos de una acción y se encargan del trabajo pesado y de 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 intents, completar espacios y enviar mensajes al usuario, entre otras acciones.
- Cuando se termina de ejecutar una escena, por lo general, se les envía un mensaje a los usuarios para que continúen la conversación o pueden 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.
En la figura 4, se describe cómo puedes usar la entrega para generar mensajes, una forma común de usar las entregas:
- En momentos específicos de la ejecución de tu 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 de JSON.
- Tu entrega procesa la solicitud, como llamar a una API de REST para realizar algunas búsquedas de datos o validar algunos datos de la carga útil JSON. Una forma muy común de usar las entregas es generar un mensaje dinámico en el entorno de ejecución a fin de que tus conversaciones se adapten mejor al usuario actual.
- La entrega muestra una respuesta a la 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.