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 Dialogflow CX.
Sugerencias generales
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.
A medida que evoluciona tu agente, considera usar la función de casos de prueba para el desarrollo basado en pruebas.
Agentes preconstruidos
Dialogflow CX ofrece plantillas de agentes para ayudarte a comenzar. Los agentes precompilados abarcan 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 cumplimiento específicos para tu empresa y compila rápidamente un agente funcional.
Integraciones y conexión de tus servicios
Existen varias formas de realizar integraciones con agentes de Dialogflow CX. En esta sección, se proporcionan prácticas recomendadas para elegir cómo realizar la integración.
Integraciones
Las integraciones de 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 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, conectarte con otras plataformas de mensajería o proporcionar una interfaz de telefonía.
API de 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 Dialogflow CX directamente. Con este enfoque, deberás implementar la interfaz de usuario de 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 Dialogflow CX.
Recursos para agentes
Los recursos del agente de Dialogflow CX se pueden usar de muchas maneras para lograr el resultado deseado. En esta sección, se brindan sugerencias para elegir los recursos adecuados para las situaciones correctas.
Flujos y páginas
Los flujos y las páginas proporcionan estructura a tu agente. Puedes considerar las páginas como nodos en una máquina de estados y los flujos como grupos de páginas relacionadas. Controlas las transiciones entre nodos con controladores de estado, que se llaman cuando se coincide con una intención, 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 se diseñan mejor con varios flujos. Cada flujo debe representar un tema de alto nivel para tu agente, en el que cada página asociada al flujo ayuda a controlar el tema. Además, cada flujo puede tener su propia configuración y un subconjunto de miembros del equipo puede ser propietario de él, 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 que tu agente mantenga un buen rendimiento.
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":
- Obtener el saldo de la cuenta corriente
- Obtener el saldo de ahorro
- Obtener el saldo de la hipoteca
- Obtén 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 se deba a que tienes 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 creciente:
- Agentes (un agente maneja todas las conversaciones)
- Flujos (un flujo controla uno o más temas de conversación relacionados)
- Páginas (una página controla uno o más turnos de conversación relacionados)
- Rutas (una ruta controla un intent del usuario o una verificación de condición)
Comparación entre los parámetros de intent y los parámetros de formulario
La principal forma en que tu sistema obtiene datos estructurados del usuario final es a través de parámetros. Puedes usar parámetros para intenciones (parámetros de intención) 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 se realiza 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, querrás capturar el producto deseado mientras realizas la transición a la página de pedido adecuada. En este caso, usa parámetros de intent como parte de las rutas de intent.
También hay situaciones en las que es ideal usar tanto parámetros de intent como parámetros de formulario. Por ejemplo, si el usuario final solicita una camisa pequeña al comienzo de la conversación, querrás capturar el parámetro de tamaño deseado (pequeño) mientras se realiza la transición a la página de pedidos de camisas. Es posible que en la página de pedidos de camisetas se solicite información adicional, como el color deseado. La página de pedido de la camiseta 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 propagó, por lo que el agente solo solicitará el color. Sin embargo, otras conversaciones pueden seguir un camino diferente, en el que el usuario final no proporcionó el tamaño deseado cuando se activa la página de pedido de la camiseta. Si defines este parámetro de ambas maneras, tu agente será más flexible a la hora de extraer 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 encuentre una coincidencia con un intent o se cumpla una condición, usa rutas.
Si usas el mismo conjunto de rutas en varias páginas, utiliza grupos de rutas. Esto evitará duplicaciones innecesarias 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. Lo ideal es que definas algunos intents de propósito general que se usen en muchas páginas y algunos intents específicos que solo se usen en una sola página. Esto evitará duplicaciones innecesarias 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:
- sí
- Sí
- yep
- aceptar
- Sí, acepto
- Claro que sí.
- 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.
Estas intenciones de confirmación reutilizables se pueden usar en muchas situaciones para tu agente.
En algunos casos, también debes considerar la posibilidad de crear intents de confirmación especializados.
Por ejemplo, cuando confirmes un pedido, es posible que desees tener un intent order.confirmation.yes especializado con frases de entrenamiento como las siguientes:
- El pedido se ve bien.
- Acepto este pedido
Y 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 del pedido esté activa, las rutas de intención para las cuatro intenciones deben estar dentro del alcance. Esto garantiza que cualquier confirmación genérica o específica del usuario final se maneje de manera adecuada.
Intent negativo predeterminado
Debes completar el intent negativo predeterminado con frases que podrían decir tus usuarios finales, pero que no deben coincidir con ningún intent de tu agente.
Entrega
Existen muchas opciones para usar la entrega y 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 solo debe decirse una vez mientras la página está activa.
Por ejemplo:
- ¿Qué quieres saber sobre tu cuenta de cheques?
- ¿Qué tipo de producto te gustaría comprar?
- Necesito recopilar información sobre la camiseta que quieres pedir.
- Rutas:
Se llama a esta entrega cuando se llama a una ruta de intents o a una ruta de condición con entrega.
Esto es útil cuando deseas un mensaje que responda al usuario final sobre la coincidencia del intent, la condición satisfecha (que puede ser una condición de finalización del llenado del formulario) o la transición.
Por ejemplo:
- Sí, tu plan internacional incluye Japón. (Coincidencia de intención)
- ¿Confirmas que quieres comprar 300 camisetas? (se cumple la condición de comparación)
- De acuerdo. Tu cita es mañana a las 7 a.m. (Completar el formulario)
- Bien, hablemos de los osos hormigueros ahora. (transición)
- Controladores de eventos: Se llama a este cumplimiento cuando se invoca un evento.
Es útil cuando quieres un mensaje que responda al evento.
Por ejemplo:
- La acción que estás considerando comprar acaba de aumentar su valor en un 10%. (evento personalizado)
- ¿Puedes reformularla? (evento de no coincidencia)
- Mensajes iniciales para formularios:
Esta entrega se llama cuando el agente completa un formulario.
Estos mensajes deben hacerle al usuario final una pregunta específica.
Cada parámetro del formulario tiene su propio cumplimiento de instrucción inicial.
Por ejemplo:
- ¿Qué talla de camisa quieres?
- ¿Qué color de camisa te gustaría?
- Controladores de solicitud nueva para formularios:
Esta entrega se llama cuando el agente está completando un formulario y no comprende la selección del usuario final para el parámetro actual.
Este cumplimiento solo es necesario si deseas que un mensaje de solicitud nueva sea diferente del mensaje de solicitud inicial.
Si no existen controladores de repregunta, el agente simplemente usará la instrucción inicial como mensaje de repregunta.
Por ejemplo:
- No entiendo. ¿Puedes proporcionar un color válido para la camisa?
Nombres
En esta sección, se brindan sugerencias para nombrar los recursos del agente.
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 sugerencias para organizar las transiciones de tu agente.
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 controlar la entrada del usuario final
En esta sección, se proporcionan lineamientos para 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
Deberías tener al menos 20 frases de entrenamiento para cada intent. De lo contrario, es posible que el modelo de PNL no tenga suficiente información para correlacionar tu intención de forma adecuada. Esta es una guía básica. Lo ideal es que definas más, en especial para las intenciones principales de los agentes grandes, en las que se recomienda definir alrededor de 50.
Ten en cuenta el sesgo de intención
Cuando uno o más intents tienen muchas más frases de entrenamiento que otros, esto hace que el modelo de PLN se incline 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 es posible que definas algunos intents que deberían coincidir con más frecuencia que otros porque corresponden a entradas del usuario final que se observan con más frecuencia en el tráfico real.
En otros casos, este comportamiento puede ser indeseable, ya que no quieres que haya una tendencia a favor de estas intenciones más grandes. Si este es el caso, reduce la cantidad de frases de entrenamiento para que estos intents más grandes 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 | Sí |
Uso de entidades y cantidad de frases de entrenamiento
Para todos los tipos de entidades que se usan en un intent, haz lo siguiente:
- 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 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, deberías tener al menos 30 frases de entrenamiento.
Las frases de entrenamiento deben ser naturales
Las frases de entrenamiento deben ser conversacionales y naturales, y deben coincidir con lo que la gente dice en realidad. Siempre que sea posible, usa las entradas de los usuarios finales que se hayan producido en producción como datos de entrenamiento, y presta especial atención a las que sean más comunes.
Variedad necesaria de 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 algo por correo que dice que debo pagar el saldo de mi estado de cuenta". No hay una proporción recomendada de frases cortas y largas, pero debes basar esto en las entradas reales del usuario final que se envían a tu agente en producción.
Es importante definir frases de entrenamiento que varíen en longitud, redacción y estructura de oraciones para garantizar un buen entrenamiento del agente. No es necesario agregar variedad por el simple hecho de hacerlo, pero sí es necesario proporcionar suficiente variedad para que el modelo de NLU pueda detectar con éxito la intención del usuario final a partir de una amplia gama de entradas del usuario final. Si no tienes suficiente variedad, existe el riesgo de sobreajuste. En otras palabras, existe el peligro de que el modelo se vincule demasiado a los ejemplos particulares que proporciones y no se generalice lo suficiente para otros ejemplos.
Variedad de capitalización
La sensibilidad a las mayúsculas varía según el modelo de PNL que use tu agente.
CLN 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:
- Cómo reducir el umbral de clasificación del AA
- Se convierten a minúsculas las entradas del usuario final antes de enviarlas a Dialogflow CX.
CLN avanzada
A diferencia del modelo de CLN estándar, el modelo de CLN avanzado distingue entre mayúsculas y minúsculas. Te recomendamos que pruebes y agregues los datos de entrenamiento pertinentes en mayúsculas para aumentar los porcentajes de coincidencias de intención.
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:
- Uso de 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 entre mayúsculas y minúsculas, y requiere más frases de entrenamiento para aumentar las coincidencias de intención. Consulta la sección sobre la variedad de capitalización para obtener más detalles.
- Palabras de relleno: Por ejemplo, "bueno, pide un boleto" y "pide un boleto".
- Puntuación: Por ejemplo, "¿Puedes ayudarme, por favor?" y "¿Puedes ayudarme, por favor?".
Coherencia de las anotaciones
El fragmento de la frase de entrenamiento seleccionado para una anotación debería incluir todo, y no más que, el texto que es necesario a fin de que coincida con una entidad. Además, asegúrate de que las partes similares de las frases de entrenamiento estén anotadas para todo el intent.
Por ejemplo, en la siguiente tabla, se muestran formas correctas e incorrectas de anotar con la entidad del sistema @sys.date:
| Buena | Mala |
|---|---|
| Salida el 7 de septiembre | Salida del 7 de septiembre |
| Salida el 4 de julio | Se irá 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 la frase de entrenamiento. Por ejemplo:
| Frase de entrenamiento anotada | 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 Dialogflow CX tienen en cuenta el significado semántico cuando se comparan 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 anotar el primer ejemplo de "7 años" que se muestra arriba.
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 llenado de formularios que no cumplen con las políticas. Por ejemplo, tu agente puede preguntar "¿Cuáles son tus fechas de viaje?", y el usuario final puede responder "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 intención dentro del alcance que puede coincidir con esta respuesta, tu agente puede manejar bien la situación.
Evita @sys.any
Evita usar el tipo de entidad del sistema @sys.any.
Solo se debe usar 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 misma 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 entidades.
Cuando definas frases de entrenamiento anotadas, debes usar una variedad de ejemplos de valores de entidades en las frases. No debes usar de forma constante 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 | Agrega 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 se evaluará como una posible coincidencia.
Las entidades de mapa y de 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 la siguiente entrada 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 Actions | Tipo de entidad de planes |
|---|---|
| "¿Cómo puedo hacer una llamada internacional?" | "Plan A" |
| “Uso de roaming de datos internacional” | "Plan B" |
En lugar de ello, 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 son palabras
Cuando captures la entrada del usuario final que involucre 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 expresión regular 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 intención debe captar 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 NLU no puede determinar con suficiente confianza con 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" deberían pertenecer a la misma intención, ya que ambas solicitan un cambio en la fecha de vencimiento. 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 desea algo diferente en cada caso.
Evita tipos de entidades similares
Debes evitar definir varios tipos de entidades que tengan entradas de entidades similares, ya que esto puede generar ambigüedad en el modelo de PNL.
Usa eventos de no coincidencia en producción para mejorar tus intents
Cuando ejecutes 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 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 produzca 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 la coincidencia con el intent.
- Si los intents que no deberían coincidir con la entrada del usuario final tienen frases de entrenamiento que podrían coincidir con la entrada del usuario final, borra esas 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 emoticonos, que funcionan como se espera.
Evita las muletillas
Las palabras de relleno son palabras que puedes ignorar y, aun así, comprender el texto. Por ejemplo:
- por favor
- ¿Puedes, por favor?
- Mmm
- ¿Qué tal
Es innecesario, pero no perjudicial, 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 solo varíen en 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 y responder al usuario final.
Dar 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 cumplimiento 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, lo mejor es repetir la información que proporciona el usuario final en las respuestas. Esto le permite al usuario final saber que el agente está comprendiendo su solicitud.
Cuando se encuentra una coincidencia con un intent y se produce una transición, infórmale al usuario final que la conversación avanza según 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 cumplimiento y una transición a una página que maneja preguntas sobre la cuenta de cheques. Ten en cuenta que el agente confirma que el usuario final desea obtener información sobre su cuenta corriente. |
Cuando se complete el 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. ¿Hay algo más en lo que pueda ayudarte? |
El usuario final proporcionó el parámetro de formulario de fecha, que era 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. Esto se logra fácilmente terminando cada respuesta con una pregunta como la siguiente:
- ¿Hay algo más en lo que pueda ayudarte?
- ¿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 ahí? ¿Sobre qué servicio consultas?
- ¿Aún quieres este pedido? ¿Quieres agregar algo?
Es posible que el usuario final responda solo una de las preguntas, y 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 los errores y las 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 control de estos eventos es similar a la detección de 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 de parámetros, controladores de eventos específicos de páginas o controladores de eventos específicos de flujos.
Cómo controlar errores de webhook
Cuando falla tu servicio de webhook, es importante que tu agente pueda controlar la falla de forma correcta. Para ello, debes definir controladores de eventos para los eventos integrados específicos del webhook. A continuación, se muestra un enfoque recomendado para controlar los errores de webhook:
- No proporciones un destino de transición desde el controlador de estado que activa la llamada de webhook. De lo contrario, no se invocará el controlador de eventos de error del webhook. En su lugar, establece el destino de la transición en la respuesta del webhook del servicio de webhook.
Elige una página en la que se pueda inicializar en cero un contador de errores. Esta página debe estar activa antes de la página que activa una llamada de webhook. La entrega de entrada para esta página debe inicializar el contador de errores en
0con un ajuste predeterminado de parámetros de entrega. Por ejemplo:Parámetro Valor webhook-error-count0Crea una página de error de webhook que controle los eventos de error de webhook:
La entrega de entrada debe confirmar el error al 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 que indique que el recuento de errores es inferior al 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 en cualquier página que pueda intentar llamar al webhook nuevamente.Define una ruta condicional 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 un cumplimiento que notifique al usuario final que el agente ya no volverá a intentarlo. Esta ruta debe tener un objetivo de transición establecido en una página que no active 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 brindan sugerencias para usar herramientas que mejoren 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 que se describen en esta guía.
Cómo usar 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 a medida que tu agente evoluciona para controlar más situaciones.