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

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

También deberías consultar la guía de diseño de agentes de voz, que se centra específicamente en el diseño de agentes de voz, y la guía de prácticas recomendadas para usar el servicio Conversational Agents (Dialogflow CX).

Consejos generales

Crear agentes de forma iterativa

Si tu agente va a ser grande o complejo, empieza creando un diálogo que solo responda a las solicitudes de nivel superior. Una vez que hayas establecido la estructura básica, itera en las rutas de conversación para asegurarte de que cubres todas las rutas posibles que puede seguir un usuario final.

Mientras tu agente evoluciona, te recomendamos que utilices la función Casos de prueba para el desarrollo basado en pruebas.

Agentes prediseñados

Conversational Agents (Dialogflow CX) ofrece plantillas de agentes para ayudarte a dar tus primeros pasos. Los agentes precompilados abarcan casos prácticos habituales, como los servicios financieros, las telecomunicaciones y los viajes. Estos agentes incluyen intenciones y entidades para cubrir las consultas de los usuarios más habituales. Añade rutas y opciones de tramitación específicas para tu empresa y podrás crear rápidamente un agente funcional.

Integraciones y conexión de tus servicios

Hay varias formas de integrar agentes de Conversational Agents (Dialogflow CX). En esta sección se describen las prácticas recomendadas para elegir cómo integrar.

Integraciones

Las integraciones de Conversational Agents (Dialogflow CX) proporcionan una interfaz de usuario lista para usar para tu agente. Si usas una integración, no tienes que llamar directamente a la API Conversational Agents (Dialogflow CX), ya que las integraciones se encargan de ello. Estas integraciones pueden proporcionar un agente de texto que puede insertar en su sitio web, conectarse con otras plataformas de mensajería o proporcionar una interfaz de telefonía.

API Conversational Agents (Dialogflow CX)

Si ninguna de las integraciones listas para usar se adapta a tus necesidades o quieres personalizar la interfaz de tu sistema, puedes usar directamente la API Conversational Agents (Dialogflow CX). Con este enfoque, tendrás que implementar la interfaz de usuario de tu agente o usar una interfaz de usuario que ya tengas.

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 gestionar situaciones dinámicas. Esto se aplica tanto si usas integraciones como la API Conversational Agents (Dialogflow CX).

Recursos para agentes

Los recursos de los agentes conversacionales (Dialogflow CX) se pueden usar de muchas formas para conseguir el resultado deseado. En esta sección se ofrecen consejos para elegir los recursos adecuados para cada situación.

Flujos y páginas

Los flujos y las páginas proporcionan estructura a tu agente. Las páginas son como nodos de una máquina de estados y los flujos son grupos de páginas relacionadas. Las transiciones entre nodos se controlan con gestores de estado, que se llaman cuando se encuentra una coincidencia con una intención, se cumple una condición o se invoca un evento.

Un agente sencillo 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, y cada página asociada al flujo debe ayudar a gestionar el tema. Además, cada flujo puede tener sus propios ajustes y un subconjunto de miembros del equipo puede ser el propietario de cada flujo, lo que ayuda a dividir el trabajo al diseñar 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 funcione correctamente.

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

  • Obtener saldo de cuenta corriente
  • Obtener el saldo de ahorro
  • Obtener el saldo de la hipoteca
  • Obtener saldo de crédito

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

Si sigues teniendo problemas con los límites de flujo y de páginas, puede deberse a que has integrado demasiada lógica empresarial en el propio agente. Te recomendamos que transfieras esta lógica a los webhooks.

A continuación, se muestra la granularidad del control de conversaciones de los recursos de agente, ordenada de menor a mayor granularidad:

  1. Agentes (un agente gestiona todas las conversaciones)
  2. Flujos (un flujo gestiona uno o varios temas de conversación relacionados)
  3. Páginas (una página gestiona uno o varios turnos de conversación relacionados)
  4. Rutas (una ruta gestiona una intención del usuario o una comprobación de condiciones)

Parámetros de intents y parámetros de formularios

La principal forma en la que su sistema obtiene datos estructurados del usuario final es mediante parámetros. Puede 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 recoger información específica del usuario final. Por ejemplo, una página puede diseñarse para recoger la información de contacto del usuario final. En este caso, siempre debes usar parámetros de formulario para recoger esta información.

En algunos casos, puede que quieras recoger información de los usuarios finales mientras pasan de una página a otra. Por ejemplo, si el usuario final solicita un producto concreto al principio de la conversación, querrá registrar el producto deseado mientras se le redirige a la página de pedido correspondiente. En este caso, usa los parámetros de intención como parte de las rutas de intención.

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 camiseta pequeña al principio de la conversación, querrá registrar el parámetro de tamaño deseado (pequeño) mientras pasa a la página de pedido de la camiseta. En la página de pedido de la camiseta, es posible que se te pida información adicional, como el color que quieres. La página de pedido de la camiseta debe tener parámetros de formulario para la talla y el color. En este ejemplo, el parámetro de tamaño ya se ha proporcionado y se propaga, 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 ha proporcionado la talla deseada cuando se activa la página de pedido de la camiseta. Si defines este parámetro de ambas formas, tu agente será más flexible a la hora de extraer la información.

Rutas y grupos de rutas

Si quieres pasar a otra página, poner en cola un mensaje de respuesta o llamar a un webhook cuando se encuentre una intención o se cumpla una condición, usa rutas.

Si usas el mismo conjunto de rutas en varias páginas, utiliza grupos de rutas. De esta forma, evitarás duplicaciones innecesarias en el diseño de tu agente.

Reutilización de intents

Si defines varias intenciones con frases de entrenamiento similares, te recomendamos que reutilices las intenciones en varias páginas. Lo ideal es que definas algunas intenciones de uso general que se utilicen en muchas páginas y otras específicas que solo se usen en una página. De esta forma, evitarás duplicaciones innecesarias en el diseño de tu agente.

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

  • yes
  • sip
  • Aceptar
  • claro
  • por supuesto
  • Sí, por favor

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

  • no
  • ¡que no!
  • No
  • de eso nada
  • no es para mí
  • en absoluto
  • no, gracias

Estos intents de confirmación reutilizables se pueden usar en muchos casos de tu agente.

En algunos casos, también deberías crear intents de confirmación especializados. Por ejemplo, al confirmar un pedido, puede que quieras tener un order.confirmation.yesintent especializado con frases de entrenamiento como las siguientes:

  • El pedido me parece correcto
  • 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 la página de confirmación del pedido esté activa, los intent routes de los cuatro intents deberían estar en el ámbito. De esta forma, se asegura de que se gestione correctamente cualquier confirmación genérica o específica del usuario final.

Intent negativo predeterminado

Deberías rellenar el campo intención negativa predeterminada con frases que puedan decir tus usuarios finales, pero que no coincidan con ninguna intención de tu agente.

Fulfillment

Hay muchas opciones para usar cumplimiento para responder al usuario final. Durante un turno de conversación, el agente puede añadir 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.

  • Cumplimiento de la entrada de la página: se llama a este cumplimiento cuando la página se activa inicialmente. Es útil cuando quieres que se muestre un mensaje que describa el propósito de la página y solo se debe mostrar una vez mientras la página esté activa. Por ejemplo:
    • ¿Qué quieres saber sobre tu cuenta corriente?
    • ¿Qué tipo de producto quieres comprar?
    • Necesito recoger información sobre la camiseta que quieres pedir.
  • Rutas: este fulfillment se llama cuando se llama a una ruta de intención o a una ruta de condición con fulfillment. Esto resulta útil cuando quieres que se envíe un mensaje al usuario final sobre la coincidencia de la intención, la condición satisfecha (que puede ser una condición de finalización de un formulario) o la transición. Por ejemplo:
    • Sí, tu plan internacional incluye Japón. (intent match)
    • ¿Seguro que quieres comprar 300 camisetas? (se cumple la condición de comparación)
    • De acuerdo, tu cita es mañana a las 7:00. (relleno de formularios)
    • Ahora vamos a hablar de los osos hormigueros. (transición)
  • Gestores de eventos: se llama a este cumplimiento cuando se invoca un evento. Es útil cuando quieres que un mensaje responda al evento. Por ejemplo:
    • Las acciones que estás pensando comprar acaban de aumentar su valor en un 10%. (evento personalizado)
    • ¿Puedes decirlo de otra forma? Evento sin coincidencias
  • Peticiones iniciales de formularios: este cumplimiento se llama cuando el agente rellena un formulario. En estos mensajes se debe hacer una pregunta específica al usuario final. Cada parámetro de formulario tiene su propio cumplimiento de petición inicial. Por ejemplo:
    • ¿Qué talla de camisa quieres?
    • ¿De qué color quieres la camiseta?
  • Gestores de repetición de peticiones para formularios: se llama a este cumplimiento cuando el agente está rellenando un formulario y no entiende la selección del usuario final para el parámetro actual. Este paso solo es necesario si quieres que el mensaje de repetición sea diferente del mensaje inicial. Si no hay controladores de repetición de peticiones, el agente usará la petición inicial como mensaje de repetición. Por ejemplo:
    • No lo entiendo. ¿Puede indicar un color válido para la camiseta?

Nomenclatura

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

Nombres de intents

Si tu agente tiene muchos intentos, te recomendamos que utilices un sistema de nomenclatura que te ayude a mantenerlos organizados. Es habitual segmentar los nombres de las intenciones con signos de puntuación, donde la especificidad aumenta de izquierda a derecha. Además, el nombre de una intención debe reflejar la intención del usuario final en una conversación.

Hay muchos buenos esquemas de nomenclatura, pero aquí tienes 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 permiten controlar la conversación cambiando la página activa. En esta sección se ofrecen consejos para organizar las transferencias de agentes.

Transiciones gratuitas

Al definir 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 intención para confirmation.yes, considera definir otra ruta para confirmation.no.
  • Si defines una ruta de condición con un operador booleano =, te recomendamos que definas otra ruta que utilice !=.

Gestionar las entradas de los usuarios finales

En esta sección se proporcionan directrices sobre las intenciones y las frases de entrenamiento para que tu agente pueda gestionar y procesar de forma óptima las entradas de los usuarios finales.

Define al menos 20 frases de entrenamiento

Debe tener al menos 20 frases de entrenamiento por cada intención. De lo contrario, es posible que el modelo de NLU no tenga suficiente información para asociar tu intención de forma adecuada. Se trata de una directriz mínima. Lo ideal es que definas más, sobre todo en el caso de las intenciones principales de los agentes grandes, donde lo recomendable es que haya unas 50.

Ten en cuenta el sesgo de intención

Si uno o varios intents tienen muchas más frases de entrenamiento que otros, el modelo de NLU se decantará por los intents más grandes debido a los datos desequilibrados. Este sesgo de intención puede producirse cuando la cantidad de frases de entrenamiento difiere en un orden de magnitud o más.

En algunos casos, este comportamiento es el deseado, ya que puedes definir algunas intenciones que deben coincidir con más frecuencia que otras porque se corresponden con las entradas de los usuarios finales que se observan con más frecuencia en el tráfico real.

En otros casos, este comportamiento puede ser no deseable, ya que no quieres que haya un sesgo a favor de estas intenciones más grandes. Si es así, reduce el número de frases de entrenamiento de estas intenciones más grandes para que tengan el mismo orden de magnitud que otras intenciones. Por ejemplo:

Frases de entrenamiento del intent A Frases de entrenamiento del intent B Sesgo de la intención B
20 50 No
20 200 Por determinar
20 2000

Uso de entidades y cantidad de frases de entrenamiento

Para todos los tipos de entidades que se usen en una intención:

  • Anota todos los ejemplos de los tipos de entidad.
  • En cada uno de los tipos de entidad, 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 de una intención, 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 dicen los usuarios. Siempre que sea posible, usa como datos de entrenamiento las entradas de los usuarios finales que se hayan producido en producción y presta especial atención a las más habituales.

Variedad necesaria de frases de entrenamiento

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

Es mejor incluir frases más cortas, como "paga mi factura", así como frases y oraciones más largas, como "Acabo de recibir una carta en la que se me indica que tengo que pagar el saldo de mi extracto". No hay una proporción recomendada de frases cortas y largas, pero debes basarte en las entradas reales de los usuarios finales 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 las frases para que el agente se entrene correctamente. No es necesario añadir 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, corres el riesgo de sobreajuste. En otras palabras, existe el riesgo de que el modelo se ciña demasiado a los ejemplos concretos que proporciones y no se generalice lo suficiente a otros ejemplos.

Variedad de uso de mayúsculas

La sensibilidad a las mayúsculas y minúsculas varía en función del modelo de procesamiento del lenguaje natural que utilice tu agente.

CLN estándar

El modelo de CLN estándar no distingue entre mayúsculas y minúsculas. En casos excepcionales, es posible que tengas que añadir frases de entrenamiento que solo varíen en el uso de mayúsculas y minúsculas. Esto suele aplicarse en situaciones en las que se espera que los usuarios finales proporcionen entradas de texto en mayúsculas.

Otras opciones podrían ser las siguientes:

NLU 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 añadas los datos de entrenamiento pertinentes en mayúsculas para aumentar las tasas de coincidencia de la 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 PLN. Por ejemplo, no incluya variantes que solo se diferencien en lo siguiente:

  • Uso de mayúsculas: si utilizas el modelo de CLN estándar, evita las frases duplicadas, como "Order a ticket" y "order a ticket", salvo en casos excepcionales. Sin embargo, el modelo avanzado de PLN 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 variedad de uso de mayúsculas para obtener más información.
  • Muletillas: Por ejemplo, "vale, 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, pero no más. Además, asegúrate de que las partes similares de las frases de entrenamiento estén anotadas en toda la intención.

Por ejemplo, en la siguiente tabla se muestran formas correctas e incorrectas de usar la entidad de sistema @sys.date:

Buena Malo
Salida el 7 de septiembre Salida el 7 de septiembre
Se retira el 4 de julio Se retira el 4 de julio

Usar anotaciones semánticamente significativas para las entidades del sistema

El significado semántico de una parte de una 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 Edad de una persona
El contrato tiene una validez de 7 años. Duración

Los modelos de aprendizaje automático de Conversational Agents (Dialogflow CX) tienen en cuenta el significado semántico al hacer coincidir entidades del sistema. El significado semántico de la parte de la frase de entrenamiento debe coincidir con el significado semántico previsto de la entidad del sistema.

Por ejemplo, no uses la entidad de sistema @sys.duration para anotar el primer ejemplo de "7 años" que aparece más 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 de sistema @sys.number.

Definir intenciones para gestionar respuestas de relleno de formularios no conformes

Plantéate definir intenciones para gestionar las respuestas de relleno de formularios que no cumplan los requisitos. Por ejemplo, tu agente puede preguntar "¿Cuáles son las fechas de tu viaje?" y el usuario final puede responder "Aún no lo sé". Esta respuesta no cumple la petición del parámetro de formulario, pero si tu agente tiene una ruta de intención en el ámbito que pueda coincidir con esta respuesta, puede gestionar la situación correctamente.

Evitar @sys.any

No uses el tipo de entidad de sistema @sys.any. Solo debe usarse si has agotado todas las vías posibles, incluida la creación de entidades personalizadas. Este tipo de entidad es muy amplio y puede provocar un comportamiento no deseado.

Si usa este tipo de entidad, evite 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 se le pide que proporcione parámetros de formulario.

Las anotaciones deben incluir una variedad de valores de entidad

Cuando definas frases de entrenamiento anotadas, debes usar una variedad de ejemplos de valores de entidad en las frases. No debes usar siempre 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 Malo
Quiero comprar una camisa Quiero comprar una camisa
Pedir una gorra nueva Pedir una camiseta nueva
Añade un reloj a mi carrito Añade una camisa al carrito

Las entidades personalizadas deben incluir variedad

Las entidades personalizadas deben abarcar una amplia gama de ejemplos. El modelo de NLU proporcionará variedad en las formas gramaticales, pero debes incluir todos los elementos posibles.

Evitar las entidades que coinciden de forma agresiva

No definas entidades que coincidan con prácticamente cualquier cosa. Esto reduce el rendimiento y la calidad del aprendizaje automático. Casi todo lo que hay en cada frase de entrenamiento se evaluará como una posible coincidencia.

Las entidades de mapa y de lista deben centrarse en valores distintos

Los tipos de entidad de mapa y lista deben tener un ámbito limitado que capture valores distintos de un tipo de información. Las entidades deben ser concisas, breves y sencillas.

Si los valores de tus entidades son complicados, puede que las frases de entrenamiento de la intención se adapten mejor a tu situación. Por ejemplo, considera la entrada del usuario final:

  • "¿Cómo puedo hacer una llamada internacional con el Plan A?"
  • "Estás usando el roaming de datos internacional con el Plan B".

No cree tipos de entidad para las acciones y los planes, como en el siguiente ejemplo:

Tipo de entidad Actions Tipo de entidad de planes
"¿Cómo puedo hacer una llamada internacional?" "Plan A"
"Usar el roaming de datos internacional" "Plan B"

En su lugar, debes usar frases de entrenamiento y la coincidencia de intenciones para registrar las acciones y las entidades que se deben registrar en los planes.

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

Cuando captures la entrada del usuario final que incluya identificadores que no sean palabras, debes usar entidades de expresiones regulares. Por ejemplo, para capturar IDs de producto como "AA-256" o "AC-436", usa una entidad de expresión regular como "[A-Z]{2}-\d{3}".

Evita anidar entidades compuestas

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

Evitar intents similares

Cada intención debe reflejar la intención del usuario final. Si defines diferentes intenciones con frases de entrenamiento similares, es posible que la coincidencia no sea fiable, ya que el modelo de PNL no puede determinar con suficiente confianza qué intención debe coincidir.

Si dos frases de entrenamiento representan la misma intención, deben pertenecer a la misma intención. Por ejemplo, las frases "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, las frases "¿Puedo hacer una llamada internacional con el plan A?" y "¿Puedo usar la itinerancia de datos internacional con el plan A?" podrían pertenecer a intenciones diferentes, ya que el usuario final quiere algo distinto en cada caso.

Evitar tipos de entidades similares

Debe evitar definir varios tipos de entidades que tengan entradas de entidades similares, ya que esto puede provocar ambigüedad en el modelo de NLU.

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

Cuando ejecutes tu agente en producción, es inevitable que algunas entradas de usuarios finales provoquen eventos de no coincidencia. Puedes aprovechar estas oportunidades para mejorar tu agente de tres formas:

  • Añade la entrada del usuario final como frase de entrenamiento a la intención deseada. Sin embargo, no siempre es la mejor opción. Si lo haces muchas veces para la intención, puede que se produzca un sesgo de intención.
  • Limpia las frases de entrenamiento de la intención que quieras para que reflejen la intención con precisión. En algunos casos, las intenciones con frases de entrenamiento divergentes pueden impedir que se encuentren coincidencias para la intención.
  • Si las intenciones que no deberían coincidir con la entrada del usuario final tienen frases de entrenamiento que podrían coincidir con ella, elimínelas.

Evitar caracteres especiales

Se ignoran los caracteres especiales de las frases de entrenamiento ({, _, #, [, etc.). La excepción son los emoticonos, que funcionan como se espera.

Evita las palabras de relleno

Las muletillas son palabras que puedes ignorar y seguir entendiendo el texto. Por ejemplo:

  • por favor
  • ¿puedes
  • hmmm
  • ¿qué te parece?

No es necesario, pero no es 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 las muletillas.

No definas nunca entidades compuestas por palabras de relleno.

Experimentar con los ajustes de aprendizaje automático

Los ajustes de aprendizaje automático se pueden usar para ajustar cómo se procesan las entradas de los usuarios finales. En la mayoría de los casos, la configuración predeterminada funciona bien. Sin embargo, puede que quieras ajustar la configuración para mejorar el rendimiento de tu agente.

Responder al usuario final

En esta sección se proporcionan directrices para usar el procesamiento y responder al usuario final.

Dar la bienvenida al usuario final

Los agentes recién creados tienen una ruta de intent creada automáticamente para el intent de bienvenida. Deberías editar esta ruta para incluir un mensaje de respuesta que dé la bienvenida al usuario final. En este mensaje se debe describir el agente y se debe dar al usuario final una idea de lo que puede hacer.

Confirmar la información del usuario final

A menudo, lo mejor es repetir la información proporcionada por el usuario final en las respuestas. De esta forma, el usuario final sabe que el agente entiende su solicitud.

Cuando se encuentra una coincidencia con una intención y se produce una transición, informa al usuario final de que la conversación avanza en función de su solicitud. Por ejemplo:

Creación de diálogos Descripción
Usuario final: tengo preguntas sobre mi cuenta corriente.
Agente: de acuerdo, ¿qué quieres saber sobre tu cuenta corriente?
La entrada del usuario final ha dado como resultado una coincidencia de intención y se ha seguido una ruta que incluía un mensaje de respuesta y una transición a una página que gestiona las preguntas sobre la cuenta bancaria. Ten en cuenta que el agente confirma que el usuario final quiere obtener información sobre su cuenta corriente.

Cuando se haya completado el relleno del formulario, repite los datos proporcionados por el usuario final. Por ejemplo:

Creación de diálogos Descripción
Usuario final: Mañana.
Agente: De acuerdo. Tu corte de pelo está programado para mañana a las 19:00. ¿Puedo ayudarte con alguna otra cosa?
El usuario final ha proporcionado el parámetro de formulario de fecha, que era el último parámetro de formulario de la página activa. El agente ha confirmado la hora y la fecha de la cita para cortarse el pelo.

Guiar la conversación

El agente siempre debe guiar la conversación con el usuario final. Para ello, solo tienes que terminar cada respuesta con una pregunta como la siguiente:

  • ¿Puedo ayudarte con alguna otra cosa?
  • ¿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í? ¿Qué servicio te interesa?
  • ¿Quieres este pedido? ¿Quieres añadir algo?

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

Gestionar errores y entradas inesperadas de usuarios finales

En esta sección se ofrecen consejos sobre cómo gestionar los errores y las entradas inesperadas de los usuarios finales.

Crear controladores de eventos para eventos integrados

Deberías crear controladores de eventos para los eventos integrados que correspondan. Gestionar estos eventos es similar a detectar excepciones en la programación de software. En función de la situación, puede que quieras gestionar 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.

Gestionar errores de webhook

Si tu servicio de webhook falla, es importante que tu agente pueda gestionar el fallo correctamente. Para ello, debes definir controladores de eventos para los eventos integrados específicos del webhook. A continuación, te indicamos cómo gestionar los errores de webhook:

  • No proporciones un destino de transición desde el gestor de estados que active la llamada de webhook. De lo contrario, no se invocará el gestor de eventos de error del webhook. En su lugar, define 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. El cumplimiento de la entrada de esta página debe inicializar el contador de errores en 0 mediante un parámetro de cumplimiento predefinido. Por ejemplo:

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

    • La respuesta de entrada debe confirmar el error al usuario final y debe aumentar un parámetro de sesión de contador de errores mediante un parámetro predefinido de respuesta. 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 número de errores es inferior al 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 volverá a intentarlo. Esta ruta debe tener un destino de transición definido como PREVIOUS_PAGE o como 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 un cumplimiento que notifique al usuario final que el agente ya no volverá a intentarlo. Esta ruta debe tener un destino de transición definido en una página que no active reintentos de webhook.

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

Herramientas

En esta sección se ofrecen consejos sobre cómo usar las herramientas para mejorar el diseño de los agentes.

Usar la herramienta de validación

Siempre debes usar la herramienta de validación para comprobar tu agente. Esta herramienta detecta algunos de los problemas que se describen en esta guía.

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 gestionar más situaciones.