Configurar y Probar un bot con Bot Framework SDK (versión Python)

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#?

 

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *