Recientemente me ha tocado interactuar con el bot framework v4 y me han sorprendido los cambios que le han hecho para soportar mejor las conversaciones y los diferentes diálogos que se pueden sostener con el usuario, además del cambio que se ha realizado para que los proyectos se ejecuten en ASP.Net Core con lo que abre más el abanico de servidores en los que se podría ejecutar este tipo de proyectos.
En mis andanzas utilizando este framework me he encontrado que en algunas ocasiones será necesario enviar mensajes a un chat de forma directa y sin necesidad de pasar por el portal dónde tienes publicado tu bot, un ejemplo de estos escenarios podría ser el querer enviar mensajes a usuarios en un canal personal o de grupo para recordar un proceso que el usuario solicito se pospusiera, para este tipo de escenarios se puede hacer uso del Bot Connector para facilitar el trabajo un poco más ya que siempre se puede utilizar el REST API, la principal ventaja de utilizar el Bot Connector es que el paquete nuget contiene ya todas las clases necesarias para generar el Activity que se le enviará al Bot Service.
Para enviar mensajes es necesario que se tenga información de la conversación con la que deseas interactuar, seguramente te preguntarás cómo obtener esa información, la forma más sencilla y segura es almacenar la información de la conversación la primera vez que se genera la interacción con el bot aunque es posible que tengas que manejar el caso en el que el ServiceUrl cambie (un evento poco frecuente según la documentación).
Hora del código
Para empezar, necesitamos generar el ConnectorClient donde pasaremos el id del bot y el secret del bot ambos datos deben estar en los settings de tu App Service.
|
|
Posteriormente crearemos un método para enviar el mensaje en el cual pasaremos toda la información referente a la conversación, recuerda también especificar el canal que desees que se utilice.
|
|
En este ejemplo se utilizará una aplicación de consola para enviar el mensaje, pero tú puedes hacerlo desde tu aplicación web o cliente.
|
|
Como siempre te dejo el código del ejemplo en mi repositorio en github
Ahora que ya sabes como enviar mensajes a una conversación podrías agregar funcionalidad para que tu usuario reciba recordatorios de tareas que le ha pedido a tu bot que posponga, la forma más sencilla la he encontrado en stackoverflow utilizando colas con un delay y una Azure Function que lea el mensaje de la cola una vez que está visible y ejecuta el envío del mensaje.
Me despido, pero me gustaría preguntarte ¿Te ha tocado algún escenario similar? ¿Cómo lo resolviste?
¡Saludos!
@SaturPimentel