Implementación de controladores de actividad y cuadros de diálogo

Completado

La lógica para procesar la actividad se puede implementar de varias maneras. El SDK de Bot Framework proporciona clases que pueden ayudarle a crear bots que administran conversaciones mediante:

  • Controladores de actividad: métodos de evento que se pueden invalidar para controlar diferentes tipos de actividades.
  • Cuadros de diálogo: patrones más complejos para controlar conversaciones con estado y multiturno.

Controladores de actividad

En el caso de bots simples con interacciones cortas y sin estado, puede usar controladores de actividad para implementar un modelo de conversación controlado por eventos en el que las actividades desencadenan los eventos, como los usuarios que se unen a la conversación o un mensaje que se recibe. Cuando se produce una actividad en un canal, el servicio Bot Framework Service llama a la función Process Activity del adaptador del bot y pasa los detalles de la actividad. El adaptador crea un contexto de turno para la actividad y lo pasa al controlador de turnos del bot, que llama al controlador de actividad individual específico del evento.

A bot uses activity handlers to handle turns in a conversation

La clase base ActivityHandler incluye métodos de evento para los muchos tipos de actividad común, entre los que se incluyen:

  • Mensaje recibido
  • Miembros se unen a la conversación
  • Miembros abandonan la conversación
  • Reacción al mensaje recibido
  • Bot instalado
  • Otras...

Puede invalidar cualquier controlador de actividad para el que desee implementar la lógica personalizada.

Contexto de turno

Una actividad se produce en el contexto de un turno, que representa un único intercambio bidireccional entre el usuario y el bot. Los métodos de controlador de actividad incluyen un parámetro para el contexto de turno, que puede usar para tener acceso a la información pertinente. Por ejemplo, el controlador de actividad para una actividad de mensaje recibido incluye el texto del mensaje.

Más información

Para obtener más información sobre los controladores de actividad, consulte la documentación del SDK de Bot Framework.

Cuadros de diálogo

Para flujos de conversación más complejos en los que es necesario almacenar el estado entre turnos para habilitar una conversación multiturno, puede implementar cuadros de diálogo. La biblioteca de cuadros de diálogo del SDK de Bot Framework proporciona varias clases de diálogo que puede combinar para implementar el flujo de conversación necesario para el bot.

Hay dos patrones comunes para usar cuadros de diálogo para crear una conversación de bot:

Diálogos de componente

Un cuadro de diálogo de componente es un diálogo que puede contener otros diálogos, definidos en su conjunto de diálogos. A menudo, el cuadro de diálogo inicial del diálogo de componente es un diálogo en cascada, que define una serie secuencial de pasos para guiar la conversación. Es habitual que cada paso sea un cuadro de diálogo de solicitud para que el flujo conversacional consista en recoger datos de entrada del usuario de forma secuencial. Cada paso debe completarse antes de pasar la salida en el paso siguiente.

Por ejemplo, un bot de pedido de pizzas podría definirse como un cuadro de diálogo en cascada en el que se pide al usuario que seleccione el tamaño de la pizza, luego los ingredientes y, finalmente, se le pide que pague.

A component dialog contains a waterfall dialog for ordering a pizza

Cuadros de diálogo adaptados

Un cuadro de diálogo adaptable es otro tipo de diálogo de contenedor en el que el flujo es más flexible, lo que permite interrupciones, cancelaciones y cambios de contexto en cualquier punto de la conversación. En este estilo de conversación, el bot inicia un cuadro de diálogo raíz, que contiene un flujo de acciones (que pueden incluir ramas y bucles) y desencadenadores que pueden iniciarse mediante acciones o por un reconocedor. El reconocedor analiza la entrada de lenguaje natural (normalmente mediante el servicio Language Understanding) y detecta intenciones, que se pueden asignar a desencadenadores que cambian el flujo de la conversación —a menudo iniciando nuevos cuadros de diálogo secundarios, que contienen sus propias acciones, desencadenadores y reconocedores—.

Por ejemplo, el bot de pedido de pizzas podría comenzar con un cuadro de diálogo raíz que simplemente da la bienvenida al usuario. Cuando el usuario escribe un mensaje que indica que quiere pedir una pizza, el reconocedor detecta esta intención y usa un desencadenador para iniciar otro cuadro de diálogo que contiene el flujo de acciones necesarias para recopilar información sobre el pedido de pizza. En cualquier momento del cuadro de diálogo para el pedido de pizza, el usuario puede escribir un mensaje indicando que quiere hacer otra cosa (por ejemplo, cancelar el pedido), y el reconocedor del diálogo para el pedido de pizza (o su diálogo primario) puede utilizarse para desencadenar un cambio apropiado en el flujo conversacional.

An adaptive dialog for ordering a pizza

Nota:

El uso de cuadros de diálogo ofrece una mayor flexibilidad que la de un bot basado exclusivamente en controladores de actividad, pero puede ser más complejo de programar. Aunque puede usar el SDK de Bot Framework para implementar cuadros de diálogo en el código, puede considerar la posibilidad de usar Bot Framework Composer para compilar bots con cuadros de diálogo complejos, aprovechando su interfaz de diseño visual.