Controladores de estado

Los gestores de estado, también llamados gestores, se usan para controlar la conversación creando respuestas para los usuarios finales o cambiando de página. En cada turno de conversación, se evalúan los controladores, que pueden afectar a la sesión. Los controladores tienen tres tipos generales de datos:

Término Definición
Requisitos del controlador Estos son los requisitos que se deben cumplir para que el controlador tenga algún efecto en la sesión. Se dice que se llama a un controlador cuando cumple sus requisitos y afecta a la sesión de alguna forma.
Procesamiento de controladores Si se llama a un controlador, se usa un cumplimiento opcional para crear respuestas para los usuarios finales. Estas respuestas se definen en datos de agente estáticos o se obtienen de forma dinámica de tu servicio de webhook.
Destino de transición del controlador Si se llama a un controlador, se usa un destino de transición opcional para cambiar la página actual. La página siguiente solo puede ser una página de inicio de flujo o una página del flujo activo.

Hay dos tipos de controladores de estado con requisitos diferentes:

Término Definición
Rutas Se llama a Routes cuando la entrada de un usuario final coincide con un intent o se cumple alguna condition en el estado de la sesión. Una ruta con un requisito de intención también se denomina ruta de intención. Una ruta que solo tiene un requisito de condición también se denomina ruta de condición.
Gestores de eventos Los gestores de eventos se llaman cuando se invoca un evento. Algunos eventos integrados se activan cuando se recibe una entrada inesperada del usuario final o cuando se produce un error de webhook. También puedes definir eventos personalizados que se activen cuando ocurra algo fuera de la conversación.

El procesamiento de un controlador de estado consta de tres pasos:

Término Definición
1. Ámbito Un controlador debe estar en el ámbito para que tenga algún efecto en la sesión. El ámbito se determina en función de si se aplica un controlador a un flujo, una página o un parámetro de formulario, y de si el flujo asociado está activo, la página asociada está activa o el agente está intentando rellenar el parámetro de formulario asociado.
2. Evaluación Cada controlador del ámbito se evalúa en orden. Si se cumplen los requisitos de un controlador, se supera la evaluación.
3. Llamada Si un controlador está en el ámbito y supera la evaluación, se llama. Se llama a cualquier fulfillment asociado y se aplica a la sesión cualquier destino de transición asociado.

Ámbito

Para que se evalúe un controlador, debe estar en el ámbito. El ámbito del controlador es una herramienta importante y potente que te ayuda a controlar la conversación. Al controlar el ámbito de un controlador, puedes controlar lo siguiente:

X Elemento
Cuándo se puede encontrar una coincidencia con una intención
Cuándo se debe comprobar una condición
Cuándo se puede gestionar un evento determinado
Cuándo se puede producir una transición de página
Cuando se proporciona una respuesta de cumplimiento estática
Cuando se llama a un webhook para obtener respuestas dinámicas

El ámbito se determina en función de si se aplica un controlador a un flujo, una página o un parámetro de formulario, así como de si el flujo o la página asociados están activos o si el agente está intentando rellenar el parámetro de formulario asociado.

Las reglas de alcance detalladas son las siguientes:

  • Rutas aplicadas al flujo activo:
    • Si la página actual es la página de inicio del flujo, se incluyen en el ámbito.
    • Si la página actual no es la página de inicio del flujo, solo se incluyen si tienen un requisito de intención.
  • Las rutas aplicadas a la página actual están en el ámbito.
  • Los controladores de eventos aplicados al flujo activo están en el ámbito.
  • Los controladores de eventos aplicados a la página actual están en el ámbito.
  • Los controladores de eventos aplicados a un parámetro de formulario que el agente está intentando rellenar están en el ámbito.

Rutas

Las rutas tienen dos requisitos, y se debe proporcionar uno o ambos. Si se proporcionan ambos requisitos, se deben cumplir los dos para poder llamar a la ruta:

Término Definición
Requisito de intención Un intent que debe coincidir con la entrada del usuario final en la conversación actual. Cuando una ruta tiene un requisito de intent, se denomina ruta de intent.
Requisito de condición Una condición que se debe cumplir. Cuando una ruta tiene un requisito de condición, se denomina ruta de condición.

Puedes aplicar rutas a flujos (rutas a nivel de flujo) y páginas (rutas a nivel de página). Por ejemplo, puedes usar rutas en las siguientes situaciones:

X Elemento
Cuando la entrada del usuario final coincida con una intención, la coincidencia debe activar una respuesta de cumplimiento estático.
Cuando la entrada del usuario final coincide con una intención, la coincidencia debe activar un cumplimiento habilitado para webhook para obtener una respuesta dinámica.
Cuando la entrada del usuario final ha proporcionado el parámetro de formulario final requerido, una comprobación de la condición activa una transición de sesión a otra página.
Cuando la entrada del usuario final ha proporcionado un parámetro de formulario específico, una comprobación de condición activa una respuesta de cumplimiento estático.
Una comprobación de condición definida en true que fuerza una transición de página.

Propagación de intents

Normalmente, cuando se llama a una ruta debido a una intención coincidente, la intención se consume. Una intención consumida no se puede volver a asociar, a menos que la entrada de un nuevo usuario final active una nueva asociación de intención. Sin embargo, es posible propagar una coincidencia de intención de un flujo a otro en el siguiente caso:

  • Una ruta de flow F1 tiene intent I1 como requisito y flow F2 como objetivo de transición.
  • Flow F2 tiene una ruta que también requiere intent I1.

En este caso, cuando se llama a la ruta de flow F1, intent I1 se corresponde dos veces con una sola entrada del usuario final y se llama a ambas rutas.

Propagar intenciones es útil para lo siguiente:

X Elemento
Cambiar la página actual por una página específica de otro flujo (la ruta del flujo de destino de la transición tiene una página de destino de transición específica).
Crea un mensaje de entrada para la página de inicio de un flujo (la ruta del flujo de destino de la transición tiene un fulfillment).

Grupos de rutas

Cuando crees un agente, puede que muchas páginas tengan un conjunto de rutas comunes. Para que las rutas se puedan reutilizar, puedes definir grupos de rutas. Puedes crear estos recursos de grupo reutilizables en el flujo o en todo el agente.

Por ejemplo, puede que quieras que tu flujo gestione la entrada del usuario final, como "Quiero añadir un ingrediente a mi pizza" y "Quiero cambiar el tamaño de mi bebida". Estas entradas se deben gestionar cuando esté activa cualquiera de las páginas del flujo. Podrías definir dos rutas con intents para gestionar estas entradas en todas las páginas relevantes, pero esto supondría mucho trabajo duplicado. En su lugar, puede definir el grupo de rutas una vez y añadir una referencia al grupo en todas las páginas pertinentes.

Grupos de rutas a nivel de flujo

Los grupos de rutas a nivel de flujo son recursos de grupos de rutas que se crean con un flujo como elemento superior. Se pueden reutilizar en el flujo.

Grupos de rutas a nivel de agente

Los grupos de rutas a nivel de agente son recursos de grupos de rutas que se crean con un agente como elemento superior. Se pueden reutilizar en todo el agente, pero no permiten rutas que pasen a una página no simbólica como destino.

Rutas con nivel de flujo

Las rutas a nivel de flujo son rutas que se aplican a un flujo añadiéndolas a la página de inicio del flujo. Estos tipos de controladores tienen los siguientes casos prácticos:

X Elemento
Gestores con un requisito de intención o condición en el ámbito de la página de inicio del flujo.
Gestores con un requisito de intención en el ámbito de todas las páginas del flujo.

Para crear rutas a nivel de flujo desde la consola, siga estos pasos:

  1. Abre la página de inicio del flujo.
  2. Haz clic en el botón de añadir , situado en el encabezado Rutas.
  3. Se abrirá el panel de edición de la ruta.
  4. Proporciona los campos de ruta.
  5. Haz clic en Guardar.

Para cambiar el orden de las rutas a nivel de flujo desde la consola, sigue estos pasos:

  1. Abre la página de inicio del flujo.
  2. Haz clic en el encabezado Rutas.
  3. Se abrirá el panel de lista de rutas.
  4. Arrastra las rutas en el orden que quieras. También puedes hacer clic en el menú de opciones y seleccionar Mover a.

Para eliminar rutas de nivel de flujo desde la consola, sigue estos pasos:

  1. Abre la página de inicio del flujo.
  2. Haz clic en el encabezado Rutas.
  3. Se abrirá el panel de lista de rutas.
  4. Haz clic en el menú de opciones .
  5. Selecciona Eliminar.

Rutas a nivel de página

Las rutas a nivel de página son rutas que se aplican a una página. Estos tipos de controladores tienen los siguientes casos prácticos:

X Elemento
Gestores con un requisito de intención o condición en el ámbito cuando hay páginas específicas activas.

Para crear rutas a nivel de página desde la consola, sigue estos pasos:

  1. Abre la página (no la página de inicio del flujo).
  2. Haz clic en el botón de añadir , situado en el encabezado Rutas.
  3. Se abrirá el panel de edición de la ruta.
  4. Proporciona los campos de ruta.
  5. Haz clic en Guardar.

Para reordenar las rutas a nivel de página desde la consola, sigue estos pasos:

  1. Abre la página (no la página de inicio del flujo).
  2. Haz clic en el encabezado Rutas.
  3. Se abrirá el panel de lista de rutas.
  4. Arrastra las rutas en el orden que quieras. También puedes hacer clic en el menú de opciones y seleccionar Mover a.

Para eliminar rutas a nivel de página desde la consola, sigue estos pasos:

  1. Abre la página (no la página de inicio del flujo).
  2. Haz clic en el encabezado Rutas.
  3. Se abrirá el panel de lista de rutas.
  4. Haz clic en el menú de opciones .
  5. Selecciona Eliminar.

Gestores de eventos

Los controladores de eventos deben cumplir un requisito para poder llamarse:

Término Definición
Requisito del evento Un evento que se debe invocar. Los eventos se identifican por su nombre. Algunos eventos integrados se invocan cuando se recibe una entrada inesperada del usuario final o cuando se produce un error de webhook. También puedes definir eventos personalizados que se activen cuando ocurra algo fuera de la conversación.

Puede aplicar controladores de eventos a flujos (controladores de eventos a nivel de flujo), páginas (controladores de eventos a nivel de página) y parámetros (controladores de eventos a nivel de parámetro). Por ejemplo, puedes usar controladores de eventos en las siguientes situaciones:

X Elemento
Cuando la entrada del usuario final no coincide con ninguna intención, un controlador de eventos no-match proporciona una respuesta static fulfillment específica.
Un temporizador caduca en tu sistema y quieres proporcionar información de recordatorio al usuario final con una respuesta de cumplimiento estático específica.

Gestores de eventos a nivel de flujo

Los gestores de eventos a nivel de flujo son gestores de eventos que se aplican a un flujo. Estos tipos de controladores tienen los siguientes casos prácticos:

X Elemento
Gestores con un requisito de evento en el ámbito de la página de inicio del flujo.
Gestores con un requisito de evento en el ámbito de todas las páginas del flujo.
Gestiona las entradas inesperadas de los usuarios finales, compartidas por todas las páginas de un flujo.
Gestiona los errores de webhook, compartidos por todas las páginas de un flujo.
Gestiona los eventos personalizados invocados por tu sistema, compartidos por todas las páginas de un flujo.

Todos los flujos tienen controladores de eventos para los eventos integrados no-match y no-input. Estos controladores de eventos se crean automáticamente cuando creas un flujo y no se pueden eliminar.

Para crear controladores de eventos a nivel de flujo desde la consola, sigue estos pasos:

  1. Abre la página de inicio del flujo.
  2. Haz clic en el botón de añadir situado en el encabezado Gestores de eventos.
  3. Se abrirá el panel de controladores de eventos.
  4. Proporciona los campos del controlador de eventos.
  5. Haz clic en Guardar.

Para eliminar gestores de eventos a nivel de flujo desde la consola, sigue estos pasos:

  1. Abre la página de inicio del flujo.
  2. Haga clic en el encabezado Controladores de eventos.
  3. Se abrirá el panel de la lista de controladores de eventos.
  4. Coloca el cursor sobre un controlador de eventos y, a continuación, haz clic en el botón de eliminar .

Gestores de eventos a nivel de página

Los gestores de eventos a nivel de página son gestores de eventos que se aplican a una página. Estos tipos de controladores tienen los siguientes casos prácticos:

X Elemento
Gestores con un requisito de evento en el ámbito cuando hay páginas específicas activas.
Gestionar las entradas inesperadas de los usuarios finales, específicas de una página.
Gestionar errores de webhook específicos de una página.
Gestionar eventos personalizados invocados por tu sistema, específicos de una página.

Para crear controladores de eventos a nivel de página desde la consola, sigue estos pasos:

  1. Abre una página (que no sea la página de inicio del flujo).
  2. Si no aparece el encabezado Gestores de eventos, haz clic en Añadir gestor de estado, selecciona Gestores de eventos y, a continuación, haz clic en Aplicar.
  3. Haz clic en el botón de añadir situado en el encabezado Gestores de eventos.
  4. Se abrirá el panel de controladores de eventos.
  5. Proporciona los campos del controlador de eventos.
  6. Haz clic en Guardar.

Para eliminar los controladores de eventos a nivel de página de la consola, sigue estos pasos:

  1. Abre una página (que no sea la página de inicio del flujo).
  2. Haga clic en el encabezado Controladores de eventos.
  3. Se abrirá el panel de la lista de controladores de eventos.
  4. Coloca el cursor sobre un controlador de eventos y, a continuación, haz clic en el botón de eliminar .

Gestores de eventos a nivel de parámetro

Los gestores de eventos a nivel de parámetro son gestores de eventos que se aplican a un parámetro de formulario. También se conocen como gestores de repetición de peticiones. Estos controladores de eventos no permiten eventos personalizados, ya que están diseñados específicamente para gestionar las entradas no válidas de los usuarios finales durante el proceso de rellenar formularios.

Estos tipos de controladores tienen los siguientes casos prácticos:

X Elemento
El usuario final no ha proporcionado una entrada válida cuando se le ha pedido que rellene un parámetro de formulario.

Para crear controladores de eventos a nivel de parámetro desde la consola, sigue estos pasos:

  1. Abre una página que contenga parámetros de formulario.
  2. Haz clic en un parámetro.
  3. Se abrirá el panel de parámetros.
  4. Desplázate hacia abajo hasta la sección Gestores de eventos de repetición de la petición y haz clic en Añadir gestor de eventos.
  5. Se abrirá el panel de controladores de eventos.
  6. Proporciona los campos del controlador de eventos.
  7. Haz clic en Guardar.

Para eliminar gestores de eventos a nivel de parámetro desde la consola, sigue estos pasos:

  1. Abre una página que contenga parámetros de formulario.
  2. Haz clic en un parámetro.
  3. Se abrirá el panel de parámetros.
  4. Desplázate hacia abajo hasta la sección Gestores de eventos de repetición de la petición.
  5. Coloca el cursor sobre un controlador de eventos y, a continuación, haz clic en el botón de eliminar .

Eventos integrados

Los siguientes eventos están integrados y los invocan los agentes conversacionales (Dialogflow CX). Algunos eventos están restringidos a determinados niveles.

Nombre del evento
Nivel de flujo Nivel de página Nivel de parámetro Se invoca cuando
sys.no-match-default
  • A nivel de flujo o página: la entrada del usuario final no coincide con ninguna intención de los controladores que están en el ámbito.
  • A nivel de parámetro: la entrada del usuario final no cumple el parámetro del formulario.
sys.no-match-[1-6] Si proporcionas controladores para cualquiera de estos eventos ordenados numéricamente, se invocarán en lugar de sys.no-match-default y en el siguiente orden: sys.no-match-1, sys.no-match-2, ...
sys.no-input-default No se ha recibido la entrada del usuario final. Se puede invocar en los siguientes casos:
  • Conversational Agents (Dialogflow CX) recibe una entrada de texto vacía del usuario final.
  • Conversational Agents (Dialogflow CX) recibe una entrada de audio vacía del usuario final o la entrada no contiene ningún discurso reconocido.
  • Se produce un tiempo de espera sin voz antes de que la entrada de audio del usuario final contenga alguna voz reconocida.
sys.no-input-[1-6] Si proporcionas controladores para cualquiera de estos eventos ordenados numéricamente, se invocarán en lugar de sys.no-input-default y en el siguiente orden: sys.no-input-1, sys.no-input-2, ...
sys.invalid-parameter Se invoca cuando una respuesta de webhook invalida el parámetro al definir WebhookResponse.pageInfo.formInfo.parameterInfo.state como INVALID.
sys.long-utterance La entrada del usuario final supera la longitud máxima permitida (256 caracteres) que coinciden con intenciones no generativas o parámetros. Si no se proporciona, Conversational Agents (Dialogflow CX) trata las peticiones largas de los usuarios como no-match. En el caso de las entradas de audio en streaming, este evento solo se activa después de que el cliente cierre el flujo de audio.
webhook.error La llamada al webhook ha devuelto un error. Este evento solo se invoca en los siguientes casos: 1) si no hay ningún controlador de eventos de webhook detallado (por ejemplo, webhook.error.timeout) que coincida con el código de error del webhook; 2) si no se ha definido ningún destino de transición en la ruta original que ha llamado al fulfillment con el webhook que ha fallado. Consulta la sección Orden de evaluación para obtener más información.
webhook.error.timeout Se ha agotado el tiempo de espera de la llamada de webhook. Un evento de webhook solo se invocará si no se ha definido ningún destino de transición en la ruta original que ha llamado al webhook fallido. Consulta la sección Orden de evaluación para obtener más información.
webhook.error.bad-request El webhook ha devuelto el error 400 Bad Request. Un evento de webhook solo se invocará si no se ha definido ningún destino de transición en la ruta original que ha llamado al webhook fallido. Consulta la sección Orden de evaluación para obtener más información.
webhook.error.rejected El webhook ha devuelto 401 Unauthorized o 403 Forbidden. Un evento de webhook solo se invocará si no se ha definido ningún destino de transición en la ruta original que ha llamado al webhook fallido. Consulta la sección Orden de evaluación para obtener más información.
webhook.error.unavailable El webhook ha devuelto el error