Cómo se procesa el diálogo

El diálogo utiliza las intenciones que se identifican en la entrada del usuario, además del contexto de la aplicación, para interactuar con el usuario y finalmente proporcionar una respuesta útil.

El diálogo compara intenciones (lo que dicen los usuarios) con respuestas (lo que responde el bot). La respuesta puede ser la respuesta a una pregunta como What are your store hours? o la ejecución de un mandato, como realizar un pedido. La intención y la entidad podrían ser suficiente información para determinar la respuesta correcta. Otra posibilidad es que el diálogo solicite más información para responder correctamente. Por ejemplo, si un usuario pregunta Where can I get some food?, es posible que desee aclarar si busca un restaurante o una tienda de comestibles, para comer allí o para llevar, etc. Puede pedir más detalles en una respuesta de texto y crear uno o varios nodos hijo para procesar la nueva entrada.

El diálogo se representa de forma gráfica en watsonx Assistant como un árbol. Cree una rama para procesar cada intención que desea que maneje la conversación. Una rama se compone de varios nodos.

Nodos del diálogo

Cada nodo del diálogo contiene, como mínimo, una condición y una respuesta.

![Shows user input going to a box that contains the statement If: CONDITION, Then: RESPONSE](images/node1-empty.png

  • Condición: Especifica la información que debe aparecer en la entrada del usuario para este nodo en el diálogo que se va a activar. La información suele ser una intención específica. También puede ser un tipo de entidad, un valor de entidad o un valor de variable de contexto. Para obtener más información, consulte Condiciones.
  • Respuesta: La expresión que su asistente utiliza para responder al usuario. La respuesta también se puede configurar de modo que muestre una imagen o una lista de opciones, o que active acciones mediante programación. Para obtener más información, consulte Respuestas.

Puede pensar en el nodo como si tuviera una construcción de tipo si/entonces (if/then): si esta condición se cumple, entonces devolver esta respuesta.

Por ejemplo, el siguiente nodo se activa si la función de proceso de lenguaje natural de su asistente determina que la entrada de usuario contiene la intención #cupcake-menu. Como consecuencia de que se active el nodo, su asistente responde con una respuesta adecuada.

Muestra el usuario que pregunta acerca de los tipos de cupcake. La condición If es #cupcake-menu y la respuesta Then es una lista de sabores de cupcake.
Condición simple y respuesta

Un solo nodo con una condición y respuesta puede gestionar solicitudes sencillas de usuario. Pero generalmente los usuarios tienen preguntas más sofisticadas o desean ayuda con tareas más complejas. Puede añadir nodos hijo que soliciten al usuario que proporcione cualquier información adicional que necesita su asistente.

Muestra que el primer nodo del diálogo pregunta qué tipo de cupcake desea el usuario, sin gluten o normal, y tiene dos nodos hijo que proporcionan una respuesta diferente en función de la respuesta del usuario.
Node con nodos hijo

Flujo del diálogo

Su asistente procesa el diálogo que cree desde el primer nodo en el árbol hasta el último.

La flecha apunta hacia abajo junto a 3 nodos para mostrar que el diálogo fluye del primer nodo al último flujo de
Node

A medida que baja por el árbol, si su asistente encuentra una condición que se cumple, activa dicho nodo. Luego se mueve por el nodo que ha sido activado para comparar la entrada del usuario con las condiciones de los nodos hijo. A medida que comprueba los nodos hijo, se mueve de nuevo del primer nodo hijo al último.

Su asistente sigue funcionando de esta forma a través del árbol del diálogo, desde el primer al último nodo, por cada nodo activado, y luego desde el primer al último nodo hijo, por cada nodo hijo activado hasta alcanzar el último nodo de la rama que se está siguiendo.

Muestra la flecha 1 que apunta desde el primer nodo raíz al último, la flecha 2 que apunta desde la longitud de un nodo desencadenado y la flecha 3 que apunta desde el primero al último nodo hijo del nodo desencadenado.
Flujo deNode

Cuando empiece a crear el diálogo, debe determinar las ramas para desea incluir y dónde colocarlas. El orden de las ramas es importante porque los nodos se evalúan de primero a último. Se utiliza el primer nodo raíz cuya condición coincida con la entrada; los nodos que hay posteriormente por árbol no se activan.

Cuando su asistente alcanza el final de una rama, o cuando no puede encontrar una condición que se evalúe como verdadera desde el conjunto actual de nodos hijos que está evaluando, salta de nuevo a la base del árbol. El asistente procesa los nodos raíz del primero al último. Si ninguna de las condiciones se evalúa como verdadera, se devuelve la respuesta del último nodo en el árbol, que normalmente tiene la condición especial anything_else que siempre se evalúa como verdadera.

Existe la posibilidad de alterar el flujo estándar de primero a último de las siguientes formas:

  • Personalizando lo que sucede después de que se procese un nodo. Por ejemplo, puede configurar un nodo para saltar directamente a otro nodo después de que se haya procesado, incluso si el otro nodo está situado con anterioridad en el árbol. Para obtener más información, consulte Definición de qué hacer a continuación.

  • Configurando respuestas condicionales para saltar a otros nodos. Para obtener más información, consulte Respuestas condicionales.

  • Configurando valores de digresión para nodos de diálogo. Las digresiones también pueden afectar a la forma en que los usuarios se mueven por los nodos en tiempo de ejecución. Si habilita las digresiones hacia fuera de la mayoría de los nodos y configura retornos, los usuarios pueden saltar de un nodo a otro y volver de nuevo más fácilmente. Para obtener más información, consulte Digresiones.

Diálogo de ejemplo

Este diagrama muestra una maqueta de un árbol de diálogo creado con el editor de diálogos de la interfaz gráfica de usuario.

Un árbol de diálogo de ejemplo con contenido de ejemplo
Árbol de diálogo

El árbol del diálogo de este diagrama contiene dos nodos de diálogo raíz. Un árbol de diálogo típico probablemente tenga muchos más nodos, pero esta representación proporciona una visión general del aspecto que puede tener un subconjunto de nodos.

  • El primer nodo raíz está condicionado por un valor de intención. Tiene dos nodos hijo, cada uno de los cuales está condicionado por un valor de entidad. El segundo nodo hijo define dos respuestas. La primera respuesta se devuelve al usuario si el valor de la variable de contexto coincide con el valor especificado en la condición. De lo contrario, se devuelve la segunda respuesta.

    Este tipo de nodo estándar resulta útil para capturar preguntas sobre un determinado tema y, a continuación, en la respuesta raíz, realizar una pregunta de seguimiento que gestionan los nodos hijo. Por ejemplo, puede reconocer una pregunta de usuario sobre descuentos y hacer una pregunta de seguimiento sobre si el usuario es miembro de una asociación con la que la empresa tiene acuerdos especiales de descuento. Y los nodos hijo proporcionan distintas respuestas en función de la respuesta del usuario a la pregunta sobre la pertenencia a la asociación.

  • El segundo nodo raíz es un nodo con ranuras. También está condicionado por un valor de intención. Define un conjunto de ranuras, una para cada parte de la información que desea recopilar del usuario. Cada ranura realiza una pregunta para obtener la respuesta del usuario. Busca un valor de entidad específico en la respuesta del usuario a la solicitud, que luego guarda en una variable de contexto de ranura.

    Este tipo de nodo es útil para recopilar detalles que puede necesitar para realizar una transacción en nombre del usuario. Por ejemplo, si la intención del usuario es reservar un vuelo, las ranuras pueden recopilar la información sobre el lugar de origen y de destino, las fechas de viaje, etc.