Prácticas recomendadas generales para el diseño de agentes

En esta guía, se proporcionan prácticas recomendadas generales para diseñar todo tipo de agentes.

También deberías consultar la guía de diseño de agentes de voz específica a fin de diseñar agentes de voz y la guía de prácticas recomendadas para usar el servicio de Dialogflow.

Consejo general

Compila agentes iterativamente

Si tu agente será grande o complejo, comienza por compilar un diálogo que solo aborde las solicitudes de nivel superior. Una vez que se haya establecido la estructura básica, itera en las rutas de conversación para asegurarte de incluir todas las rutas posibles que puede tomar un usuario final.

Mientras tu agente evoluciona, considera usar la función de casos de prueba para el desarrollo basado en pruebas.

Agentes preconstruidos

Dialogflow ofrece plantillas de agentes para ayudarte a comenzar. Los agentes compilados previamente abordan casos prácticos comunes, como servicios financieros, telecomunicaciones y viajes. Estos agentes incluyen intents y entidades que abordan las solicitudes más comunes de los usuarios. Agrega rutas y entregas específicas de tu empresa y compilarás rápidamente un agente funcional.

Integraciones y conexión de servicios

Existen varias formas de integrarse a los agentes de Dialogflow. En esta sección, se proporcionan prácticas recomendadas para elegir cómo realizar la integración.

Integraciones

Las integraciones de Dialogflow proporcionan una interfaz de usuario lista para usar para tu agente. Si usas una integración, no necesitas llamar directamente a la API de Dialogflow, ya que las integraciones se encargan de esto por ti. Estas integraciones pueden proporcionar un agente de texto que puedes incorporar a tu sitio web, conectarte con otras plataformas de mensajería o brindar una interfaz de telefonía.

API de Dialogflow

Si ninguna de las integraciones listas para usar es adecuada o si deseas personalizar la interfaz para tu sistema, puedes usar la API de Dialogflow directamente. Con este enfoque, deberás implementar la interfaz de usuario para tu agente o usar una interfaz de usuario existente.

Webhooks

A menos que tu agente se pueda definir por completo con datos estáticos, debes usar webhooks para conectar tu servicio y proporcionar un agente que pueda manejar situaciones dinámicas. Esto se aplica si usas integraciones o la API de Dialogflow.

Recursos para agentes

Los recursos de agente de Dialogflow se pueden usar de muchas maneras para lograr un resultado deseado. En esta sección, se proporcionan consejos a fin de elegir los recursos adecuados para las situaciones correctas.

Flujos y páginas

Los flujos y las páginas le proporcionan una estructura al agente. Puedes pensar en las páginas como nodos en una máquina de estados, y los flujos como grupos de páginas relacionadas. Puedes controlar las transiciones entre nodos con controladores de estado, a los que se llama cuando se detecta una coincidencia con un intent, se cumple una condición o se invoca un evento.

Un agente simple puede funcionar bien con un solo flujo, pero los agentes complejos casi siempre están mejor diseñados con varios flujos. Cada flujo debe representar un tema de alto nivel para tu agente, en el que cada página asociada con el flujo ayuda a manejar el tema. Además, cada flujo puede tener su propia configuración y puede ser propiedad de un subconjunto de miembros del equipo, lo que ayuda a dividir el trabajo cuando se diseñan agentes grandes.

Cuando diseñas un agente grande y complejo, debes considerar los límites de"flujos por agente" y "páginas por flujo". Estos límites ayudan a mantener el rendimiento de tu agente.

Si el diseño de tu agente tiene demasiados flujos por agente, combina los temas relacionados en un solo flujo. Por ejemplo, puedes combinar los siguientes temas en un solo flujo "Obtener saldo":

  • Cómo consultar el saldo
  • Obtener saldo de ahorro
  • Obtener saldo hipotecario
  • Obtener saldo de crédito

Si el diseño de tu agente tiene demasiadas páginas por flujo, combina las páginas relacionadas y usa muchas rutas por página.

Si aún tienes dificultades con los límites de flujo y página, es posible que se deba a que tienes demasiada lógica empresarial integrada en el agente. Considera trasladar esta lógica a webhooks.

A continuación, se muestra el nivel de detalle de control de conversación de los recursos del agente en orden creciente:

  1. Agentes (un agente controla todas las conversaciones)
  2. Flujos (un flujo maneja uno o más temas de conversación relacionados)
  3. Páginas (una página controla uno o más turnos de conversación relacionados)
  4. Rutas (una ruta controla una verificación de estado o intent del usuario)

Comparación entre los parámetros de intent y los parámetros de formulario

La forma principal en que tu sistema obtiene datos estructurados del usuario final es a través de los parámetros. Puedes usar parámetros para intents (parámetros de intents) o páginas (parámetros de formulario).

El objetivo principal de algunas páginas es recopilar información específica del usuario final. Por ejemplo, una página puede diseñarse para recopilar la información de contacto del usuario final. En este caso, siempre debes usar parámetros de formulario para recopilar esta información.

En algunos casos, es posible que desees obtener información del usuario final mientras realizas la transición de una página a otra. Por ejemplo, si el usuario final solicita un producto en particular al comienzo de la conversación, debes capturar el producto deseado mientras haces la transición a la página de pedidos adecuada. En este caso, usa los parámetros de intent como parte de las rutas de intents.

También hay situaciones en las que lo ideal es usar parámetros de intent y parámetros de formulario. Por ejemplo, si el usuario final solicita una camisa pequeña al comienzo de la conversación, debes capturar el parámetro de tamaño deseado (pequeño) mientras haces la transición a la página de pedido de camisetas. La página de pedido de camisetas puede solicitar información adicional, como el color deseado. La página de pedido de camisetas debe tener parámetros de forma para el tamaño y el color. En este ejemplo, el parámetro de tamaño ya se proporcionó y se propaga, por lo que el agente solo solicitará el color. Sin embargo, otras conversaciones pueden seguir una ruta diferente, en la que el usuario final no proporcionó la talla deseada cuando se activa la página de pedidos de camisetas. Cuando defines este parámetro de ambas maneras, tu agente es más flexible con la forma en que extrae la información.

Rutas y grupos de rutas

Si deseas pasar a otra página, poner en cola un mensaje de respuesta o llamar a un webhook cuando se detecte una coincidencia con un intent o se cumpla una condición, usa rutas.

Si encuentras que usas el mismo conjunto de rutas en varias páginas, usa grupos de rutas. Esto evitará la duplicación innecesaria en el diseño del agente.

Reutilización de intents

Si tienes que definir varios intents con frases de entrenamiento similares, considera volver a usar intents en varias páginas. Lo ideal sería que definas algunos intents de uso general que se usan en muchas páginas y otros específicos que solo se usan en una única página. Esto evitará la duplicación innecesaria en el diseño del agente.

Por ejemplo, los intents de confirmación suelen definirse mejor como intents reutilizables. Un intent confirmation.yes podría tener frases de entrenamiento como las siguientes:

  • así es
  • aceptar
  • sí, tengo
  • claro que sí
  • en absoluto
  • sí, por favor

Un intent confirmation.no podría tener frases de entrenamiento como las siguientes:

  • sin
  • nah
  • no
  • para nada
  • no es para mí
  • para nada
  • no, gracias

Estos intents de confirmación reutilizables se pueden usar en muchas situaciones para tu agente.

En algunos casos, también deberías considerar crear intents de confirmación especializados. Por ejemplo, cuando confirmas un pedido, es posible que desees tener un intent order.confirmation.yes especializado con frases de entrenamiento como las siguientes:

  • el pedido me parece bien
  • Acepto este pedido

Un intent order.confirmation.no especializado con frases de entrenamiento como las siguientes:

  • No quiero este pedido
  • No acepto este pedido

Cuando la página de confirmación del pedido está activa, las rutas de intents para los cuatro intents deben estar dentro del alcance. Esto garantiza que cualquier confirmación genérica o específica del usuario final se maneje de forma adecuada.

Intent negativo predeterminado

Debes propagar el intent negativo predeterminado con frases que tus usuarios finales puedan decir, pero que no coincidan con ningún intent en tu agente.

Entrega

Existen muchas opciones para usar las entregas a fin de responder al usuario final. Durante el turno de una conversación, el agente puede agregar varios mensajes a la cola de respuestas, y la cola concatenada se envía al usuario final al final del turno de la conversación. En esta sección, se describe cada opción para crear los mensajes individuales.

  • Entrega por entrada de página: Se llama a esta entrega cuando la página se activa inicialmente. Resulta útil cuando quieres un mensaje que describa el propósito de la página y solo debe decirse una vez mientras la página está activa. Por ejemplo:
    • ¿Qué quieres saber sobre tu cuenta corriente?
    • ¿Qué tipo de producto te gustaría comprar?
    • Necesito recopilar información sobre la camisa que quieres pedir.
  • Rutas: Se llama a esta entrega cuando se llama a una ruta de intent o a una de condición con entrega. Esto es útil cuando quieres un mensaje que responda al usuario final acerca de la coincidencia con el intent, la condición de cumplimiento (que puede ser una condición de finalización de formulario) o la transición. Por ejemplo:
    • Sí, tu plan internacional incluye Japón. (coincidencia de intención)
    • ¿Seguro que quieres comprar 300 camisetas? (condición de comparación cumplida)
    • De acuerdo, tu cita es mañana por la mañana a las 7 a.m. (completado de formularios)
    • Bien, ahora hablemos de los cerdos hormigueros. (transición)
  • Controladores de eventos: Se llama a esta entrega cuando se invoca un evento. Resulta útil cuando se necesita un mensaje que responda al evento. Por ejemplo:
    • El valor de las acciones que estás considerando para comprar acaba de aumentar un 10%. (evento personalizado)
    • ¿Podrías reformular la frase? (evento sin coincidencias)
  • Mensajes iniciales para formularios: Se llama a esta entrega cuando el agente completa formularios. Estos mensajes deben hacerle una pregunta específica al usuario final. Cada parámetro de formulario tiene su propia entrega de mensaje inicial. Por ejemplo:
    • ¿De qué talla de camisa quieres?
    • ¿Qué color de camisa te gustaría?
  • Controladores automáticos para formularios: Se llama a esta entrega cuando el agente completa formularios y no comprende la selección del usuario final para el parámetro actual. Esta entrega solo es necesaria si quieres que un mensaje que se vuelve a mostrar sea diferente del mensaje inicial. Si no existen controladores de solicitudes nuevas, el agente solo usará la solicitud inicial como mensaje. Por ejemplo:
    • No entiendo. ¿Puedes proporcionar un color válido para la camisa?

Asignación de nombres

En esta sección, se proporcionan consejos para asignar nombres a los recursos de agentes.

Nombres de intents

Si tu agente tiene muchos intents, debes considerar un esquema de nombres que te ayude a mantenerlos organizados. Es común segmentar los nombres de los intents con puntuación, en la que la especificidad aumenta de izquierda a derecha. Además, un nombre de intent debe reflejar la intención del usuario final para un turno de conversación.

Existen muchos esquemas de nombres adecuados, pero este es un ejemplo:

  • phone-service.order.cancel
  • phone-service.order.create
  • phone-service.order.change
  • tv-service.order.cancel
  • tv-service.order.create
  • tv-service.order.change
  • account.balance.get
  • account.balance.pay
  • account.address.get
  • account.address.update

Transiciones

Las transiciones definidas en controladores de estado cambian la página activa para controlar la conversación. En esta sección, se proporcionan consejos para organizar las transiciones de tus agentes.

Transiciones complementarias

Cuando definas una ruta que active una transición, ten en cuenta que puede haber una ruta complementaria o inversa.

Por ejemplo:

  • Si tienes una ruta de intent para confirmation.yes, considera definir otra ruta para confirmation.no.
  • Si defines una ruta de condición con un operador booleano =, considera definir otra ruta que use !=.

Cómo administrar las entradas del usuario final

En esta sección, se proporcionan lineamientos sobre los intents y las frases de entrenamiento, de modo que tu agente pueda controlar y procesar de manera óptima la entrada del usuario final.

Define al menos 20 frases de entrenamiento

Debes tener al menos 20 frases de entrenamiento para cada intent. De lo contrario, es posible que el modelo de CLN no tenga suficiente información para coincidir de forma adecuada con tu intent. Estas pautas son mínimas. Lo ideal sería que definas más, en especial para los intents principales de agentes grandes, en los que se recomienda usar aproximadamente 50.

Ten en cuenta el sesgo de intención

Cuando uno o más intents tienen muchas más frases de entrenamiento que otros intents, se produce un sesgo del modelo de CLN en favor de los intents más grandes debido a los datos desequilibrados. Este sesgo de intent puede ocurrir cuando la cantidad de frases de entrenamiento difiere en un orden de magnitud o más.

En algunos casos, este es el comportamiento deseado, ya que podrías definir algunos intents que deberían coincidir con más frecuencia que otros, ya que corresponden a las entradas del usuario final que se observan con mayor frecuencia en el tráfico en vivo.

En otros casos, este comportamiento puede ser no deseado, ya que no es conveniente establecer un sesgo a favor de estos intents más grandes. Si este es el caso, reduce la cantidad de frases de entrenamiento para estos intents más grandes de modo que tengan el mismo orden de magnitud que otros intents. Por ejemplo:

Frases de entrenamiento del intent A Frases de entrenamiento del intent B Sesgo para la intención B
20 50 No.
20 200 Con limitaciones
20 2000

Uso de entidades y cantidad de frases de entrenamiento

Para todos los tipos de entidades que se usan en un intent, sucede lo siguiente:

  • Anota todos los ejemplos de los tipos de entidades.
  • Para cada uno de los tipos de entidades, proporciona al menos cinco frases de entrenamiento que contengan ejemplos anotados.
  • Proporciona al menos tres veces más frases de entrenamiento que tipos de entidades. Por ejemplo, si usas 10 tipos de entidades diferentes para las anotaciones en un intent, debes tener al menos 30 frases de entrenamiento.

Las frases de entrenamiento deben ser naturales.

Las frases de entrenamiento deben ser conversacionales y naturales; deben coincidir con lo que la gente Siempre que sea posible, usa entradas del usuario final que hayan ocurrido en la producción como datos de entrenamiento y presta especial atención a las que son más comunes.

Variedad de frases de entrenamiento necesaria

Incluye variaciones de preguntas, comandos, verbos y sinónimos para sustantivos comunes a fin de garantizar que tus frases cubran un amplio espectro de solicitudes posibles.

Es mejor incluir algunas frases más cortas como "pagar mi factura", así como frases y oraciones más largas como "acabo de recibir algo por correo que dice que necesito pagar el saldo de mi estado de cuenta". No hay una proporción recomendada de frases cortas a largas, pero debes basarte en las entradas reales del usuario final que se envían al agente en producción.

La definición de frases de entrenamiento que varían en longitud, frase y estructura de la oración es importante para garantizar un buen entrenamiento para tu agente. No es necesario agregar variedad por el bien de la variedad, pero es necesario proporcionar suficiente variedad para que el modelo de CLN pueda detectar correctamente el intent del usuario final a partir de un rango amplio de entradas del usuario final. Si no tienes suficiente variedad, existe el riesgo de sobreajuste. En otras palabras, existe el riesgo de que el modelo esté demasiado vinculado a los ejemplos particulares que proporcionas y no generalice lo suficiente a otros ejemplos.

Variedad de mayúsculas

En casos excepcionales, es posible que debas agregar frases de entrenamiento que solo varíen en el uso de mayúsculas. Esto suele aplicarse a situaciones en las que esperas que los usuarios finales proporcionen entradas de texto en mayúsculas.

Los enfoques alternativos podrían ser:

Variedad de frases de entrenamiento innecesaria

Evita las variaciones triviales en las frases de entrenamiento, ya que proporcionan información duplicada al modelo de CLN. Por ejemplo, no incluyas variantes que solo se diferencian en los siguientes aspectos:

  • Uso de mayúsculas (excepto casos poco frecuentes): Por ejemplo, "Pedir una entrada" y "Pedir una entrada".
  • Palabras adicionales: Por ejemplo, “de acuerdo, pedir una entrada” y “pedir una entrada”.
  • Puntuación: Por ejemplo, "¿Puedes ayudar?" y "¿Puedes ayudar, por favor?".

Coherencia en las anotaciones

La parte de la frase de entrenamiento seleccionada para una anotación debe incluir todo, y no más que, el texto que es necesario para que coincida con una entidad. Además, asegúrate de que se anoten las partes similares de las frases de entrenamiento para todo el intent.

Por ejemplo, en la siguiente tabla, se muestran las formas buenas y malas de anotar con la entidad del sistema @sys.date:

Buena Mala
Salida: 7 de septiembre Salida del 7 de septiembre
Saldrás el 4 de julio Saldrá el 4 de julio

Usa anotaciones con importancia semántica para las entidades del sistema

El significado semántico de una parte de la frase de entrenamiento seleccionada para una anotación puede verse afectado por el resto del texto de una frase de entrenamiento. Por ejemplo:

Frase de entrenamiento anotada Significado semántico del texto anotado
Tengo 7 años La edad de la persona
El contrato es válido por 7 años. Un intervalo de tiempo

Los modelos de aprendizaje automático de Dialogflow tienen en cuenta el significado semántico cuando hacen coincidir entidades del sistema. El significado semántico de la parte de la frase de entrenamiento debe coincidir con el significado semántico previsto de la entidad del sistema.

Por ejemplo, no uses la entidad del sistema @sys.duration para la anotación del primer ejemplo de "7 años" anterior. El significado semántico de "7 años" no coincide con una duración de tiempo simple. En su lugar, debes seleccionar "7" para la anotación y usar la entidad del sistema @sys.number.

Define intents para controlar respuestas que no cumplen con los formularios completados

Se recomienda definir intents para controlar las respuestas a los formularios que no cumplen con las políticas. Por ejemplo, tu agente puede preguntar “¿cuáles son tus fechas de viaje?”, seguido de la respuesta del usuario final: “aún no lo sé”. Esta respuesta no satisface el mensaje del parámetro de formulario, pero si tu agente tiene una ruta de intents dentro del alcance que puede coincidir con esta respuesta, el agente puede manejar bien la situación.

Evita @sys.any

Evita usar el tipo de entidad del sistema @sys.any. Solo debe usarse si agotaste por completo todos los medios, incluida la compilación de entidades personalizadas. Este tipo de entidad es muy amplio y puede causar un comportamiento no deseado.

Si usas este tipo de entidad, evita anotar varias partes de una sola frase de entrenamiento con este tipo de entidad, ya que esto crea una ambigüedad y el comportamiento del agente no estará definido.

Es menos peligroso usar @sys.any con parámetros de formulario, ya que el agente espera información específica cuando solicita parámetros de formulario.

Las anotaciones deben incluir una variedad de valores de entidad

Cuando definas frases de entrenamiento anotadas, debes usar una variedad de ejemplos de valores de entidades en las frases. No debes usar de manera coherente el mismo ejemplo de entidad para las anotaciones. En el siguiente ejemplo, se muestran anotaciones buenas y malas para un tipo de entidad de producto:

Buena Mala
Quiero comprar una camisa. Quiero comprar una camisa.
Pedir un sombrero nuevo Pedir una camisa nueva
Agregar un reloj a mi carrito Agregar una camisa a mi carrito

Las entidades personalizadas deben incluir variedad

Las entidades personalizadas deberían abarcar una amplia gama de ejemplos. El modelo CLN proporcionará variedad de formas gramaticales, pero debes incluir todos los elementos posibles.

Evita entidades que coincidan de forma agresiva

No definas entidades que coincidan con casi cualquier cosa. Esto degrada el rendimiento y la calidad del AA. Casi todo en cada frase de entrenamiento se evaluará como una posible coincidencia.

Las entidades de mapas y listas deben enfocarse en valores distintos

Los tipos de entidades de asignación y lista deben tener un alcance limitado que capture valores distintos de un tipo de información. Conserva tus entidades precisas, breves y simples.

Si los valores de tu entidad son complicados, puede deberse a que las frases de entrenamiento de intents se adaptan mejor a tu situación. Por ejemplo, considera las entradas del usuario final de la siguiente manera:

  • "¿Cómo puedo realizar una llamada internacional con el Plan A?"
  • "Uso de roaming de datos internacional con el Plan B".

No crees tipos de entidades para las acciones y los planes, como los siguientes:

Tipo de entidad de acciones Tipo de entidad de planes
"¿Cómo puedo realizar una llamada internacional?" "Plan A"
"Uso de roaming de datos internacional" "Plan B"

En cambio, debes usar frases de entrenamiento y coincidencia de intents para capturar las acciones y las entidades a fin de capturar los planes.

Usa entidades de expresión regular para capturar identificadores que no sean palabras

Cuando captures entradas del usuario final que incluyan identificadores que no sean de palabra, debes usar entidades de expresión regular. Por ejemplo, para capturar IDs de productos, como "AA-256" o "AC-436", usa una entidad regexp como "[A-Z]{2}-\d{3}".

Evita anidar entidades compuestas

No utilices más de un nivel de anidación en las entidades compuestas. Cada nivel de anidación degrada significativamente la calidad.

Cómo evitar intents similares

Cada intent debería capturar la intención del usuario final. Si defines diferentes intents con frases de entrenamiento similares, la coincidencia puede no ser confiable, ya que el modelo de CLN no puede determinar con suficiente confianza a qué intent coincidir.

Si dos frases de entrenamiento representan la misma intención, deben pertenecer al mismo intent. Por ejemplo, "cambiar la fecha de vencimiento de la factura actual" y "más tiempo para pagar" deberían pertenecer al mismo intent, ya que ambos solicitan un cambio en la fecha límite. Sin embargo, "¿Puedo realizar una llamada internacional con el Plan A?" y "¿Puedo usar el roaming de datos internacional con el Plan A?" podrían pertenecer a diferentes intents, ya que el usuario final quiere algo diferente en cada caso.

Evita tipos de entidades similares

Debes evitar definir varios tipos de entidades que tengan entradas de entidad similares, ya que esto puede generar ambigüedad para el modelo de CLN.

Usa eventos sin coincidencias en producción para mejorar tus intents

Cuando ejecutas el agente en producción, es inevitable que algunas entradas del usuario final generen eventos sin coincidencias. Puedes usar estas oportunidades para mejorar a tu agente de una de las siguientes tres maneras:

  • Agrega la entrada del usuario final como una frase de entrenamiento al intent deseado. Sin embargo, esta no siempre es la mejor opción. Si lo haces muchas veces para el intent, podría generar un sesgo de intención.
  • Limpia las frases de entrenamiento del intent deseado, de modo que todas reflejen con exactitud la intención. En algunos casos, los intents con frases de entrenamiento divergentes pueden impedir la coincidencia con el intent.
  • Si los intents que no deben coincidir con la entrada del usuario final tienen frases de entrenamiento que podrían coincidir con la entrada del usuario final, borra estas frases de entrenamiento.

Evita los caracteres especiales

Los caracteres especiales en las frases de entrenamiento ({, _, #, [, etc.) se ignoran. Una excepción a esto son los emoticones, en los que funcionan como se espera.

Evita las palabras de relleno

Las palabras de relleno son palabras que puedes ignorar y aun así poder entender el texto. Por ejemplo:

  • por favor
  • ¿Puedes?
  • Mmm...
  • qué te parece

No es innecesario, pero inofensivo, usar palabras de relleno en las frases de entrenamiento, ya que el modelo de CLN las ignora. Sin embargo, no debes definir frases de entrenamiento que varíen solo según las palabras de relleno.

Nunca definas entidades que estén compuestas por palabras de relleno.

Experimenta con la configuración del AA

La configuración del AA se puede usar para ajustar la forma en que se procesa la entrada del usuario final. En la mayoría de los casos, la configuración predeterminada funciona bien. Sin embargo, es posible que desees ajustar la configuración para mejorar el rendimiento del agente.

Cómo responder al usuario final

En esta sección, se proporcionan lineamientos para usar entregas a fin de responder al usuario final.

Da la bienvenida al usuario final

Un agente recién creado tiene una ruta de intent creada automáticamente para el intent de bienvenida. Debes editar esta ruta para incluir un mensaje de entrega que dé la bienvenida al usuario final. Este mensaje debe describir al agente y darle al usuario final una idea de lo que es capaz de hacer.

Confirma la información del usuario final

A menudo, es mejor repetir la información proporcionada por el usuario final en las respuestas. Esto le avisa al usuario final que el agente está entendiendo su solicitud.

Cuando un intent coincide y se produce una transición, informa al usuario final que la conversación está progresando en función de su solicitud. Por ejemplo:

Diálogos Descripción
Usuario final: Tengo preguntas sobre mi cuenta corriente.
Agente: Bien, ¿qué quieres saber de tu cuenta corriente?
La entrada del usuario final generó una coincidencia de intents y se siguió una ruta que incluía un mensaje de entrega y una transición a una página que controla las preguntas de verificación de la cuenta. Ten en cuenta que el agente confirma que el usuario final quiere saber sobre su cuenta corriente.

Cuando completes el formulario, repite los datos que proporcionó el usuario final. Por ejemplo:

Diálogos Descripción
Usuario final: Mañana.
Agente: Bien, tu corte de cabello está programado para mañana a las 7 p.m. ¿Puedo ayudarte con algo más?
El usuario final proporcionó el parámetro del formulario de fecha, que era el último de la página activa. El agente confirmó la fecha y hora del corte de cabello programado.

Guía la conversación

El agente siempre debe guiar la conversación con el usuario final. Esto se logra fácilmente terminando cada respuesta con una pregunta como la siguiente:

  • ¿Puedo ayudarte con algo más?
  • ¿Qué quieres saber sobre los beagles?
  • ¿Quieres cancelar o enviar ese pedido?
  • ¿En qué puedo ayudarte hoy?
  • ¿Viajas solo o con alguien?

Cuando definas estas preguntas, ten cuidado de no hacer varias preguntas como las siguientes:

  • ¿Sigues aquí? ¿Sobre qué servicio envías tu consulta?
  • ¿Aún quieres este pedido? ¿Quieres agregar algo?

El usuario final puede responder solo a una de las preguntas y es posible que tu agente no maneje correctamente esa situación.

Maneja errores y entradas inesperadas del usuario final

En esta sección, se proporcionan consejos para manejar errores y entradas inesperadas del usuario final.

Crea controladores de eventos para eventos integrados

Debes crear controladores de eventos para los eventos integrados según corresponda. El manejo de estos eventos es similar a capturar excepciones en la programación de software. Según la situación, te recomendamos que controles los eventos con controladores de eventos específicos de parámetros, controladores de eventos específicos de la página o controladores de eventos específicos de flujo.

Maneja errores de webhook

Cuando el servicio de webhook falla, es importante que tu agente pueda manejarla con facilidad. A fin de lograrlo, define controladores de eventos para los eventos integrados específicos de webhook. Este es un enfoque recomendado para manejar los errores de webhook:

  • No proporciones un destino de transición desde el controlador de estado que active la llamada de webhook. De lo contrario, no se invocará el controlador de eventos de error de webhook. En su lugar, establece el objetivo de transición en la respuesta de webhook desde el servicio de webhook.
  • Elige una página en la que un contador de errores se pueda inicializar en cero. Esta página debe estar activa antes que la que activa una llamada de webhook. La entrega de entradas de esta página debe inicializar el contador de errores en 0 mediante un ajuste predeterminado de parámetro de entrega. Por ejemplo:

    Parámetro Valor
    webhook-error-count 0
  • Crea una página de error de webhook que controle los eventos de error de webhook:

    • La entrega de entrada debe confirmar la falla para el usuario final y debe aumentar un parámetro de sesión de contador de errores mediante un ajuste predeterminado de parámetro de entrega. Por ejemplo:

      Parámetro Valor
      webhook-error-count $sys.func.ADD($session.params.webhook-error-count, 1)
    • Define una ruta de condición que tenga una condición que indique que el recuento de errores es menor que el máximo permitido. (por ejemplo, $session.params.webhook-error-count <= 3). Esta ruta debe tener una entrega que notifique al usuario final que el agente volverá a intentarlo. Esta ruta debe tener un destino de transición establecido en PREVIOUS_PAGE o cualquier página que pueda realizar otro intento para llamar al webhook.

    • Define una ruta de condición que tenga una condición que indique que el recuento de errores es mayor que el máximo permitido (por ejemplo, $session.params.webhook-error-count > 3). Esta ruta debe tener una entrega que notifique al usuario final que el agente ya no volverá a intentarlo. Esta ruta debe tener un destino de transición configurado en una página que no active reintentos de webhook.

  • El controlador de eventos de webhook debe tener un destino de transición que transicione a la página de error del webhook.

Herramientas

En esta sección, se proporcionan consejos sobre el uso de herramientas para mejorar el diseño del agente.

Usa la herramienta de validación

Siempre debes usar la herramienta de validación para verificar tu agente. Esta herramienta encuentra algunos de los problemas descritos en esta guía.

Usa la función de casos de prueba

Siempre debes definir casos de prueba para tu agente. Estos casos de prueba pueden ayudar a prevenir regresiones mientras tu agente evoluciona para manejar más situaciones.