Diseño y control del flujo de conversación

SE APLICA A: SDK v4

En una aplicación tradicional, la interfaz de usuario (UI) consta de una serie de pantallas y una sola aplicación o sitio web puede usar una o varias pantallas según sea necesario para intercambiar información con el usuario. La mayoría de las aplicaciones se inician con una pantalla principal a la que los usuarios llegan inicialmente y esa pantalla proporciona características de navegación que conducen a otras pantallas para realizar distintas funciones, como el inicio de un nuevo pedido, la exploración de productos o la búsqueda de ayuda.

Al igual que las aplicaciones y sitios web, los bots tienen una UI, pero esta consta de mensajes, en lugar de pantallas. Los mensajes pueden contener botones, texto y otros elementos o estar completamente basados en voz.

Mientras que una aplicación tradicional o un sitio web puede solicitar varios fragmentos de información en una pantalla a la vez, un bot recopilará la misma cantidad de información mediante varios mensajes. De este modo, el proceso de recopilación de información del usuario es una experiencia activa, donde el usuario tiene una conversación activa con el bot.

Un bot bien diseñado tendrá un flujo de conversación que parece natural. El bot debería ser capaz de controlar la conversación principal sin problemas, así como las interrupciones o cambios de temas de las conversaciones correctamente.

Flujo de conversación de procedimientos

Las conversaciones con un bot pueden centrarse en la tarea que el bot intenta realizar, lo que se denomina un flujo procedimental. El bot hace una serie de preguntas al usuario para recopilar toda la información que necesita para poder procesar la tarea.

En un flujo de conversación de procedimientos, usted define el orden de las preguntas y el bot las formulará en el orden definido. Puede organizar las preguntas en grupos lógicos para mantener el código Microsoft centralizado mientras se centra en guiar la conversación. Por ejemplo, puede diseñar un módulo que contenga la lógica que ayuda al usuario a examinar productos y un módulo independiente que contenga la lógica que ayuda al usuario a crear un nuevo pedido.

Puede estructurar estos módulos para que fluyan como quiera, desde una forma libre a una secuencial. Bot Framework SDK ofrece una biblioteca de diálogos que le permiten generar cualquier flujo de conversación que el bot necesite. La biblioteca incluye diálogos en cascada para crear una secuencia de pasos y solicitar preguntas a los usuarios. Para más información, consulte la biblioteca de diálogos.

Diagram comparing application GUI flow against bot conversation flow.

En una aplicación tradicional, todo comienza con la pantalla principal. La pantalla principal invoca la pantalla de nuevo pedido. La pantalla de nuevo pedido permanece en control hasta que se cierra o invoca otras pantallas, como la pantalla de búsqueda de productos. Si la pantalla de nuevo pedido se cierra, se devuelve al usuario a la pantalla principal.

En un bot que utiliza diálogos, todo comienza con el diálogo raíz. El diálogo raíz invoca el diálogo de nuevo pedido. En ese momento, el diálogo de nuevo pedido toma el control de la conversación y permanece en control hasta que se cierra o invoca otros diálogos, como el diálogo de búsqueda de productos. Si el diálogo de nuevo pedido se cierra, se devuelve el control de la conversación al diálogo raíz.

Para obtener un ejemplo de cómo implementar un flujo conversacional mediante las bibliotecas de diálogos, consulte Implementación de un flujo de conversación secuencial.

Control de las interrupciones

Puede resultar tentador suponer que los usuarios realizarán tareas de procedimientos una por una de forma clara y ordenada. Por ejemplo, en un flujo de conversación de procedimientos mediante diálogos, el usuario inicia en el diálogo raíz, invoca el diálogo de nuevo pedido. Pueden invocar el cuadro de diálogo de nuevo pedido desde el cuadro de diálogo de búsqueda de productos. A continuación, al seleccionar uno de los resultados enumerados en el cuadro de diálogo de búsqueda de productos, se invoca el cuadro de diálogo de nuevo pedido. Después de completar el pedido, vuelven al cuadro de diálogo raíz.

Aunque sería estupendo si los usuarios siempre recorriesen dicha ruta lógica y lineal, esto se produce raras veces. Personas no siempre se comunican en orden secuencial. Tienden a cambiar de opinión con frecuencia. Considere el ejemplo siguiente:

Example of a user asking a question in response to a question from the bot.

Aunque que el bot puede estar centrado en procedimientos, el usuario puede decidir hacer algo completamente diferente o formular una pregunta que no tenga ninguna relación con el tema actual. En el ejemplo anterior, el usuario hace una pregunta en lugar de facilitar la respuesta afirmativa o negativa que el bot espera. ¿Cómo debe responder el bot?

  • Insistir en que el usuario responda primero a la pregunta.
  • Pasar por alto todo lo que el usuario ha hecho hasta el momento, restablecer la pila de diálogos al completo y empezar desde cero intentando responder a la pregunta del usuario.
  • Intentar responder a la pregunta del usuario y, después, regresar a la pregunta con respuesta afirmativa o negativa para intentar reanudar la conversación desde ahí.

No hay ninguna respuesta correcta a esta pregunta, ya que la mejor solución dependerá de los aspectos concretos del escenario y de cómo espera el usuario que responda el bot. Consulte cómo controlar las interrupciones del usuario de un bot diseñado para controlar algunos tipos de interrupciones.

Expiración de una conversación

A veces resulta útil reiniciar una conversación desde el principio. Por ejemplo, si un usuario no responde después de un período de tiempo determinado. Entre los distintos métodos para finalizar una conversación se incluyen:

  • Realizar un seguimiento de la última vez que se recibió un mensaje de un usuario y borrar el estado si el tiempo es superior a una longitud preconfigurada al recibir el siguiente mensaje del usuario.
  • Usar una función de capa de almacenamiento, como la característica de período de vida de Cosmos DB, para borrar el estado tras un periodo de tiempo preconfigurado.

Para obtener más información, consulte Expirar una conversación.

Pasos siguientes

La administración de la navegación del usuario en los diálogos y diseñar un flujo conversacional de forma que permita a los usuarios lograr sus objetivos (incluso de forma no lineal) son un desafío fundamental del diseño del bot. El artículo Diseño de la navegación de bots revisa algunas dificultades habituales de una navegación mal diseñada y analiza estrategias para evitar estos problemas.