Biblioteca de diálogos

SE APLICA A: SDK v4

Los diálogos son un concepto Microsoft Entra en el SDK que proporcionan formas de administrar una conversación de larga duración con el usuario. Un diálogo realiza una tarea que puede representar parte o la totalidad de un subproceso conversacional. Puede incluir solo un turno o varios y puede abarcar un período de tiempo breve o largo.

En este artículo se describen las clases y características principales de la biblioteca de diálogos.

  • Debe estar familiarizado con el funcionamiento de los bots (lo que incluye qué es un turno) y la administración del estado.
  • Cada diálogo representa una tarea conversacional que se puede ejecutar hasta su finalización y puede devolver la información recopilada.
  • Cada diálogo representa una unidad básica de flujo de control: puede comenzar, continuar y finalizar, pausarse y reanudarse, o cancelarse.
  • Los diálogos son similares a un método o una función en un lenguaje de programación. Puede introducir argumentos o parámetros al iniciar un diálogo y este puede generar un valor devuelto al finalizar.

Sugerencia

Si no está familiarizado con el desarrollo de bots con Bot Framework o la creación de una nueva experiencia conversacional, comience con Bot Framework Composer. En el caso de los bots existentes creados en el SDK y no en Composer, considere la posibilidad de exponer el bot como una capacidad y usar Composer para el desarrollo de futuros bots.

Estado del diálogo

Los diálogos pueden implementar una conversación de varios turnos y, como tal, se basan en un estado persistente a lo largo de los turnos. Sin no hubiera estado en los diálogos, el bot no sabría dónde está en la conversación o la información que ya se ha recopilado.

Para conservar el lugar de un diálogo en la conversación, el estado del diálogo debe recuperarse y guardarse en la memoria cada turno. Esto se controla a través de un descriptor de acceso de propiedad de estado del diálogo definido en el estado de conversación del bot. Este estado del diálogo administra la información de todos los diálogos activos y los elementos secundarios de los diálogos activos. De ese modo, el bot puede continuar donde se quedó la última vez y controlar varios modelos de conversación.

En el tiempo de ejecución, la propiedad de estado del diálogo incluye información sobre dónde se encuentra el diálogo en su proceso lógico, incluida cualquier información recopilada internamente en forma de objeto de instancia de diálogo. De nuevo, esto debe leerse en el bot y guardarse en la memoria cada turno.

Infraestructura de diálogo

Además de varios tipos de diálogos, existen las siguientes clases en el diseño y el control de las conversaciones. Aunque normalmente no es necesario interactuar directamente con estas clases, conocerlas y saber cuál es su propósito es útil al diseñar diálogos para un bot.

Clase Descripción
Conjunto de diálogos Define una colección de diálogos que se pueden hacer referencia entre sí y trabajar en conjunto.
Contexto del diálogo Contiene información sobre todos los diálogos activos.
Instancia de diálogo Contiene información sobre un diálogo activo.
Resultado del turno del diálogo Contiene información sobre el estado de un diálogo activo en ese momento o recientemente. Si el diálogo activo ha finalizado, contiene su valor devuelto.

Tipos de diálogo

La biblioteca de diálogos proporciona algunos tipos de diálogo para facilitar la administración de las conversaciones del bot. Algunos de estos elementos se describen con más detalle posteriormente en este artículo.

Tipo Descripción
diálogo La clase base de todos los diálogos.
diálogo de contenedor La clase base de todos los diálogos de contenedor , como los diálogos de componente y adaptables. Mantiene un conjunto de diálogos interno y permite tratar una colección de diálogos como una unidad.
diálogo de componente Un tipo de diálogo de contenedor de uso general que encapsula un conjunto de diálogos, lo que permite reutilizar el conjunto como una unidad. Cuando se inicia un diálogo de componente, comienza con un diálogo designado en su colección. Cuando se completa el proceso interno, finaliza el diálogo de componente.
diálogo en cascada Define una secuencia de pasos, lo que permite al bot guiar a un usuario a través de un proceso lineal. Normalmente están diseñados para funcionar dentro del contexto de un diálogo de componente.
diálogo de solicitud Pide al usuario que proporcione información y devuelve el resultado. Las solicitudes se repiten hasta que obtienen una entrada válida o se cancelan. Están diseñados para trabajar con diálogos en cascada.
diálogo adaptable Un tipo de diálogo de contenedor que usa Composer para proporcionar flujos conversacionales más naturales. No está pensado para usarse directamente en un bot creado en el SDK.
diálogos de acciones Un tipo de diálogo que admite la implementación de acciones en Composer. No está pensado para usarse directamente en un bot creado en el SDK.
diálogos de entrada Un tipo de diálogo que admite la implementación de acciones de entrada en Composer. No está pensado para usarse directamente en un bot creado en el SDK.
diálogo de capacidad Automatiza la administración de los bots de capacidades desde un consumidor de capacidades. Composer admite directamente capacidades como acciones.
diálogo de QnA Maker Automatiza el acceso a una base de conocimiento de QnA Maker. Este diálogo está diseñado para funcionar también como una acción en Composer.

Importante

Los diálogos adaptables se añadieron por primera vez en la versión 4.9 del SDK de C#. Los diálogos adaptables admiten Bot Framework Composer y no están diseñados para usarse directamente en un bot creado en el SDK.

Patrones de diálogo

Hay dos patrones principales para iniciar y administrar diálogos desde un bot.

  1. Se recomienda usar Bot Framework Composer para crear diálogos conversacionales a fin de lograr funcionalidades conversacionales más naturales y fluidas. Para obtener más información, consulte Introducción a Bot Framework Composer. Estos bots todavía se pueden extender con código cuando sea necesario.
  2. Desarrolle el bot en uno de los lenguajes del SDK y use el método de extensión de ejecución del diálogo raíz. Para obtener información sobre el uso del método de ejecución con un diálogo de componente, consulta Acerca de los diálogos de componente y en cascada y Cómo implementar el flujo de conversación secuencial.

Pila de diálogos

Un contexto de diálogo contiene información sobre todos los diálogos activos e incluye una pila de diálogos, que actúa como una pila de llamadas para todos los diálogos activos. Cada diálogo de contenedor tiene un conjunto interno de diálogos que controla y, por tanto, cada diálogo de contenedor activo introduce un contexto de diálogo interno y una pila de diálogos como parte de su estado.

Aunque no accederá directamente a la pila, saber que existe y conocer su función le ayudará a comprender cómo funcionan varios aspectos de la biblioteca de diálogos.

Diálogos de contenedor

Un diálogo de contenedor puede formar parte de un conjunto de diálogos mayor. Cada contenedor tiene un conjunto de diálogos interno que también se administra.

  • Cada conjunto de diálogos crea un ámbito para resolver identificadores de diálogo.

  • El SDK implementa actualmente dos tipos de diálogos de contenedor: diálogos de componente y diálogos adaptables.

    La estructura conceptual de ambos es bastante diferente. Sin embargo, un bot de Composer puede usar ambos.

Id. de diálogo

Al añadir un diálogo a un conjunto de diálogos, se le asigna un identificador único dentro de ese conjunto. Los diálogos dentro de un conjunto se hacen referencia entre sí mediante sus identificadores.

Cuando un diálogo hace referencia a otro diálogo en el tiempo de ejecución, lo hace mediante el identificador del diálogo. El contexto del diálogo intenta resolver el identificador en función de los demás diálogos del conjunto de diálogos inmediato. Si no hay ninguna coincidencia, busca una en el conjunto de diálogos del contenedor o externo, etc. Si no se encuentra ninguna coincidencia, se genera una excepción o un error.

Diálogos de componente

Los diálogos de componente usan un modelo de secuencia para las conversaciones y cada diálogo del contenedor es responsable de llamar a otros diálogos del contenedor. Cuando la pila de diálogos interno del diálogo de componente está vacía, el componente finaliza.

Considere la posibilidad de usar diálogos de componente y en cascada si el bot tiene un flujo de control relativamente sencillo que no requiere un flujo de conversación más dinámico.

Acerca de los diálogos de componente y en cascada describe con más detalle los diálogos de componente, en cascada y de solicitud.

Otros diálogos

Los diálogos de capacidad y QnA Maker se pueden usar como diálogos independientes o como parte de una colección de diálogos en un contenedor.

Diálogo de QnA Maker

Nota:

Azure AI QnA Maker se retirará el 31 de marzo de 2025. A partir del 1 de octubre de 2022, no podrá crear nuevos recursos o bases de conocimiento de QnA Maker. Ya hay disponible una versión más reciente de la funcionalidad de preguntas y respuestas como parte de Lenguaje de Azure AI.

La respuesta a preguntas personalizadas, una característica de Azure AI Language, es la versión actualizada del servicio QnA Maker. Para obtener más información sobre la compatibilidad con preguntas y respuestas en el SDK de Bot Framework, consulte Reconocimiento del lenguaje natural.

El diálogo de QnA Maker accede a una base de conocimiento de QnA Maker y admite las características de seguimiento y aprendizaje activo de QnA Maker.

  • Las solicitudes de seguimiento, también conocidas como solicitudes de varios turnos, permiten que una base de conocimiento pida al usuario más información antes de responder a su pregunta.
  • Las sugerencias de aprendizaje activo permiten que la base de conocimiento pueda mejorar con el tiempo. El diálogo QnA Maker admite comentarios explícitos para la característica de aprendizaje activo.

Para obtener más información, consulte:

Diálogo de capacidad

Un diálogo de capacidad accede y administra una o varias aptitudes. El diálogo de capacidad expone las actividades del bot primario al bot de capacidad y devuelve las respuestas de la capacidad al usuario.

Para obtener más información, consulte:

Pasos siguientes