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 debes consultar la guía de diseño de agentes de voz específicamente para diseñar agentes de voz y la guía de prácticas recomendadas para usar el servicio de agentes conversacionales (Dialogflow CX).

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 hayas establecido la estructura básica, itera las rutas de conversación para asegurarte de que incluyas 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 guiado por pruebas.

Agentes preconstruidos

Los agentes conversacionales (Dialogflow CX) ofrecen plantillas de agentes para ayudarte a comenzar. Los agentes compilados previamente abordan casos de uso 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 entrega específicas de tu empresa para compilar rápidamente un agente funcional.

Integraciones y conexión de tus servicios

Existen varias formas de realizar la integración con agentes de agentes conversacionales (Dialogflow CX). En esta sección, se proporcionan prácticas recomendadas para elegir cómo realizar la integración.

Integraciones

Las integraciones de agentes conversacionales (Dialogflow CX) proporcionan una interfaz de usuario lista para usar para tu agente. Si usas una integración, no es necesario que llames directamente a la API de agentes conversacionales (Dialogflow CX), ya que las integraciones se encargan de esto por ti. Estas integraciones pueden proporcionar un agente de texto que puedes incorporar en tu sitio web, conectar con otras plataformas de mensajería o proporcionar una interfaz de telefonía.

API de agentes conversacionales (Dialogflow CX)

Si ninguna de las integraciones listas para usar es adecuada o si deseas personalizar la interfaz de tu sistema, puedes usar la API de agentes conversacionales (Dialogflow CX) 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 controlar situaciones dinámicas. Esto se aplica si usas integraciones o la API de agentes conversacionales (Dialogflow CX).

Recursos para agentes

Los recursos de los agentes conversacionales (Dialogflow CX) se pueden usar de muchas maneras para lograr el resultado deseado. En esta sección, se proporcionan sugerencias para elegir los recursos adecuados para las situaciones adecuadas.

Flujos y páginas

Los flujos y las páginas proporcionan estructura a tu agente. Puedes pensar en las páginas como nodos en una máquina de estados y en los flujos como grupos de páginas relacionadas. Controlas las transiciones entre nodos con controladores de estado, a los que se llama cuando se hace coincidir 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 controlar 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ñes un agente grande y complejo, debes tener en cuenta 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, podrías combinar los siguientes temas en un solo flujo "Obtener saldo":

  • Cómo obtener el saldo de la cuenta corriente
  • Cómo obtener el saldo de ahorros
  • Cómo obtener el saldo de la hipoteca
  • Cómo obtener el 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 de páginas, es posible que tengas demasiada lógica empresarial integrada en el agente. Considera mover esta lógica a los webhooks.

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

  1. Agentes (un agente controla todas las conversaciones)
  2. Flujos (un flujo controla 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 un intent del usuario o una verificación de condiciones)

Parámetros de intent en comparación con parámetros de formulario

La forma principal en que tu sistema obtiene datos estructurados del usuario final es con parámetros. Puedes usar parámetros para intents (parámetros de intent) 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 capturar 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 realizas la transición a la página de pedidos correspondiente. En este caso, usa los parámetros de intent como parte de las rutas de intent.

También hay situaciones en las que es ideal 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 realizas la transición a la página de pedido de camisas. Es posible que la página de pedido de camisas solicite información adicional, como el color deseado. La página de pedidos de camisas debe tener parámetros de formulario 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ó el tamaño deseado cuando la página de pedidos de camisas se activa. Si defines este parámetro de ambas maneras, tu agente será más flexible en la forma en que extrae la información.

Rutas y grupos de rutas

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

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

Reutilización de intents

Si defines varios intents con frases de entrenamiento similares, considera reutilizar los intents en varias páginas. Idealmente, deberías definir algunos intents de uso general que se usen en muchas páginas y algunos intents específicos que solo se usen en una sola página. Esto evitará la duplicación innecesaria en el diseño de tu 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:

  • aceptar
  • por supuesto
  • por supuesto
  • sí, por favor

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

  • no
  • nah
  • no
  • de ninguna manera
  • no es para mí
  • por supuesto que no
  • 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 confirmes un pedido, te recomendamos que tengas un intent order.confirmation.yes especializado con frases de entrenamiento como las siguientes:

  • el pedido me parece bien
  • Acepto este pedido

Además, un intent order.confirmation.no especializado con frases de entrenamiento como las siguientes:

  • No quiero este pedido
  • No acepto este pedido

Cuando tu página de confirmación de 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 controle de forma adecuada.

Intent negativo predeterminado

Debes propagar el intent negativo predeterminado con frases que tus usuarios finales podrían decir, pero que no deben coincidir con ningún intent de tu agente.

Fulfillment

Existen muchas opciones para usar la entrega para responder al usuario final. Durante un turno de 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 conversación. En esta sección, se describe cada opción para crear los mensajes individuales.

  • Entrega de entrada de página: Se llama a esta entrega cuando la página se activa inicialmente. Es útil cuando quieres un mensaje que describa el propósito de la página y que solo se diga 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 ruta de condición con entrega. Esto es útil cuando deseas que un mensaje le responda al usuario final sobre la coincidencia de intents, la condición satisfecha (que puede ser una condición de finalización del llenado de formularios) o la transición. Por ejemplo:
    • Sí, tu plan internacional incluye Japón. (coincidencia de intents)
    • ¿Estás seguro de que quieres comprar 300 camisas? (se cumple la condición de comparación)
    • De acuerdo, tu cita es mañana a las 7 a.m. (completación del formulario)
    • Bien, ahora hablemos de los osos hormigueros. (transición)
  • Controladores de eventos: Se llama a esta entrega cuando se invoca un evento. Es útil cuando deseas un mensaje que responda al evento. Por ejemplo:
    • Las acciones que estás considerando comprar acaban de aumentar su valor un 10%. (evento personalizado)
    • ¿Puedes reformular la pregunta? (evento sin coincidencias)
  • Mensajes iniciales para formularios: Se llama a esta entrega cuando el agente completa un formulario. Estos mensajes deben hacerle una pregunta específica al usuario final. Cada parámetro del formulario tiene su propia entrega de instrucciones inicial. Por ejemplo:
    • ¿Qué talla de camisa quieres?
    • ¿Qué color de camisa quieres?
  • Controladores de solicitud nueva para formularios: Se llama a esta entrega cuando el agente realiza el proceso de completar un formulario y no comprende la selección del usuario final para el parámetro actual. Esta entrega solo es necesaria si deseas que un mensaje de solicitud nueva sea diferente del mensaje de solicitud inicial. Si no existen controladores de solicitudes nuevas, el agente solo usará la solicitud inicial como mensaje de solicitud nueva. Por ejemplo:
    • No entiendo. ¿Puedes proporcionar un color válido para la camisa?

Nombre

En esta sección, se proporcionan sugerencias para nombrar 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 los controladores de estado proporcionan control sobre la conversación cambiando la página activa. 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 intents 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 controlar las entradas del usuario final

En esta sección, se proporcionan lineamientos para los intents y las frases de entrenamiento, para que tu agente pueda controlar y procesar de manera óptima las entradas 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 NLU no tenga suficiente información para coincidir de forma adecuada con tu intención. Esta es una guía mínima. Lo ideal es que definas más, especialmente para los intents principales de agentes grandes, en los que se recomienda alrededor de 50.

Ten en cuenta el sesgo de intent

Cuando uno o más intents tienen muchas más frases de entrenamiento que otros, el modelo de NLU se sesga a favor de los intents más grandes debido a los datos desequilibrados. Este sesgo de intención 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 puedes definir algunos intents que deberían coincidir con más frecuencia que otros, ya que corresponden a entradas del usuario final que se observan con mayor frecuencia en el tráfico en vivo.

En otros casos, este comportamiento puede no ser deseable, ya que no quieres que haya un sesgo a favor de estos intents más grandes. Si este es el caso, reduce la cantidad de frases de entrenamiento para que estos intents más grandes sean del mismo orden de magnitud que otros intents. Por ejemplo:

Frases de entrenamiento del intent A Frases de entrenamiento del intent B Sesgo para el intent B
20 50 No
20 200 Con limitaciones
20 2000

Cantidad de uso de entidades y frases de entrenamiento

Para todos los tipos de entidades que se usan en un intent:

  • Anota cada ejemplo de los tipos de entidades.
  • Para cada uno de los tipos de entidades, proporciona al menos cinco frases de entrenamiento que contengan ejemplos con anotaciones.
  • 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 coloquiales y naturales, y deben coincidir con lo que las personas realmente dicen. Siempre que sea posible, usa las entradas del usuario final que se produjeron en producción como datos de entrenamiento y presta especial atención a las más comunes.

Variación necesaria de las frases de entrenamiento

Incluye variaciones de preguntas, comandos, verbos y sinónimos para sustantivos comunes a fin de garantizar que tus frases aborden una amplia gama 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 un correo en el que se indica que debo 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 a tu agente en producción.

Definir frases de entrenamiento que varíen en longitud, frases y estructura de oraciones es importante para garantizar un buen entrenamiento para tu agente. No es necesario agregar variedad por el simple hecho de hacerlo, pero es necesario proporcionar suficiente variedad para que el modelo de NLU pueda detectar correctamente la intención del usuario final a partir de una amplia variedad de entradas del usuario final. Si no tienes suficiente variedad, hay un peligro de sobreajuste. En otras palabras, existe el peligro de que el modelo esté demasiado vinculado a los ejemplos específicos que proporciones y no se generalice lo suficiente a otros ejemplos.

Variedad de mayúsculas

La sensibilidad a las mayúsculas varía según el modelo de NLU que use tu agente.

NLU estándar

El modelo de CLN estándar no distingue mayúsculas de minú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 los siguientes:

  • Disminuir el umbral de clasificación de AA
  • Convierte las entradas del usuario final a minúsculas antes de enviarlas a los agentes conversacionales (Dialogflow CX).

CLN avanzada

A diferencia del modelo de CLN estándar, el modelo de CLN avanzado distingue mayúsculas de minúsculas. Te recomendamos que pruebes y agregues los datos de entrenamiento relevantes en mayúsculas para aumentar los porcentajes de coincidencia de intents.

Variedad innecesaria de frases de entrenamiento

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 difieran en lo siguiente:

  • Mayúsculas: Si usas el modelo de CLN estándar, evita las frases duplicadas, como “pedir un boleto” y “pedir un boleto”, excepto en casos excepcionales. Sin embargo, el modelo de CLN avanzado distingue mayúsculas de minúsculas y requiere más frases de entrenamiento para aumentar las coincidencias de intents. Consulta la sección de variedad de mayúsculas para obtener más detalles.
  • Palabras de relleno: Por ejemplo, “de acuerdo, pide un boleto” y “pide un boleto”.
  • Signos de puntuación: Por ejemplo, "¿puedes ayudarme?" y "¿puedes ayudarme?".

Coherencia de 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 las partes similares de las frases de entrenamiento se anoten para todo el intent.

Por ejemplo, en la siguiente tabla, se muestran las formas correctas e incorrectas de hacer anotaciones con la entidad del sistema @sys.date:

Buena Malo
Salida el 7 de septiembre Salida del 7 de septiembre
Salida: 4 de julio Salida el 4 de julio

Usa anotaciones semánticamente significativas 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 con anotaciones Significado semántico del texto anotado
Tengo 7 años La edad de una persona
El contrato es válido por 7 años. Un intervalo de tiempo

Los modelos de aprendizaje automático de los agentes conversacionales (Dialogflow CX) consideran el significado semántico cuando coinciden con las 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 simple. En su lugar, debes seleccionar "7" para la anotación y usar la entidad del sistema @sys.number.

Define intents para controlar las respuestas de llenado de formularios que no cumplen con los requisitos

Considera definir intents para controlar las respuestas de relleno de formularios que no cumplen con las políticas. Por ejemplo, tu agente podría preguntar "¿Cuáles son tus fechas de viaje?", a lo que el usuario final responde "Aún no lo sé". Esta respuesta no satisface la instrucción del parámetro del formulario, pero si tu agente tiene una ruta de intent en el alcance que puede coincidir con esta respuesta, puede manejar bien la situación.

Evita @sys.any

Evita usar el tipo de entidad del sistema @sys.any. Solo debe usarse si agotaste todas las opciones, incluida la creació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 ambigüedades y el comportamiento del agente no se definirá.

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 con anotaciones, debes usar una variedad de ejemplos de valores de entidades en las frases. No debes usar siempre 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 Malo
Quiero comprar una camisa. Quiero comprar una camisa.
Pedir un nuevo sombrero Pedir una nueva camiseta
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 de CLN proporcionará variedad para las formas gramaticales, pero debes incluir todos los elementos posibles.

Evita las entidades que coinciden 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 será evaluado como una posible coincidencia.

Las entidades de mapa y lista deben enfocarse en valores distintos

Los tipos de entidades de mapa 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 intent se adaptan mejor a tu situación. Por ejemplo, considera las siguientes entradas del usuario final:

  • "¿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 hacer una llamada internacional?" “Plan A”
“Uso de roaming de datos internacional” “Plan B”

En su lugar, debes usar frases de entrenamiento y coincidencia de intent para capturar las acciones y 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 palabras, debes usar entidades de expresión regular. Por ejemplo, para capturar IDs de productos como "AA-256" o "AC-436", usa una entidad de regex 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.

Evita intents similares

Cada intent debe capturar la intención del usuario final. Si defines intents diferentes con frases de entrenamiento similares, es posible que la coincidencia no sea confiable, ya que el modelo de NLU no puede determinar con suficiente confianza qué intent debe 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" deben pertenecer al mismo intent, ya que ambos solicitan un cambio de fecha de vencimiento. Sin embargo, “¿Puedo hacer 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

Evita definir varios tipos de entidades que tengan entradas de entidades similares, ya que esto puede generar ambigüedades para el modelo de CLN.

Usa eventos de no coincidencia en producción para mejorar tus intents

Cuando ejecutas tu agente en producción, es inevitable que algunas entradas del usuario final generen eventos de no coincidencia. Puedes aprovechar estas oportunidades para mejorar 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, es posible que se genere un sesgo de intent.
  • Limpia las frases de entrenamiento del intent deseado para que todas reflejen con precisión la intención. En algunos casos, los intents con frases de entrenamiento divergentes pueden impedir que se establezca la coincidencia del 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

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

Evita las palabras de relleno

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

  • por favor
  • ¿Puedes?
  • hmmm
  • ¿qué tal

Es innecesario, pero no dañino, 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 por palabras de relleno.

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

Experimenta con la configuración del AA

La configuración de 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 la entrega para 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 le 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 que proporciona el usuario final en las respuestas. Esto le permite al usuario final saber que el agente comprende su solicitud.

Cuando se detecta una coincidencia de intent 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 sobre tu cuenta corriente?
La entrada del usuario final generó una coincidencia de intent y se siguió una ruta que incluía un mensaje de entrega y una transición a una página que controla las preguntas sobre cuentas corrientes. Ten en cuenta que el agente confirma que el usuario final quiere saber sobre su cuenta corriente.

Cuando se complete el proceso de llenado del formulario, repite los datos que proporcionó el usuario final. Por ejemplo:

Diálogos Descripción
Usuario final: Mañana
Agente: De acuerdo, 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 de formulario de fecha, que fue el último parámetro de formulario en la página activa. El agente confirmó la hora y la fecha de un corte de cabello programado.

Guía la conversación

El agente siempre debe guiar la conversación con el usuario final. Para hacerlo, termina 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 quieres obtener información?
  • ¿Aún quieres este pedido? ¿Quieres agregar algo?

Es posible que el usuario final responda solo una de las preguntas, y es posible que tu agente no maneje esa situación correctamente.

Control de errores y entradas de usuarios finales inesperadas

En esta sección, se proporcionan sugerencias para controlar 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. Controlar estos eventos es similar a detectar excepciones en la programación de software. Según la situación, es posible que desees controlar los eventos con controladores de eventos específicos del parámetro, controladores de eventos específicos de la página o controladores de eventos específicos del flujo.

Controla los errores de webhook

Cuando falla el servicio de webhook, es importante que el agente pueda controlar la falla de forma fluida. Para ello, debes definir controladores de eventos para los eventos integrados específicos del webhook. Este es un enfoque recomendado para controlar los errores de webhook:

  • No proporciones un destino de transición desde el controlador de estado que active la llamada al webhook. De lo contrario, no se invocará el controlador de eventos de error del webhook. En su lugar, establece el objetivo de transición en la respuesta del webhook desde el servicio de webhook.
  • Elige una página en la que se pueda inicializar un contador de errores en cero. Esta página debe estar activa antes de la página que activa una llamada a webhook. La entrega de entrada de esta página debe inicializar el contador de errores en 0 con un ajuste predeterminado de parámetros 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 incrementar un parámetro de sesión de contador de errores con un ajuste predeterminado de parámetros 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 en la que el recuento de errores sea 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 configurado en PREVIOUS_PAGE o en cualquier página que pueda volver a intentar llamar al webhook.

    • Define una ruta de condición que tenga una condición en la que el recuento de errores sea 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 objetivo de transición configurado en una página que no active los reintentos de webhook.

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

Herramientas

En esta sección, se proporcionan consejos para usar herramientas que mejoren el diseño de los agentes.

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 que se describen 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 evitar regresiones mientras tu agente evoluciona para controlar más situaciones.