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, que se enfoca específicamente en el diseño de agentes de voz, y la guía de prácticas recomendadas para usar el servicio de 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 se establezca la estructura básica, itera en las rutas de conversación para asegurarte de que estás cubriendo todas las rutas posibles que un usuario final puede tomar.
Mientras tu agente evoluciona, 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 entregas específicas para tu empresa y crearás rápidamente un agente que funcione.
Integraciones y conexión de tus servicios
Existen varias formas de integrarse con los 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 necesitas llamar 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 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 Dialogflow CX.
Recursos de agentes
Los recursos de agentes de Dialogflow CX se pueden usar de muchas maneras para lograr el resultado deseado. En esta sección, se proporcionan consejos para elegir los recursos adecuados en las situaciones correspondientes.
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 estado y en los flujos como grupos de páginas relacionadas. Puedes controlar las transiciones entre nodos con controladores de estado, que se llaman cuando se produce 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 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 con el flujo ayude a manejar el tema. Además, cada flujo puede tener algunos de sus propios parámetros de 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 de "Obtener saldo":
- Obtener saldo de la cuenta corriente
- Obtener el saldo de ahorros
- Obtener saldo de la hipoteca
- Obtener crédito disponible
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 sigues teniendo dificultades con los límites de flujos y páginas, es posible que se deba a que tienes demasiada lógica empresarial integrada en el agente. Considera mover esta lógica a webhooks.
A continuación, se muestra el nivel de detalle del control de conversaciones de los recursos del agente en orden creciente:
- Agentes (un agente controla 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 una intención del usuario o una verificación de condición)
Parámetros de intents frente a parámetros de formularios
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 propósito principal de algunas páginas es recopilar información específica del usuario final. Por ejemplo, una página puede estar diseñada 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 quieras 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 se realiza 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 intent.
También hay situaciones en las que es ideal usar tanto parámetros de intent como 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 se realiza la transición a la página de pedidos de camisas. La página de pedidos de camisetas puede solicitar información adicional, como el color deseado. La página de pedidos de camisetas 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 talle deseado cuando se activa la página de pedidos de camisas. 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 realizar la transición a otra página, poner en cola un mensaje de respuesta o llamar a un webhook cuando se produce una coincidencia con un intent o se cumple una condición, usa rutas.
Si usas el mismo conjunto de rutas en varias páginas, utiliza grupos de rutas. Esto evitará la duplicación innecesaria en el diseño de tu agente.
Reutilización de intents
Si te encuentras definiendo varios intents con frases de entrenamiento similares, considera reutilizar los intents en varias páginas. Lo ideal es que definas 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:
- sí
- sí
- yep
- aceptar
- sí, acepto
- Claro que sí.
- absolutamente
- sí, por favor
Un intent confirmation.no podría tener frases de entrenamiento como las siguientes:
- no
- nah
- nop
- no way
- 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 confirmas un pedido,
es posible que quieras tener un intent order.confirmation.yes especializado
con frases de entrenamiento como las siguientes:
- el orden me parece 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 la página de confirmación del pedido esté activa, las rutas de intents para estos cuatro intents deberían 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 deberían 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 se debe decir 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 camiseta que quieres pedir.
- Rutas:
Se llama a este webhook de entrega cuando se llama a una ruta de intent o de condición
con entrega.
Esto es útil cuando deseas un mensaje que responda al usuario final sobre
la coincidencia de intents,
la condición satisfecha (que puede ser una
condición de finalización de llenado de formularios)
o la transición.
Por ejemplo:
- Sí, tu plan internacional incluye Japón. (coincidencia de intents)
- ¿Confirmas que quieres comprar 300 camisetas? (se cumple la condición de comparación)
- Muy bien, tu cita es para mañana a las 7:00 a.m. (completar un formulario)
- Bien, ahora hablemos de los cerdos hormigueros. (transición)
- Controladores de eventos:
Se llama a este webhook cuando se invoca un evento.
Es útil cuando quieres un mensaje que responda al evento.
Por ejemplo:
- Las acciones que estás considerando comprar acaban de aumentar su valor en un 10%. (evento personalizado)
- ¿Puedes reformular la pregunta? (evento de falta de coincidencia)
- Mensajes iniciales para formularios:
Se llama a este webhook cuando el agente completa el formulario.
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:
- ¿Qué talle de camiseta quieres?
- What color shirt would you like?
- Controladores de repreguntas para formularios:
Se llama a este webhook cuando el agente completa un formulario
y no comprende la selección del usuario final para el parámetro actual.
Este fulfillment solo es necesario si deseas que el mensaje de repregunta
sea diferente del mensaje de instrucción inicial.
Si no hay controladores de repregunta,
el agente usará la instrucción inicial como mensaje de repregunta.
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 nombrar los recursos de los agentes.
Nombres de intents
Si tu agente tiene muchos intents, deberías 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 tu agente.
Transiciones gratuitas
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 las entradas 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 forma ó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 con tu intent de forma adecuada. Este es un lineamiento mínimo. Lo ideal es que definas más, en especial para los intents principales de los agentes grandes, en los que se recomienda tener alrededor de 50.
Ten en cuenta el sesgo de intención
Cuando uno o más intents tienen significativamente más frases de entrenamiento que otros intents, eso hace que el modelo de CLN esté sesgado a favor de los intents más grandes debido a los datos desequilibrados. El 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, porque es posible que definas algunos intents que deberían encontrar coincidencias con más frecuencia que otros, ya que corresponden a entradas de usuarios finales que se observan con más frecuencia en el tráfico en vivo.
En otros casos, ese comportamiento puede ser indeseable, porque no quieres un sesgo a favor de los intents más grandes. Si este es el caso, reduce la cantidad de frases de entrenamiento para que esos 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 el intent 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 entidad.
- 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 entidad. 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 las personas dicen en realidad. Siempre que sea posible, usa las entradas de los usuarios finales que se produjeron en producción como datos de entrenamiento, prestando especial atención a las más comunes.
Variedad necesaria de frases de entrenamiento
Incluye variaciones de preguntas, comandos, verbos y sinónimos de sustantivos comunes para asegurarte de que tus frases abarquen 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 debo pagar el saldo de mi estado de cuenta". No hay una proporción recomendada de frases cortas y largas, pero debes basarte en las entradas reales de los usuarios finales enviadas a tu agente en producción.
Definir frases de entrenamiento que varíen en longitud, redacción y estructura de oraciones es importante para garantizar un buen entrenamiento de tu 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 correctamente la intención del usuario final a partir de una amplia gama de entradas de usuario final. Si no tienes suficiente variedad, existe el 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 y minúsculas
La sensibilidad a las mayúsculas varía según el modelo de NLU 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. Por lo general, esto se aplica 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 del AA
- Convertir las entradas de los usuarios finales en minúsculas antes de enviarlas a 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 con mayúsculas para aumentar los porcentajes de coincidencias 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 NLU. Por ejemplo, no incluyas variantes que solo se diferencien por lo siguiente:
- Uso de mayúsculas: Si usas el modelo de NLU 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 sobre la variedad de mayúsculas para obtener más detalles.
- Muletillas: Por ejemplo, "bueno, pide una entrada" y "pide una entrada".
- 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 el texto necesario para que coincida con una entidad, y no más que eso. 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 el 7 de septiembre |
| Salida el 4 de julio | Salida: 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 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 consideran el significado semántico cuando se buscan coincidencias 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 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 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 los requisitos. 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 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 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, deberías usar una variedad de ejemplos de valores de entidad en las frases. No debes usar de forma coherente el mismo ejemplo de entidad para las anotaciones. En el siguiente ejemplo, se muestran anotaciones correctas e incorrectas para un tipo de entidad de producto:
| Buena | Mala |
|---|---|
| Quiero comprar una camisa | Quiero comprar una camisa |
| Pide un sombrero nuevo | Pedir una camisa nueva |
| Agregar un reloj al 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 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 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 intents se adaptan mejor a tu situación. Por ejemplo, considera la siguiente entrada del usuario final:
- "¿Cómo puedo hacer una llamada internacional con el Plan A?"
- "Uso del 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 del roaming de datos internacional" | "Plan B" |
En su lugar, debes usar frases de entrenamiento y coincidencia de intents para capturar las acciones y las entidades para capturar los planes.
Usa entidades de regex para capturar identificadores que no sean palabras
Cuando captures entradas de usuarios finales que involucren identificadores que no sean palabras, debes usar entidades de regexp. 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 límite de la factura actual" y "más tiempo para pagar" deben pertenecer al mismo intent, ya que ambos solicitan un cambio de fecha límite. 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 intents diferentes, porque el usuario final quiere algo diferente en cada caso.
Evita los tipos de entidades similares
Debes evitar definir varios tipos de entidades que tengan entradas de entidad similares, ya que esto puede generar ambigüedad en el modelo de CLN.
Usa eventos de no coincidencia en producción para mejorar tus intents
Cuando ejecutes tu agente en producción, es inevitable que algunas entradas de usuarios finales generen eventos sin coincidencias. Puedes usar 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, puede generar un sesgo de intent.
- Limpia las frases de entrenamiento para el intent deseado, de modo que todas reflejen con precisión la intención. En algunos casos, los intents con frases de entrenamiento divergentes pueden impedir que se establezca una coincidencia para 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
Se ignoran los caracteres especiales en las frases de entrenamiento ({, _, #, [, etcétera).
Una excepción a esto son los emoticones,
en los que funcionan como se espera.
Evita las muletillas
Las muletillas son palabras que puedes ignorar y, aun así, entender el texto. Por ejemplo:
- por favor
- ¿Puedes, por favor,
- Mmm…
- ¿Qué tal
No es necesario, pero es inofensivo usar muletillas 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 las muletillas.
Nunca definas entidades que estén compuestas por muletillas.
Experimenta con la configuración de AA
La configuración de AA se puede usar para ajustar cómo 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 quieras ajustar la configuración para mejorar el rendimiento del agente.
Responde al usuario final
En esta sección, se proporcionan lineamientos para usar la entrega con el objetivo de 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 entrega que dé la bienvenida al usuario final. Este mensaje debe describir el agente y darle al usuario final una idea de lo que es capaz de hacer.
Reconoce 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 con un intent y se produce una transición, informa 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: De acuerdo, ¿qué te gustaría 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 la cuenta corriente. Ten en cuenta que el agente confirma que el usuario final quiere saber sobre su cuenta corriente. |
Cuando se complete el 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 era el último parámetro de formulario de 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 las siguientes:
- ¿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 aquí? ¿Por qué servicio realizas la consulta?
- ¿Aún quieres este pedido? ¿Quieres agregar algo?
Es posible que el usuario final responda solo una de las preguntas y que tu agente no maneje esa situación de forma correcta.
Manejo de errores y entradas inesperadas de los usuarios finales
En esta sección, se proporcionan consejos para controlar los errores y las entradas inesperadas de los usuarios finales.
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 la captura de excepciones en la programación de software. Según la situación, es posible que quieras controlar 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 flujos.
Cómo controlar los errores de webhook
Cuando falla tu servicio de webhook, es importante que tu agente pueda controlar la falla de forma correcta. Para lograrlo, define 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 activa la llamada de webhook; de lo contrario, no se invocará el controlador de eventos de error de webhook. En su lugar, establece el destino de la 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 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 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á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 en cualquier página que pueda realizar otro intento de llamar al webhook.Define una ruta de condición que tenga una condición de 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 destino de transición establecido en una página que no activará reintentos de webhook.
El controlador de eventos de webhook debe tener un destino de transición que realice la transición a la página de error de 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.