Biblioteca de diálogos
SE APLICA A: SDK v4
Diálogos son un concepto central en el SDK, proporcionando formas de gestionar una conversación de larga duración con el usuario. Un cuadro de diálogo realiza una tarea que puede representar parte de o un subproceso conversacional completo. Puede abarcar solo un turno o varios, y puede abarcar un breve o largo período de tiempo.
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 cuadro de diálogo representa una tarea conversacional que se puede ejecutar hasta la finalización y devolver información recopilada.
- Cada cuadro de diálogo representa una unidad básica de flujo de control: puede comenzar, continuar y finalizar; pausar y reanudar; o que se cancele.
- Los diálogos son similares a un método o función en un lenguaje de programación. Puede pasar argumentos o parámetros al iniciar un cuadro de diálogo y el diálogo puede generar posteriormente un valor devuelto cuando finaliza.
Sugerencia
Si no está familiarizado con el desarrollo de bots con Bot Framework o la creación de una nueva experiencia conversacional, comience con el Bot Framework Composer. Para los bots existentes basados en el SDK que no fueron creados en Composer, considere exponer su bot como una funcionalidad y utilizar 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 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 un objeto de instancia de diálogo . De nuevo, esto debe leerse en el bot y guardarlo en la memoria cada turno.
Infraestructura de diálogo
Junto con varios tipos de diálogos, las siguientes clases están implicadas en el diseño y el control de las conversaciones. Aunque normalmente no es necesario interactuar directamente con estas clases, tener en cuentalas y 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 cuadro de diálogo activo. |
Resultado del turno del diálogo | Contiene información de estado de un cuadro de diálogo activo o activo 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álogos para facilitar la administración de las conversaciones del bot. Algunos de estos tipos se describen con más detalle más adelante en este artículo.
Tipo | Descripción |
---|---|
diálogo | Clase base para 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 uso general de contenedor que encapsula un conjunto de diálogos, lo que permite reutilizar el conjunto como un todo. 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 cuadro de diálogo del 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 cuadro de diálogo de componente. |
diálogo de solicitud | Pida al usuario que escriba y devuelva el resultado. Un mensaje se repetirá hasta que obtenga una entrada válida o se cancele. Están diseñados para trabajar con diálogos en cascada. |
diálogo adaptable | Un tipo de cuadro de diálogo de contenedor usado por Composer para proporcionar flujos conversacionales más naturales. No está pensado para usarse directamente en un bot orientado al SDK. |
diálogos de acciones | Tipo de diálogo que admite la implementación de acciones en Composer. No está pensado para usarse directamente en un bot orientado al SDK. |
diálogos de entrada | Tipo de diálogo que admite la implementación de acciones de entrada en Composer. No está pensado para usarse directamente en un bot orientado al 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 cuadro de diálogo está diseñado para funcionar también como una acción dentro de Composer. |
Importante
cuadros de diálogo adaptables se agregaron 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.
- Se recomienda usar Bot Framework Composer para crear diálogos conversacionales, para beneficiarse de 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.
- Desarrolla tu bot en uno de los lenguajes del SDK y usa el método de extensión run de tu 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 cuadro de 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 componentes y diálogos adaptables.
La estructura conceptual de los dos son bastante diferentes. Sin embargo, un bot composer puede usar ambos.
Identificadores de diálogo
Al agregar un cuadro de 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 cuadro de diálogo hace referencia a otro diálogo en 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 componentes 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 utilizar diálogos de componentes y de 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. Ahora hay disponible una versión más reciente de la funcionalidad de preguntas y respuestas como parte del lenguaje de Azure AI.
La respuesta a preguntas personalizada, una característica del lenguaje azure AI, es la versión actualizada del servicio QnA Maker. Para obtener más información sobre la compatibilidad con preguntas y respuestas en Bot Framework SDK, consulte Comprensión del lenguaje natural.
El cuadro de 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.
- Los avisos de seguimiento, también conocidos como avisos 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 mejore con el tiempo. El cuadro de diálogo QnA Maker admite comentarios explícitos para la característica de aprendizaje activo.
Para obtener más información, consulte:
- ¿Qué es QnA Maker?.
- En el SDK, cómo usar QnA Maker para responder a preguntas.
- En Composer, cómo agregar una base de conocimiento de QnA Maker al bot.
Diálogo de capacidad
Un diálogo de habilidades accede y gestiona una o varias habilidades. 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:
- En el SDK, Introducción a las capacidades.
- En Composer, Acerca de las capacidades.