Usos
Aprovechamiento de los servicios de bots de Azure, mayor personalización de bots, no dependencia de Power Virtual Agents.
Dato curioso
El Bot Framework SDK es de código abierto, y está considerado una de las mejores herramientas libres para el desarrollo de chatbots, junto con RASA.
Creación y prueba local del bot
Prerequisitos
Python 3.8.3 y Bot Framework Emulator.
Pasos y posibles errores
Se pueden seguir los pasos descritos en la documentación oficial.
El despliegue en Windows puede requerir versiones superiores a la 14 de Microsoft Visual C++, para lo cual se recomienda, en los registros de los errores, instalar la última versión de Microsoft C++ Build Tools. Específicamente el SDK de Windows que corresponda a la versión instalada y la última versión de Build Tools.
Resumen de comandos usados en Windows
Creación de un ambiente virtual llamado BotFrameworkSDK.
python -m venv BotFrameworkSDK
Activación del ambiente virtual.
BotFrameworkSDK\Scripts\activate
Librerías necesarias de Python en el ambiente.
pip install botbuilder-core
pip install asyncio
pip install aiohttp
pip install cookiecutter==1.7.0
Clonación de la plantilla de un bot básico: echo-bot.cookiecutter https://github.com/microsoft/BotBuilder-Samples/releases/download/Templates/echo.zip
En seguida se coloca el nombre y descripción del bot.
Nombre: echo-bot.
Descripción: responde la misma entrada del usuario.
En este punto se debió crear una carpeta dentro de BotFrameworkSDK llamada echo-bot. Nos ubicamos en esa carpeta.
Instalamos requerimientos.
pip install -r requirements.txt
Finalmente, ejecutamos la app del bot.
python app.py
En este momento debe aparecer en la terminal el nombre de la dirección local donde está corriendo la app. Ejemplo: http://localhost:3978
Para probar el bot en el emulador, se ingresa http://localhost:3978/api/messages en el campo de la URL (si ya se configuraron, se agregan el ID de la app y la contraseña).
Despliegue en Azure
Aquí asumimos que ya se desplegó el bot localmente en la carpeta echo-bot
Paso 1. Preparar recursos en Azure.
Se deben configurar un recurso de Azure bot y otro de Web App. Ambos en el mismo grupo de recursos. Todo se puede configurar en plan gratuito. Para enlazar los recursos se debe copiar la URL de la app (por ejemplo: https://echobot.azurewebsites.net/api/messages) en la configuración del bot, donde dice messaging endpoint, activando la casilla Enable Streaming Endpoint.
Colocar el siguiente contenido en el startup command de la configuración de la app.
gunicorn –bind 0.0.0.0 –worker-class aiohttp.worker.GunicornWebWorker –timeout 600 app:APP
Paso 2. Preparar carpeta .zip local de despliegue
En la configuración del bot, mencionada anteriormente, se deben extraer Microsoft App ID y crear una nueva contraseña de la app. Esos valores deben colocarse en el archivo config de la carpeta local echo-bot.
Se debe crear, desde un IDE, un archivo llamado .deployment con el siguiente contenido.
[config]
SCM_DO_BUILD_DURING_DEPLOYMENT = true
Este archivo sirve para que el archivo de requerimientos se instale adecuadamente.
Finalmente, se crea el archivo echo-bot.zip con el contenido de la carpeta echo-bot y se despliega con el siguiente comando del CLI de Azure (hay que estar autenticado apropiadamente).
az webapp deployment source config-zip --resource-group "TestBot" --name "echobot" --src "echo-bot.zip"
Aquí, TestBot
es el nombre del grupo de recursos y echobot
es el nombre de la app creada en Azure.
Cuando entremos a nuestro bot en Azure y veamos que funciona correctamente en el Web Chat, sabremos que el proceso fue exitoso.
Una vez este proceso termine, el chatbot está listo para compartir en cualquier página web o canal que se pueda configurar entre las opcines ofrecidas en Azure.
¡Advertencia!
El SDK de Python dejará de tener soporte a partir de noviembre de 2023, y se mantendrá principalmente el de C#. Sin embargo, los bots de Python podrán seguir funcionando. Esto se debe tener en cuenta para despliegues a mediano y largo plazo. ¿Tendremos que aprender C#?