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
tieneintent I1
como requisito yflow F2
como objetivo de transición. Flow F2
tiene una ruta que también requiereintent 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:
- Abre la página de inicio del flujo.
- Haz clic en el botón de añadir , situado en el encabezado Rutas.
- Se abrirá el panel de edición de la ruta.
- Proporciona los campos de ruta.
- Haz clic en Guardar.
Para cambiar el orden de las rutas a nivel de flujo desde la consola, sigue estos pasos:
- Abre la página de inicio del flujo.
- Haz clic en el encabezado Rutas.
- Se abrirá el panel de lista de rutas.
- 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:
- Abre la página de inicio del flujo.
- Haz clic en el encabezado Rutas.
- Se abrirá el panel de lista de rutas.
- Haz clic en el menú de opciones .
- 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:
- Abre la página (no la página de inicio del flujo).
- Haz clic en el botón de añadir , situado en el encabezado Rutas.
- Se abrirá el panel de edición de la ruta.
- Proporciona los campos de ruta.
- Haz clic en Guardar.
Para reordenar las rutas a nivel de página desde la consola, sigue estos pasos:
- Abre la página (no la página de inicio del flujo).
- Haz clic en el encabezado Rutas.
- Se abrirá el panel de lista de rutas.
- 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:
- Abre la página (no la página de inicio del flujo).
- Haz clic en el encabezado Rutas.
- Se abrirá el panel de lista de rutas.
- Haz clic en el menú de opciones .
- 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:
- Abre la página de inicio del flujo.
- Haz clic en el botón de añadir situado en el encabezado Gestores de eventos.
- Se abrirá el panel de controladores de eventos.
- Proporciona los campos del controlador de eventos.
- Haz clic en Guardar.
Para eliminar gestores de eventos a nivel de flujo desde la consola, sigue estos pasos:
- Abre la página de inicio del flujo.
- Haga clic en el encabezado Controladores de eventos.
- Se abrirá el panel de la lista de controladores de eventos.
- 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:
- Abre una página (que no sea la página de inicio del flujo).
- 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.
- Haz clic en el botón de añadir situado en el encabezado Gestores de eventos.
- Se abrirá el panel de controladores de eventos.
- Proporciona los campos del controlador de eventos.
- Haz clic en Guardar.
Para eliminar los controladores de eventos a nivel de página de la consola, sigue estos pasos:
- Abre una página (que no sea la página de inicio del flujo).
- Haga clic en el encabezado Controladores de eventos.
- Se abrirá el panel de la lista de controladores de eventos.
- 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:
- Abre una página que contenga parámetros de formulario.
- Haz clic en un parámetro.
- Se abrirá el panel de parámetros.
- 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.
- Se abrirá el panel de controladores de eventos.
- Proporciona los campos del controlador de eventos.
- Haz clic en Guardar.
Para eliminar gestores de eventos a nivel de parámetro desde la consola, sigue estos pasos:
- Abre una página que contenga parámetros de formulario.
- Haz clic en un parámetro.
- Se abrirá el panel de parámetros.
- Desplázate hacia abajo hasta la sección Gestores de eventos de repetición de la petición.
- 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 |
✔ | ✔ | ✔ | |
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:
|
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 |