Control del flujo conversacional
Conozca cómo se procesa un diálogo cuando una persona interactúa con su asistente en tiempo de ejecución. Aprenda a utilizar el flujo de conversación para su beneficio y modifique el flujo si es necesario.
Puede incidir sobre el flujo de una conversación con las siguientes características:
Desambiguación
La desambiguación indica al asistente que solicite ayuda al cliente cuando más de un nodo de diálogo puede responder a la entrada de un cliente. En lugar de adivinar qué nodo debe procesar, el asistente comparte una lista de las principales opciones de nodo con el usuario y le solicita que elija la adecuada.

La desambiguación se desencadena cuando se cumplen las condiciones siguientes:
- Las puntuaciones de confianza de las intenciones de segundo puesto que se detectan en la entrada de usuario tienen un valor próximo a la puntuación de confianza de la intención superior.
- La puntuación de confianza de la intención superior es superior a 0,2.
Incluso cuando se cumplen estas condiciones, la desambiguación no se produce a menos que dos o más nodos independientes del diálogo cumplan los siguientes criterios:
- La condición de nodo incluye una de las intenciones que desencadenaron la desambiguación.
- Se proporciona una descripción del propósito del nodo para el nodo en el campo de nombre de nodo. (Como alternativa, se puede incluir una descripción en el campo del nombre del nodo externo.)
Es probable que se incluya en la lista de desambiguación un nodo con una condición de nodo booleana que se evalúe como true. Por ejemplo, si el nodo comprueba un tipo de entidad, y la entidad se menciona en la entrada del usuario, es elegible para ser incluida en la lista. Este tipo de nodos no desencadenan la desambiguación, pero, si se desencadena la desambiguación, es probable que se incluyan en la lista de desambiguación resultante.
Más información
- Ejemplo de desambiguación
- Edición de la configuración de desambiguación
- Elección de nodos para inhabilitar
- Inhabilitación de la desambiguación
- Gestión de ninguno de los anteriores
- Prueba de desambiguación
Ejemplo de desambiguación
Por ejemplo, hay un diálogo que tiene dos nodos con condiciones de intención que satisfacen las solicitudes de cancelación. Las condiciones son las siguientes:
- eCommerce_Cancel_Product_Order
- Customer_Care_Cancel_Account
Si el usuario dice i must cancel it today
, podrían detectarse las siguientes intenciones en la entrada:
[
{"intent":"Customer_Care_Cancel_Account","confidence":0.5602024316787719},
{"intent":"eCommerce_Cancel_Product_Order","confidence":0.46903514862060547},
{"intent":"Customer_Care_Appointments","confidence":0.29033891558647157},
{"intent":"General_Greetings","confidence":0.2894785046577454},
Si realiza la prueba desde el panel "Probar", puede pasar el ratón por encima del icono del ojo para ver los tres intentos principales que se reconocieron en la entrada de prueba.

Su asistente está seguro con una puntuación de 0.5618281841278076
(56%), de que el objetivo de usuario coincide con la intención #Customer_Care_Cancel_Account
. Si otra intención tiene una puntuación de confianza que
se acerca a la puntuación de esta intención principal, se activa la desambiguación. En este ejemplo, la intención #eCommerce_Cancel_Product_Order
tiene una puntuación de confianza de casi el 46 %.
Como resultado, cuando el usuario dice i must cancel it today
, es probable que ambos nodos de diálogo se consideren candidatos viables para responder. Para determinar qué nodo de diálogo se debe procesar, el asistente solicita
al usuario que elija uno. Y, para ayudar al usuario a elegir entre ambos, el asistente facilita un breve resumen de lo que hace cada nodo. El texto de resumen se extrae directamente del campo nombre del nodo. Si está y si se le
añade una descripción, el texto se obtiene del campo nombre de nodo externo en su lugar.
La descripción que se muestra en la lista de desambiguación proviene del nombre (o nombre de nodo externo) del último nodo que se procesa en la rama en la que se produce la coincidencia de intenciones. Para obtener más información, consulte Inhabilitar nodos de programa de utilidad a los que se ha saltado.

Tenga en cuenta que el asistente reconoce el término today
en la entrada de usuario como fecha, una mención de la entidad @sys-date
. Si el árbol de diálogo contiene un nodo que condiciona la entidad @sys-date
,
es probable que también se incluya en la lista de opciones de desambiguación. Esta imagen muestra que se incluye en la lista como la opción Información de fecha de captura.

Edición de la configuración de desambiguación
La desambiguación se habilita automáticamente para todos los nuevos conocimientos de diálogo. Puede cambiar los valores que se aplican automáticamente a la desambiguación en la página Opciones.
Para editar los valores de desambiguación, siga los pasos siguientes:
-
En Opciones, pulse Desambiguación.
-
En el campo Mensaje de desambiguación, añada texto para mostrarlo antes de la lista de opciones de nodo de diálogo. Por ejemplo, ¿Qué desea hacer?
-
En el campo Cualquier otra cosa, añada texto para mostrar como una opción extra que los usuarios puedan elegir si ninguna de las otras opciones del nodo de diálogo refleja lo que el usuario quiere hacer. Por ejemplo, Ninguno de los anteriores.
El mensaje debe ser corto para que se muestre en una línea con las otras opciones. El mensaje debe tener menos de 512 caracteres. Para obtener información sobre lo que el asistente hace si un usuario elige esta opción, consulte Gestión de ninguno de los anteriores.
-
Si desea limitar el número de opciones de desambiguación que se pueden mostrar a un usuario, en el campo Número máximo de sugerencias, especifique un número entre 2 y 5.
Los cambios se guardan automáticamente.
Puede utilizar la API para modificar más ajustes de desambiguación. Entre estos valores, se incluye la sensibilidad de desambiguación, que afecta la frecuencia con la que se desencadena la desambiguación y cuántas opciones se incluyen. Para obtener más información, consulte la Referencia de API.
Elección de nodos para no mostrarlos como opciones de desambiguación
Todos los nodos son aptos para incluirse en la lista de desambiguación.
- Se incluyen nodos en cualquier nivel de la jerarquía de árbol.
- Se incluyen nodos que condicionan intenciones, entidades, condiciones especiales, variables de contexto o cualquier combinación de estos valores.
Considere la posibilidad de ocultar algunos nodos de la lista de desambiguación.
-
Ocultar nodos raíz con condiciones
welcome
yanything_else
A menos que haya añadido funciones adicionales a estos nodos, no suelen ser opciones útiles para incluir en una lista de desambiguación.
-
Ocultar nodos de programa de utilidad a los que se ha saltado
El texto de la lista de desambiguación se rellena a partir del nombre de nodo (o nombre de nodo externo) del último nodo que se procesa en la rama en la que se cumple la condición de nodo.
No incluya nodos de programa de utilidad como, por ejemplo, dar las gracias al usuario, despedirse o solicitar comentarios de calidad de respuesta, en la lista de desambiguación en lugar de una frase que describa la finalidad del nodo raíz coincidente.
Por ejemplo, un nodo raíz con la condición de intención coincidente de
#store-location
salta a un nodo que pregunta a los usuarios si están satisfechos con la respuesta. Si el nodo#check_satisfaction
tiene un nombre de nodo y una desambiguación, el nombre del nodo al que se ha saltado se muestra en la lista de desambiguación. Como resultado,Check satisfaction
(Comprobar satisfacción) se muestra en la lista de desambiguación para representar la rama#store-location
en lugar del nombreGet store location
(Obtener ubicación del nodo) del nodo raíz. -
Ocultar nodos raíz que se encuentran solo en una entidad o en una variable de contexto
Solo un nodo con una intención coincidente puede desencadenar la desambiguación. Sin embargo, cuando se activa, cualquier nodo con una condición que coincida se incluye en la lista de desambiguación. Cuando el diálogo incluye nodos que condicionan las entidades, por ejemplo, el orden de los nodos de la jerarquía de árbol puede ser significativo de forma inesperada.
-
El orden de los nodos influye en si se activa o no la desambiguación. Examine el escenario empleado antes para introducir la desambiguación, por ejemplo. Si el nodo que condiciona a
@sys-date
se colocara más arriba en el árbol de diálogo que los nodos que condicionan a las intenciones#Customer_Care_Cancel_Account
y#eCommerce_Cancel_Product_Order
, la desambiguación nunca se activaría cuando un usuario introdujerai must cancel it today
. Su asistente consideraría que la fecha mencionada (today
) es más importante que las referencias de intención debido a la ubicación de los nodos correspondientes en el árbol. -
El orden de los nodos influye en qué nodos se incluyen en la lista de opciones de desambiguación. A veces un nodo no aparece en la lista de opciones de desambiguación según lo esperado. Esto puede suceder si un nodo al que también hace referencia un valor de condición no es apto para incluirse en la lista de desambiguación por algún motivo. Por ejemplo, una entidad puede activar un nodo situado antes en el árbol de diálogos pero que no está habilitado para la desambiguación. Si la misma entidad es la única condición para un nodo que está habilitado para la desambiguación, pero está más abajo en el árbol, entonces puede que no sea una opción de desambiguación porque su asistente nunca llega a él. Si se ha comparado con el nodo anterior y se ha omitido, es posible que el asistente no procese el nodo posterior.
-
Ocultar nodos completamente de la desambiguación
Puede evitar que cada nodo de un diálogo o de un nodo de diálogo individual se incluya en la lista de desambiguación.
Para inhabilitar por completo la desambiguación:
-
En Opciones, pulse Desambiguación.
-
Coloque el interruptor en Off.
Para evitar que un solo nodo de diálogo se incluya en la lista de desambiguación:
-
Haga clic en un nodo de diálogo para abrirlo en la vista de edición.
-
Pulse Valores.
-
Establezca el conmutador Mostrar nombre de nodo en Desactivado.
Más Si ha añadido una descripción de resumen de nodo al campo de nombre de nodo externo en lugar de al campo de nombre, elimínela.
El campo nombre de nodo externo tiene dos finalidades. Ofrece a los clientes información sobre el nodo si se incluye en una lista de desambiguación. También describe el nodo en un resumen de la conversación que se comparte con los agentes del servicio de atención al cliente cuando se transfiere una conversación a una persona. El campo nombre de nodo externo solo se puede ver en conocimientos que forman parte de una instancia de plan de pago. Si el campo nombre de nodo externo contiene texto, su texto se utiliza, independientemente de que haya texto en el campo nombre.
Para cada nodo, pruebe casos de ejemplo en los que espera que el nodo se incluya en la lista de opciones de desambiguación. Las pruebas le dan la oportunidad de ajustar el orden de los nodos u otros factores que puedan afectar al funcionamiento de la desambiguación en tiempo de ejecución. Consulte Prueba de desambiguación.
Prioridad de un nodo sobre la desambiguación
Algunos nodos son lo suficientemente importantes para su cliente como para que desee que se devuelvan por sí solos, fuera de una lista de desambiguación, cuando el asistente esté seguro de que el nodo satisface una necesidad del cliente.
Por ejemplo, puede que tenga un nodo que coincida con la intención #stolen_card
. Siempre que un mensaje entrante sugiere que un cliente desea notificar el robo de una tarjeta de crédito, no desea que la respuesta de su asistente
se pierda en una lista de opciones de desambiguación. Usted quiere que el asistente responda con una única respuesta que ayude al cliente a abordar este asunto urgente.
Para diseñar el diálogo para priorizar un único nodo sobre la desambiguación, realice los pasos siguientes:
-
En el nodo que condiciona la intención, pulse Personalizar para habilitar varias respuestas condicionadas.
-
Añada una respuesta condicionada con la siguiente condición:
intent.confidence > n
donde
n
es una puntuación de confianza que tiene sentido para los datos de entrenamiento. Por ejemplo:intent.confidence > 0.7
-
Mueva la respuesta para que sea la primera de la lista de respuestas condicionadas.
-
Pulse el icono de engranaje para personalizar la respuesta condicionada.
-
En la sección Respuestas del asistente, abra el editor contextual.
-
Añada la siguiente variable de contexto:
Variable de contexto Variable Valor system
{"prevent_disambiguation":true}
-
Pulse Guardar.
Alternativamente, puede añadir un nodo de nivel raíz con una condición como:
#stolen_card && intent.confidence > 0.7
Coloque este nodo en el árbol más alto que el nodo que condiciona
#stolen_card
, lo que permite incluir el nodo en una lista de desambiguación. -
Pruebe su diálogo. Asegúrese de que se devuelve la respuesta del nodo en lugar de una lista de desambiguación cuando se alcance el umbral de puntuación de confianza adecuado.
Gestión de ninguno de los anteriores
Cuando un usuario pulsa la opción Ninguno de los anteriores, el asistente elimina las intenciones reconocidas en la entrada de usuario del mensaje y vuelve a enviarlas. Esta acción suele activar el nodo anything else en el árbol de diálogo.
Para personalizar la respuesta que se devuelve en esta situación, puede añadir un nodo raíz con una condición que busca una entrada de usuario sin intenciones reconocidas (las intenciones se eliminan, se recuerdan) y contiene una propiedad
suggestion_id
. El asistente añade una propiedad suggestion_id
cuando se desencadena la desambiguación.
Añada un nodo raíz con la condición siguiente:
intents.size()==0 && input.suggestion_id
Esta condición sólo se cumple si la entrada desencadena un conjunto de opciones de desambiguación de las que el usuario dice que ninguna coincide con el objetivo.
Añade una respuesta que indique a los usuarios que sabes que comprendes que ninguna de las opciones sugeridas satisfacía sus necesidades y toma las medidas oportunas.
Una vez más, la ubicación de los nodos en el árbol es importante. Si un nodo condicionado por un tipo de entidad que se menciona en la entrada de usuario está por encima de este nodo en el árbol, se muestra su respuesta.
Prueba de desambiguación
Al realizar la prueba, el orden en el que se listan las opciones puede cambiar. De hecho, las propias opciones que se incluyen en la lista de desambiguación pueden cambiar de una prueba a otra.
Este comportamiento es intencionado. Como parte del desarrollo que se está llevando a cabo para ayudar al asistente a aprender automáticamente de las elecciones del usuario, las elecciones y su orden en la lista de desambiguación se están aleatorizando a propósito. Cambiar el orden ayuda a evitar el sesgo que puede introducir un porcentaje de personas que siempre eligen la primera opción sin revisar cuidadosamente todas sus opciones de antemano.
Para probar la desambiguación, siga los pasos siguientes:
-
En el panel "Pruébelo", introduzca un enunciado de prueba que sea un buen candidato para la desambiguación, lo que significa que dos o más de sus nodos de diálogo están configurados para dirigirse a enunciados como éste.
-
Si la respuesta no contiene una lista de opciones de nodo de diálogo entre las que puede elegir, compruebe que ha añadido información de resumen a los campos de nombre de nodo (o nombre de nodo externo).
-
Si todavía no se activa la desambiguación, podría ser que las puntuaciones de confianza de los nodos no tengan valores tan cercanos como se pensaba.
-
Para ver las puntuaciones de confianza de las tres intenciones principales que se han detectado en la entrada, pase el puntero del ratón sobre el icono en forma de ojo en el panel "Pruébelo".
-
Para ver las puntuaciones de confianza de todos los intentos que se detectan en la entrada de usuario, añada temporalmente
<? intents ?>
al final de la respuesta de nodo para un nodo que sepa que se va a desencadenar.Esta expresión SpEL muestra las intenciones detectadas en la entrada de usuario como una matriz. La matriz incluye el nombre de la intención y el nivel de confianza que tiene su asistente, en que la intención refleja el objetivo previsto por el usuario.
-
Para ver qué entidades, si las hay, se han detectado en la entrada del usuario, puede sustituir temporalmente la respuesta actual por una respuesta de texto único que contenga la expresión SpEL
<? entities ?>
.Esta expresión SpEL muestra las entidades detectadas en la entrada de usuario como una matriz. La matriz incluye el nombre de la entidad, la ubicación de la mención de la entidad, la cadena de mención de la entidad y el nivel de confianza de que el término sea una mención del tipo de entidad especificado.
-
Para ver los detalles de todos los artefactos, incluidas otras propiedades como el valor de variable de contexto en el momento de la llamada, inspeccione toda la respuesta de la API. Consulte Ver los detalles de la llamada de API.
-
-
Elimine temporalmente la descripción en el campo de nombre (o campo de nombre de nodo externo ) de al menos uno de los nodos que prevé como opción de desambiguación.
-
Vuelva a escribir la expresión de prueba en el panel "Pruébelo".
Si ha añadido la expresión
<? intents ?>
a la respuesta, el texto incluye una lista de las intenciones que su asistente ha reconocido en el enunciado de prueba, así como la puntuación de confianza de cada una de ellas.Intenciones y puntuaciones de confianza
Después de finalizar la prueba, elimine las expresiones SpEL que haya añadido a las respuestas de nodo, o vuelva a añadir las respuestas originales que haya sustituido por expresiones y vuelva a rellenar los campos nombre o nombre de nodo externo del que ha eliminado el texto.
Digresiones
Se produce una digresión cuando un usuario está en un flujo de diálogo que se dirige a un objetivo, pero cambia los temas para iniciar un flujo de diálogo que se dirige a un objetivo diferente. Si ninguno de los nodos de la rama del diálogo coincide con el objetivo de la última entrada del usuario, la conversación comprueba las condiciones del nodo raíz para una coincidencia adecuada. Los valores de digresión disponibles para el nodo, ofrecen la posibilidad de personalizar aún más este comportamiento.
Con los valores digresión, puede permitir que la conversación vuelva al flujo del diálogo que se interrumpió cuando se produjo la digresión. Por ejemplo, el usuario podría haber solicitado un nuevo teléfono, pero cambiar el tema para preguntar sobre tabletas electrónicas. Su cuadro de diálogo puede responder a la pregunta sobre las tabletas y, a continuación, devolver al usuario al punto donde lo dejó con el pedido telefónico. El permitir las digresiones y volver al punto en donde se encontraba, ofrece a los usuarios un mayor control sobre el flujo de la conversación en tiempo de ejecución. Por lo tanto los usuarios pueden cambiar el tema, seguir el flujo sobre el tema no relacionado hasta su fin y, a continuación, volver a donde se encontraban con anterioridad. El resultado es un flujo de diálogo que simular mejor una conversación entre humanos.
Antes de empezar
A medida que prueba en general el diálogo, decide cuándo y cómo tiene sentido permitir digresiones y volver de dichas digresiones. Los siguientes controles para las digresiones se aplican a los nodos de forma automática.
-
Cada nodo raíz en el diálogo está configurado para permitir tratar digresiones de forma predeterminada. Los nodos hijo no pueden ser el destino de una digresión.
-
Los nodos con ranuras están configurados para impedir las digresiones hacia fuera. Todos los otros nodos están configurados para permitir las digresiones hacia fuera. Sin embargo, la conversación no permite la digresión hacia fuera de un nodo en las siguientes circunstancias:
-
Si alguno de los nodos hijos del nodo actual contiene la condición
anything_else
otrue
. Estas condiciones son especiales en el sentido de que siempre se evalúan para que sean verdaderas. Debido a su comportamiento predeterminado, a menudo se utilizan en diálogos para forzar que un nodo padre evalúe un nodo hijo específico de forma sucesiva. Para evitar romper la lógica de flujo de diálogo existente, las digresiones no están permitidas en este caso. Para permitir las digresiones hacia fuera de este nodo, primero debe cambiar la condición del nodo hijo a un valor distinto. -
Si el nodo está configurado para saltar a otro nodo u omitir la entrada del usuario después de ser procesada. La sección de paso final de un nodo especifica lo que ocurre después de procesar el nodo. Cuando el diálogo está configurado para saltar directamente a otro nodo, a menudo es para asegurarse de que se sigue una secuencia específica. Y cuando el nodo está configurado para saltar la entrada de usuario, es equivalente a obligar al diálogo a procesar el primer nodo hijo después del nodo actual de forma sucesiva. Para evitar romper la lógica del flujo del diálogo existente, no se permiten digresiones en ninguno de estos casos. Para permitir las digresiones hacia fuera de este nodo, primero debe cambiar lo que se especifica en la sección del paso final.
-
Personalización de digresiones
No se define un inicio ni un fin de una digresión. Es el usuario quien controla el flujo de la digresión en tiempo de ejecución. Puede especificar cómo se incluye cada nodo en una digresión dirigida por el usuario. Para cada nodo, puede configurar si una digresión:
- Empieza desde y sale del nodo
- Que comienza en otro lugar puede apuntar y entrar en el nodo
- Que comienza en otro lugar y entra en el nodo debe volver al flujo de diálogo interrumpido una vez finalizado el flujo de diálogo actual
Para cambiar el comportamiento de una digresión para un nodo individual, siga estos pasos:
-
Pulse el nodo para abrir su vista de edición.
-
Pulse Personalizar y, a continuación, pulse el separador Digresiones.
Las opciones de configuración difieren en función de si el nodo que está editando es un nodo raíz, un nodo hijo, un nodo con hijos o un nodo con ranuras.
Digresiones hacia fuera de este nodo
Si las circunstancias listadas con anterioridad no se aplican, tiene las siguientes opciones:
-
Todos los tipos de nodo: Elija si desea permitir a los usuarios las digresiones hacia fuera del nodo actual antes de alcanzar el final de la rama del diálogo actual.
-
Todos los nodos que tienen hijos: Elige si quieres que la conversación vuelva al nodo actual si se ha mostrado la respuesta del nodo y sus nodos hijos son incidentes en el objetivo. Establezca el conmutador Permitir volver desde digresiones desencadenadas después de esta respuesta de nodo en No para evitar que el diálogo vuelva al nodo actual y continúe procesando su rama.
Por ejemplo, si el usuario pregunta
Do you sell cupcakes?
y se muestra la respuestaWe offer cupcakes in a variety of flavors and sizes
antes de que el usuario cambie de tema, es posible que no desee que el cuadro de diálogo vuelva al punto donde se quedó. Sobre todo, si los nodos secundarios se dirigen a posibles preguntas de seguimiento del usuario y pueden ignorarse con seguridad.Sin embargo, si el nodo se basa en sus nodos hijo para hacer frente a la pregunta, es posible que desee forzar la conversación para volver y continuar el proceso de los nodos en la rama actual. Por ejemplo, la respuesta inicial podría ser
We offer cupcakes in all shapes and sizes. Which menu do you want to see: gluten-free, dairy-free, or regular?
. Si el usuario cambia de tema, es posible que desee que el cuadro de diálogo vuelva para que el usuario pueda elegir un tipo de menú y obtener la información que deseaba. -
Nodos con ranuras: Elija si desea permitir a los usuarios las digresiones hacia fuera del nodo antes de haber cumplimentado todas las ranuras. Establezca el conmutador Permitir digresiones hacia fuera al cumplimentar ranuras en Sí para habilitar las digresiones.
Si se habilita, cuando la conversación vuelve desde la digresión, se visualiza la solicitud para la siguiente ranura no cumplimentada para que el usuario continúe proporcionado información. Si se inhabilita, se ignoran las entradas que el usuario envía y que no contengan un valor que sirva para cumplimentar una ranura. Sin embargo, definiendo manejadores de ranura puede tratar preguntas no solicitadas que anticipa que los usuarios podrían realizar mientras interactúan con el nodo. Para obtener más información, consulte Adición de ranuras.
-
Nodos con ranuras: Elija si se permite al usuario hacer una digresión si vuelve al nodo actual seleccionando la casilla de verificación Sólo hacer digresión desde ranuras a nodos que permiten devoluciones.
Cuando se selecciona, como el diálogo busca un nodo para responder la pregunta no relacionada del usuario, ignora los nodos raíz que no están configurados para volver después de la digresión. Seleccione esta casilla si desea evitar que los usuarios puedan abandonar permanentemente el nodo antes de que terminen de rellenar los huecos requeridos.
Digresiones hacia dentro este nodo
Tiene las siguientes opciones sobre cómo se comportarán las digresiones hacia dentro de un nodo:
-
Impedir a los usuarios las digresiones hacia dentro del nodo. Consulte Inhabilitación de digresiones hacia dentro de un nodo raíz para obtener más detalles.
-
Cuando se permiten las digresiones hacia dentro de un nodo, elija si el diálogo debe volver al flujo de diálogo del que se alejó con una digresión. Una vez que la rama del nodo actual ha terminado de procesarse, el flujo de diálogo vuelve al nodo interrumpido. Para que el diálogo vuelva después, seleccione Volver después de la digresión.
-
-
Haga clic en Aplicar.
-
Utilice el panel "Pruébelo" para probar el comportamiento de la digresión.
Nuevamente, no puede definir el inicio y el final de una digresión. El usuario controla dónde y cuándo ocurrirán las digresiones. Puedes aplicar configuraciones que determinen cómo participa un único nodo en una. Como las digresiones son tan imprevisibles, es difícil saber cómo influyen tus decisiones de configuración en la conversación general. Para ver realmente el impacto de las opciones que realiza, debe probar el diálogo.
Los nodos #reservation y #cuisine representan dos ramas del diálogo que pueden participar en una única digresión dirigida por el usuario. Los valores de digresión que se configuran para cada nodo individual son los que hacen posible este tipo de digresión en tiempo de ejecución.
Sugerencias sobre el uso de digresiones
Mensaje de retorno personalizado: En los nodos en los que se habilitan los retornos desde digresiones, considere la posibilidad de añadir un texto que indique a los usuarios a dónde están volviendo cuando lo dejaron en un flujo de diálogo anterior. En su respuesta de texto, utilice una sintaxis especial para añadir dos versiones de la respuesta.
Si no se añade un mensaje, se muestra el mismo texto de respuesta por segunda vez para indicar a los usuarios que han vuelto al nodo del que se habían alejado. Puedes aclarar a los usuarios que han vuelto al hilo de conversación original especificando un mensaje único que se mostrará cuando vuelvan.
Por ejemplo, si la respuesta de texto original para el nodo es What's the order number?
, puede mostrar un mensaje como Now let's get back to where we left off. What is the order number?
cuando los usuarios vuelvan
al nodo.
Para ello, utilice la sintaxis siguiente para especificar la respuesta de texto de nodo:
<? (returning_from_digression)? "post-digression message" : "first-time message" ?>
Por ejemplo:
<? (returning_from_digression)? "Now, let's get back to where we left off.
What is the order number?" : "What's the order number?" ?>
No puede incluir expresiones SpEL ni sintaxis abreviada en las respuestas de texto que añada. De hecho, la sintaxis abreviada no se puede utilizar en absoluto. Debe crear el mensaje concatenando las series de texto y la sintaxis de expresión SpEL completa juntos para formar la respuesta completa.
Por ejemplo, utilice la siguiente sintaxis para incluir una variable de contexto en una respuesta de texto que normalmente especificaría como What can I do for you, $username?
:
<? (returning_from_digression)? "Where were we, " +
context["username"] + "? Oh right, I was asking what can I do
for you today." : "What can I do for you today, " +
context["username"] + "?" ?>
Para obtener más información sobre la sintaxis de expresión SpEL, consulte Expresión para acceder a objetos.
Impedir retornos: En algunos casos, es posible que desee evitar el retorno a un flujo de conversación interrumpido en función de una opción que el usuario realiza en el flujo de diálogo actual. Puede utilizar una sintaxis especial para evitar un retorno desde un nodo específico.
Por ejemplo, supongamos que tiene un nodo condicionado a #General_Connect_To_Agent
o una intención similar. Cuando se activa, si desea obtener la confirmación del usuario antes de transferirlo a un servicio externo, puede añadir
una respuesta como Do you want me to transfer you to an agent now?
. Puede añadir dos nodos hijos que condicionen a #yes
y #no
.
La mejor forma de gestionar las digresiones para este tipo de rama consiste en establecer el nodo raíz de modo que permita retornos de digresión. Sin embargo, en el nodo #yes
, incluya la expresión SpEL <? clearDialogStack() ?>
en la respuesta. Por ejemplo:
OK. I will transfer you now. <? clearDialogStack() ?>
Esta expresión SpEL impide que se produzca el retorno de digresión desde este nodo. Cuando se solicita una confirmación, si el usuario responde positivamente, se muestra la respuesta adecuada y el flujo de diálogo que se interrumpió no se reanuda. Si el usuario responde negativamente, se devuelve al usuario al flujo que se interrumpió.
Inhabilitación digresiones en un nodo raíz
Cuando el flujo de una digresión alcanza un nodo raíz, sigue el curso del diálogo que está configurado para dicho nodo. El flujo puede procesar una serie de nodos hijo antes del final de la rama de nodo y, a continuación, volver al flujo de diálogo que se ha interrumpido. Al realizar pruebas, es posible que encuentre que un nodo raíz se desencadena con demasiada frecuencia, en momentos inesperados, o que el diálogo sea demasiado complejo y envíe al usuario demasiado lejos del curso. Si determina que sería mejor no permitir que los usuarios lo utilizasen para digresiones, configure el nodo raíz para no permitir su uso por parte de las digresiones.
Para inhabilitar las digresiones hacia dentro de un nodo raíz, siga estos pasos:
- Pulse para abrir el nodo raíz que desea editar.
- Pulse Personalizar y, a continuación, pulse el separador Digresiones.
- Desactive la opción Permitir digresiones en este nodo.
- Haga clic en Aplicar.
Si decide que desea impedir las digresiones hacia dentro de varios nodos raíz, pero no desea editar cada uno individualmente, puede añadir los nodos a una carpeta. En la página Personalizar de la carpeta, puede desactivar el interruptor Permitir digresiones en este nodo para aplicar la configuración a todos los nodos. Para obtener más información, consulte Organización del diálogo con carpetas.
Consideraciones sobre el diseño
Evite la proliferación de nodos de retorno: muchos diseñadores de diálogos incluyen un nodo con una condición true
o anything_else
al final de cada rama del diálogo como una manera de evitar que los
usuarios se queden atrapados en la rama. Este diseño devuelve un mensaje genérico si la entrada de usuario no coincide con nada de lo que se prevé e incluye un nodo de diálogo específico para tratar esta situación. Sin embargo, los usuarios
no pueden realizar digresiones hacia fuera de flujos de diálogo que utilizan este enfoque.
Evalúe las ramas que utilizarán esta aproximación para determinar si sería mejor permitir las digresiones hacia fuera de la rama. Si la entrada del usuario no coincide con nada de lo que usted había previsto, podría encontrar una coincidencia
con un flujo de diálogo totalmente diferente en su árbol. En lugar de responder con un mensaje genérico, podría poner el resto del diálogo a disposición de la entrada del usuario para intentar tratarla. Además, el nodo Anything else
a nivel raíz siempre puede responder a la entrada que no puede responder ninguno de los otros nodos raíz.
Reconsidere los saltos para un nodo de cierre: muchos diálogos se diseñan de modo que realicen una pregunta de cierre estándar como, por ejemplo, Did I answer your question today?
. Los usuarios no pueden realizar
una digresión hacia fuera de los nodos que están configurados para saltar a otro nodo. Por ello, si configura todos sus nodos al final de la rama para saltar a un nodo de cierre común, no se pueden realizar digresiones. Considere el seguimiento
de satisfacción del usuario a través de métricas o por otros medios.
Probar posibles cadenas de digresión: Si un usuario hace una digresión desde el nodo actual a otro nodo que permite digresiones, el usuario podría hacer una digresión desde ese otro nodo, y repetir este patrón. Si el nodo inicial de la cadena de digresión está configurado para volver después de la digresión, el usuario al final tendría que ser conducido al nodo del diálogo actual. De hecho, los siguientes nodos de la cadena que están configurados para no volver se excluyen y no se tienen en cuenta como destinos de la digresión. Pruebe situaciones que encadenen varias digresiones para determinar si los nodos individuales funcionan tal como espera.
Las condiciones de paso no se reevalúan al volver la digresión: Como la condición de paso ya se ha evaluado antes de la digresión, no se vuelve a evaluar al volver la digresión. Si su flujo conversacional requiere que la condición del paso sea evaluada de nuevo, entonces añada la repregunta en el mismo paso donde comenzó la digresión. Si no desea volver a preguntar en el mismo paso y para evitar retornos de digresión, realice los siguientes pasos:
- Vaya a Inicio > Acciones > Creadas por usted.
- Seleccione la acción en la que desea evitar los retornos de digresión.
- Haz clic en Configuración de la acción.
- Cambia el conmutador a Activado en Cambiar tema de conversación.
- Seleccione Nunca volver a la acción original después de completar esta acción.
- Pulse Guardar.
El nodo actual tiene prioridad: Los nodos fuera del flujo actual sólo se consideran objetivos de digresión si el flujo actual no puede abordar la entrada del usuario. En un nodo con ranuras que permite digresiones de distancia, dejar claro a los usuarios qué información es necesaria, y para agregar declaraciones de confirmación que se muestran después de que el usuario proporciona un valor.
Todas las ranuras se pueden cumplimentar durante el proceso de cumplimentación de las ranuras. Por ello, una ranura podría capturar la entrada de usuario de forma inesperada. Por ejemplo, podría tener un nodo con ranuras que recopila la información
necesaria para realizar una reserva para una cena. Una de las ranuras podría recopilar información de la fecha. El usuario puede preguntar What's the weather meant to be tomorrow?
. Podría tener un nodo raíz que condiciona a
#previsión que podría responder al usuario. Sin embargo, como la entrada del usuario incluye la palabra tomorrow
y se está procesando el nodo de reserva con franjas horarias, su asistente asume que el usuario está proporcionando
o actualizando la fecha de reserva en su lugar. El nodo actual siempre tiene siempre una mayor prioridad. Si define una sentencia de confirmación clara, por ejemplo, Ok, setting the reservation date to tomorrow,
(De
acuerdo, estableciendo la fecha de reserva para mañana), es más probable que el usuario se dé cuenta de la confusión y corrija el malentendido.
Si el usuario proporciona un valor que no espera ninguna de las ranuras, es posible que coincida con un nodo raíz no relacionado al que el usuario nunca pretendía digregar.
Asegúrese de hacer muchas pruebas a medida que configura el comportamiento de la digresión.
Cuándo utilizar digresiones en lugar de gestores de ranuras: Para preguntas generales que puedan hacer los usuarios, utilice un nodo raíz que permita digresiones en él, procese la entrada y luego vuelva al flujo que estaba en curso. En el caso de los nodos con franjas horarias, trate de anticiparse a los tipos de preguntas relacionadas que los usuarios podrían querer hacer al rellenar las franjas horarias, y resuélvalas añadiendo gestores al nodo.
Por ejemplo, si el nodo con ranuras recopila la información necesaria para completar una reclamación de seguros, es posible que desee añadir gestores que aborden preguntas comunes sobre seguros. Sin embargo, para preguntas sobre cómo obtener ayuda, o la ubicación de sus tiendas, o la historia de su empresa, utilice un nodo de nivel raíz.