Las acciones de conversación dejarán de estar disponibles el 13 de junio de 2023. Para obtener más información, consulta Cómo dar de baja Acciones de conversación.

Escenas

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En combinación con los intents, las escenas son el otro componente fundamental de tu modelo de conversación. Las escenas representan estados individuales de tu conversación y su objetivo principal es organizar tu conversación en fragmentos lógicos, ejecutar tareas y mostrar solicitudes a los usuarios.

Estas son algunas de las características de las escenas:

  • Ejecución en bucle: Las escenas se ejecutan dentro de un bucle hasta que cumplen con los criterios de transición que definiste. Esto te permite crear flujos de lógica de control de manera mucho más eficiente dentro de una sola escena.
  • Separación de diálogos: Si se combina con los intents, las escenas te permiten agrupar los diálogos en fragmentos lógicos, lo que te brinda maneras sencillas de crear solicitudes de usuario y pares de respuestas de acción.
  • Alcance de la coincidencia del intent: Debido a que solo una escena puede estar activa a la vez, puedes establecer el alcance de la coincidencia del intent con las escenas que elijas y hacer que coincidan solo cuando esas escenas están activas.
  • Rellena ranuras: Puedes usar el relleno de espacios dentro de una escena para recopilar varias entradas de entrada escritas por el usuario, sin tener que crear varios intents.
  • Condiciones en entorno de ejecución: Puedes verificar las ranuras, las sesiones, el usuario y el almacenamiento de la página principal para llevar a cabo una lógica condicional simple sin activar un webhook.

Puedes definir las escenas como parte de tu modelo conversacional como una escena personalizada. La lógica conversacional de Asistente también incluye escenas del sistema que proporcionan funciones estándar para tu conversación.

Escenas personalizadas

Una escena personalizada es un componente fundamental de la lógica conversacional que forma parte del modelo de conversación de tu acción. Las escenas personalizadas tienen etapas que definen cómo y cuándo comienza, lo que se denomina activación, el procesamiento de conversación que realiza, llamado ciclo de vida de la ejecución, y cómo termina la escena, denominado transición:

  • Activación: antes de que se pueda ejecutar una escena, debes activarla mediante una transición de escena o una coincidencia de intent global.
  • Ejecución: Cuando una escena está activa, se ejecuta en un ciclo de vida bien definido que te permite llevar a cabo una variedad de tareas, como llenado de ranuras, verificación condicional, generación de mensajes y activación de eventos de webhook.
  • Transición: Cuando una escena cumple con los criterios que defines, como la coincidencia de un intent o el llenado de ranuras, puedes hacer la transición a otra escena para llevar a cabo más lógica. Como alternativa, puedes pasar a la escena del sistema Finalizar conversación, que finaliza la conversación con el usuario.
Figura 1: Una transición de escena común. Un intent global activa una escena durante la invocación, la escena consume la entrada del usuario y hace coincidir un intent, que genera una transición y activa otra escena.

Activación

Para que una escena pueda ejecutarse, debe estar activa. Solo puede haber una escena activa a la vez. Puedes activar las escenas de las siguientes maneras:

  • Invocación: Cuando la entrada del usuario coincide con el modelo de idioma de un intent global, puedes activar una escena para procesar la invocación.
  • Transición de escena estática: Cuando una escena cumple con los criterios de transición, puedes definir una transición a otra escena.
  • Transición de escena dinámica: dentro de un controlador webhook, puedes realizar la transición de manera programática a otra escena.

Ciclo de vida de la ejecución

Cuando una escena está activa, se ejecuta dentro de un ciclo de vida bien definido que se repite en bucle hasta que la escena cumple con los criterios de transición que estableciste. El ciclo de vida de ejecución de una escena se divide en etapas opcionales que se ejecutan en el siguiente orden:

  1. Entrar: esta etapa solo se ejecuta una vez que se activa una escena. Puedes activar un webhook o solicitarle al usuario que configure por única vez tu escena.

  2. Condiciones: Las condiciones te permiten evaluar ciertos criterios antes de avanzar en las etapas del ciclo de vida, activar un webhook o enviar mensajes. Esta etapa puede definir los criterios de transición para salir del bucle de ejecución.

  3. Relleno de espacios: Una escena puede solicitar automáticamente a los usuarios hasta que recopile todos los espacios requeridos (datos escritos). Una escena solicita una sola ranura cada vez a través de su bucle de ejecución. Si faltan ranuras, el ciclo de vida de la escena eventualmente vuelve a la etapa de relleno de ranuras y solicita la siguiente ranura obligatoria. Esta etapa puede definir los criterios de transición para salir del bucle de ejecución.

  4. Mensajes: Asistente entrega la cola de mensajes al usuario y la borra. La cola de mensajes es la colección combinada de mensajes que se agregaron desde la última vez que esta etapa borró la cola.

  5. Entrada: Asistente consume y muestra la entrada del usuario en la escena, por lo que puedes procesarla, lo que podría incluir la coincidencia de intents (intents globales o intents de usuarios dentro de una escena), la continuidad del llenado de ranuras (si no está completo) o el control de errores de entrada o de no coincidencias. Esta etapa puede definir los criterios de transición para salir del bucle de ejecución. Si no pasa la transición, el bucle de ejecución vuelve a la etapa de condiciones.

Figura 2: Ciclo de vida de la ejecución de escena

En las siguientes secciones, se describe cada etapa del ciclo de vida con más detalle.

Entrar

En Intro, es la única etapa que no se ejecuta en el bucle de ejecución de una escena. Hace la inicialización única de tu escena en el siguiente orden:

  • Si el entorno de ejecución de Asistente puede llenar cualquier ranura de un intent que coincidió anteriormente, lo hace para preparar la escena de la etapa de relleno de ranuras. Por ejemplo, algunas entradas del usuario pueden coincidir con un intent y proporcionar una ranura. Esa coincidencia de intent activa una escena y puede llenar un espacio en una escena si los nombres de los espacios coinciden.
  • Si un webhook está habilitado, activa un evento de manera síncrona y espera a que tu servicio web muestre una respuesta.
  • Cuando el entorno de ejecución recibe una respuesta de webhook, resuelve las referencias de parámetros en los mensajes, selecciona una opción de solicitud basada en la superficie del usuario y, luego, selecciona una variante para que el candidato la envíe más tarde.
  • Si la respuesta de webhook contiene un mensaje, se agrega a la cola de mensajes. Si también existe un mensaje estático, el mensaje del webhook se combina primero con la cola de mensajes, seguido del mensaje estático.
  • Si la respuesta de webhook contiene una transición, lo hace ahora. De lo contrario, la escena continúa hasta la etapa de relleno de ranuras.

Condiciones

Las condiciones te permiten verificar los datos de la sesión, el usuario o el espacio para que una condición sea verdadera. Por ejemplo, puedes verificar si se llenaron todas las ranuras y establecerlas como criterios para pasar a otra escena a fin de procesar las ranuras.

  • El entorno de ejecución del Asistente evalúa cada condición en el orden en que se especifican. La primera condición que se evalúa como true ejecuta el controlador asociado y detiene la evaluación de condiciones.
  • Si se llena el espacio, se agrega de forma automática una condición else if scene.slots.status = "FINAL" a la lista de condiciones. Esta condición opcional verifica que se complete el llenado de ranuras y puede activar un webhook o agregar mensajes a la cola de mensajes.

Después de la evaluación de la condición, si la escena no define una transición, continúa con el llenado de ranuras.

Llenado de ranuras

Esta etapa agrega una solicitud de espacio para una ranura única, sin completar y obligatoria. Si no defines ninguna ranura en la escena, esta etapa no hace nada.

  • El entorno de ejecución del Asistente selecciona el primer espacio sin completar y agrega el mensaje correspondiente a la cola de mensajes. Debido a que los bucles de ejecución de la escena, las ranuras adicionales sin completar se controlan más tarde cuando el bucle de ejecución vuelve a esta etapa.
  • La ranura activa actual puede tener mensajes de manejo de errores que anulan los definidos en la etapa de entrada de la escena.
  • Cuando el usuario llena una ranura, puedes validarlo en un servicio web mediante la activación de un webhook.

Mensajes

El entorno de ejecución del Asistente entrega la cola de mensajes al usuario, la borra y consume la entrada del usuario.

Entrada

El entorno de ejecución de Asistente intenta hacer coincidir la entrada con un intent o una ranura:

  • En el caso de una coincidencia de intent del usuario, la escena ejecuta el controlador del intent asociado (intent del usuario o del sistema). El controlador de intents de una escena tiene prioridad sobre cualquier intent global. Si no definiste una transición, la ejecución de la escena vuelve a iniciar la etapa de condiciones.
  • En el caso de una coincidencia de espacio, la escena vuelve a la etapa de relleno de espacios.
  • En el caso de una coincidencia del intent del sistema (por ejemplo, si no hay entrada o ninguna coincidencia), puedes agregar mensajes a la cola de mensajes, activar un webhook o realizar una transición. En el caso de que no estén definidos varios mensajes de coincidencia, el entorno de ejecución del Asistente elige el más relevante, en el siguiente orden: relleno de ranuras, escena y, luego, mensajes globales sin coincidencias. Ninguna coincidencia consecutiva genera un evento correspondiente:

    • no_match_1
    • no_match_2
    • no_match_final

    Cada nivel sin coincidencias (relleno de espacios, escena y a nivel global) puede activar eventos de webhook. De forma predeterminada, la tercera y última falta de coincidencia finalizan la conversación.

Transición

Las transiciones pueden ocurrir en las siguientes etapas:

  • Condiciones: puedes hacer la transición a otra escena según las condiciones que definas. Una condición común que se debe verificar es que se complete el relleno de ranuras.
  • Entrada (coincidencia del intent del usuario): si un intent coincide, puede activar una transición a otra escena.
  • Entrada (coincidencia de intents del sistema): puedes activar webhooks durante cualquier evento de coincidencia de intents del sistema. Sin coincidencias y sin eventos de entrada, la escena, de forma predeterminada, pasa a la escena Finalizar conversación después de tres casos.

Escenas del sistema

Las escenas del sistema te permiten usar la lógica conversacional integrada que proporciona Asistente, lo que te permite agregar flujos de conversación estándar a la experiencia del usuario. Por ejemplo, la escena del sistema de vinculación de cuentas permite que Asistente se haga cargo temporalmente del flujo de vinculación de las cuentas y muestre la información que necesitas para vincular las cuentas del usuario. Las escenas del sistema no siguen el ciclo de vida estándar de la escena.

En la siguiente lista, se describen las escenas del sistema compatibles y cómo usarlas:

  • Finalizar conversación: Cierra el micrófono y finaliza la conversación con el usuario. El Asistente toma el control de la experiencia del usuario después de que se ejecuta esta escena.
  • Vinculación de cuentas: Guía al usuario a través de un flujo de vinculación de cuentas y proporciona a tus acciones la información necesaria para vincular la cuenta del usuario en tus servidores de backend con la Cuenta de Google del usuario. Consulta la documentación sobre la vinculación de cuentas para obtener más información sobre cómo usar esta escena.
  • Actualizaciones diarias: Guía al usuario a través de un flujo de confirmación para agregar tus acciones a las actualizaciones diarias de un usuario. Consulta la documentación de las actualizaciones diarias para obtener más información sobre cómo usar esta escena.
  • Notificaciones: Guía al usuario a través de un flujo de confirmación para recibir notificaciones de tus acciones. Consulta la documentación de notificaciones push para obtener más información sobre cómo usar esta escena.