Acerca de los consumidores de aptitudes
SE APLICA A: SDK v4
Un consumidor de aptitudes es un bot que puede llamar a una o más aptitudes. Con respecto a las aptitudes, un bot raíz es un bot orientado al usuario que también es un consumidor de aptitudes.
Desde la perspectiva del usuario, el bot raíz es el bot con el que interactúan. Desde la perspectiva de la aptitud, el consumidor de aptitudes es el canal por el que se comunica con el usuario. (Para más información, consulte el resumen de aptitudes).
Como consumidor de aptitudes, un bot raíz incluye cierta lógica adicional para administrar el tráfico entre él y una aptitud:
- Información de configuración de cada aptitud que el bot raíz utiliza.
- Un generador de identificadores de conversación que permite al bot raíz alternar entre la conversación que mantiene con el usuario y la que mantiene con una aptitud.
- Un cliente de aptitudes que puede empaquetar y reenviar actividades a un bot de aptitudes.
- Un controlador de aptitudes que puede recibir solicitudes y desempaquetar las actividades de un bot de aptitudes.
Administración de aptitudes
La administración del inicio y finalización de la ejecución de una sola aptitud se hace con unas pocas adiciones al consumidor de aptitudes. Se pueden tener escenarios más complicados, con varias aptitudes o hilos de conversación.
Un consumidor de aptitudes implementa al menos dos puntos de conexión HTTP:
- Un punto de conexión de mensajería recibe actividades del usuario o canal. Este es el punto de conexión de mensajería habitual que implementan todos los bots.
- Un punto de conexión de host de aptitudes para recibir actividades de una aptitud. Esto actúa como una dirección URL de devolución de llamada, la dirección URL del servicio a la que responde la aptitud. El consumidor de aptitudes necesita emparejar el código que recibe la solicitud del método HTTP de la aptitud con un controlador de aptitudes.
Descripciones de aptitudes
Para cada aptitud, agregue un objeto de aptitud de Bot Framework al archivo de configuración del consumidor de aptitudes. Cada uno tendrá un identificador, un identificador de aplicación y un punto de conexión de la aptitud.
Propiedad | Descripción |
---|---|
ID | Identificador o clave de la aptitud, específico del consumidor de aptitudes. |
Id. de aplicación | appId asignado al recurso de bot cuando la aptitud se registró en Azure. |
Punto de conexión de aptitud | El punto de conexión de mensajería de la aptitud. Esta es la dirección URL que el consumidor utilizará para comunicarse con la aptitud. |
Controlador de aptitudes y cliente de aptitudes
El consumidor de aptitudes usa un cliente de aptitudes para enviar actividades a una aptitud. El cliente:
- Toma una actividad para enviar a la aptitud, ya sea de un usuario o generada por el consumidor.
- Establece la dirección URL del servicio en la actividad enviada a la aptitud al punto de conexión del host de aptitudes del consumidor.
- Reemplaza la referencia de la conversación original por la referencia de la conversación entre el consumidor y la aptitud.
- Agrega un token de autenticación de bot a bot.
- Envía la actividad actualizada a la aptitud.
El consumidor de aptitudes usa un controlador de aptitudes para recibir actividades de una aptitud. El controlador:
- Controla los métodos de API de REST del servicio de canal.
- Aplica la validación de la autenticación y las notificaciones.
- Recupera la referencia de la conversación original.
- Genera una actividad para el adaptador del consumidor. Esta actividad indicará que la aptitud se ha completado o que es una actividad para reenviar al usuario.
Administrar una aptitud directamente
Debe agregar lógica al consumidor de aptitudes para realizar un seguimiento de las aptitudes activas. El consumidor elige cómo administra las aptitudes en general, si puede mantener varias aptitudes activas en paralelo o no, y así sucesivamente. Algunos escenarios específicos que se deben tener en cuenta son:
- Iniciar una nueva conversación entre el consumidor y la aptitud. (Se asociará con una conversación específica entre el usuario y el consumidor).
- Para pasar parámetros a una aptitud, establezca la propiedad value de la actividad inicial en la aptitud.
- Continuar una conversación existente entre el consumidor y la aptitud.
- Reconocer una actividad
endOfConversation
de la aptitud como señalización del final de una conversación entre el consumidor y la aptitud.- Para recuperar cualquier valor devuelto de una aptitud, compruebe la propiedad value de la actividad.
- Para comprobar por qué está finalizando la aptitud, compruebe el parámetro code de la actividad, que podría indicar que la aptitud encontró un error.
- Cancelar una aptitud del consumidor mediante el envío de una actividad
endOfConversation
a la aptitud.
Consulte cómo implementar un consumidor de aptitudes para un consumidor que administre una aptitud directamente.
Administrar una aptitud mediante un cuadro de diálogo de aptitudes
Si usa la biblioteca de diálogos, puede usar un diálogo de aptitudes para administrar una aptitud. Aunque el diálogo de aptitudes es el diálogo activo, reenviará las actividades a la aptitud asociada.
- Al crear el diálogo de aptitudes, use el parámetro opciones del diálogo para proporcionar toda la información que necesita el diálogo para administrar la aptitud, como el identificador de aplicación del consumidor, la dirección URL de devolución de llamada, el generador de identificadores de conversación que se va a usar, las propiedades de la aptitud, etc.
- Si desea administrar más de una aptitud como un diálogo, deberá crear un diálogo de aptitudes independiente para cada aptitud.
- A menudo, agregará el diálogo de aptitudes a un diálogo de componente.
- Para iniciar el diálogo de aptitudes, use el método begin del contexto del diálogo y proporcione el identificador del diálogo de aptitudes. Use el parámetro options para proporcionar la actividad que el consumidor enviará como la primera actividad a la aptitud.
- Puede cancelar o interrumpir el diálogo de aptitudes como lo haría con cualquier otro diálogo. Para obtener un ejemplo, consulte cómo controlar las interrupciones de usuario.
Consulte cómo usar un cuadro de diálogo para consumir una aptitud para un consumidor que use un cuadro de diálogo para administrar una aptitud.
Uso de un modo de entrega de respuestas esperadas
Los bots y las aptitudes usan REST estándar del sector y JSON a través de HTTPS para la comunicación. El flujo de procesamiento de actividad normal se inicia cuando el bot raíz recibe una publicación de un canal en el punto de conexión de mensajería. A continuación, el bot raíz envía la actividad a la aptitud para su procesamiento. Las respuestas de la aptitud se devuelven al punto de conexión del host de aptitudes del bot raíz, no al punto de conexión de mensajería. Por último, el bot raíz procesa las respuestas o se vuelve a publicar en el canal. Este flujo normal se puede modificar cambiando el modo de entrega de la actividad enviada a la aptitud. Si el modo de entrega se establece en "ExpectReplies", la aptitud no volverá a publicar en el punto de conexión del host de aptitud. En su lugar, todas las actividades de respuesta se serializan en el cuerpo de la respuesta. A continuación, el bot raíz recorre en iteración estas actividades y los procesa de forma similar a cómo lo habrían procesado el punto de conexión del host de aptitudes.
Para obtener información, consulte el modo de entrega en la especificación de actividad.