Tres buenos amigos: Bot Framework SDK v4, LUIS y Xamarin (Parte 3)
Esta publicación es parte del Mes Xamarin, una iniciativa liderada por Luis Matos. Revisa ésta y muchas más publicaciones interesantes relacionadas con Xamarin publicadas por y para miembros de la comunidad. ¿Quieres ser parte de esta iniciativa apoyando con una publicación en tu blog? ¡Aún hay lugares disponibles! Da clic en el enlace anterior para más información al respecto.
¡Hola! Bienvenido a la tercera parte de la serie Tres buenos amigos: Bot Framework SDK v4, LUIS y Xamarin. En la Parte 1 (disponible aquí) diseñamos una app de LUIS capaz de interpretar intenciones del usuario (quiero conocer el clima) y detectar entidades (una ciudad o ubicación). En la Parte 2 (disponible aquí) creamos el backend del bot que interactúa con el usuario utilizando Bot Framework. El resultado fue una aplicación web que recibe mensajes del usuario y emite una respuesta.
Parte 3. Publicación y configuración del bot
El día de hoy vamos a publicar el bot en Azure siguiendo las instrucciones de la documentación oficial. Cabe mencionar que el sencillo proceso descrito hace un año en este blog (Parte 4. Publicación y configuración del bot) para implementar el bot con la versión 3 en Azure YA NO FUNCIONA y ahora se tienen que realizar todos los pasos que vamos a describir a continuación (sí son algunos cuantos…). ¡Pues a comenzar!
Paso 1. Ingresa al portal de Azure, crea un recurso de de la categoría AI + Machine Learning de tipo Web App Bot.
Paso 2. Ingresa los datos requeridos. Explicación:
- El nombre del bot (es único, usa uno distinto al aquí mostrado)
- La suscripción de Azure donde se creará el recurso
- El grupo de recursos (recomiendo crear uno nuevo)
- La ubicación (lo más cercana posible a tus usuarios para reducir latencia)
- El esquema de precio (seleccioné el gratuito, limitado pero de coste cero para este demo. En producción deberías seleccionar uno con mayores capacidades, menos limitaciones… aunque claro, tiene costo)
- El nombre de la Web App (único)
- El template de bot. Elige Echo Bot
- Selecciona el template de bot.
Paso 2b. Continuando con los datos del Bot Service:
9. El App service Plan
10. Crea uno nuevo
11. El nombre del App service plan
12. La ubicación (la misma que la del web app)
13. Confirma
14. Crea un nuevo Azure Storage con un nombre único
15. De momento no necesitamos Application Insights
16. Crea la web app
Esperamos a que se realice la implementación. Recibirás una notificación.
Paso 3. Accede al recurso recién creado. En la sección Bot management selecciona Build y haz clic en Download Bot source code.
Paso 4. Espera a que se genere el archivo y descárgalo. Descomprímelo en alguna carpeta de tu equipo.
Paso 5. Ahora en la sección App Service Settings da clic en Application Settings. Busca Application settings y da clic en el contenido de botFileSecret para obtener su valor. Cópialo, lo vamos a utilizar para desencriptar un archivo del código fuente recién descargado.
Paso 6. Descarga e instala Node.js desde el sitio oficial.
Paso 7. Ahora abre una ventana del Símbolo del sistema, ejecutándolo como administrador.
Paso 8. Instala MSBot, la cual es una herramienta de línea de comandos para crear y administrar recursos de un bot descritos en el archivo .bot de un proyecto de Bot Framework. Más información en el repositorio oficial. Para instalarlo, simplemente ejecuta el comando npm install -g msbot
Si se instala correctamente, deberías obtener un mensaje similar al siguiente:
Paso 9. Ahora ejecuta el siguiente comando: msbot secret –bot NombreArchivoBot.bot –secret SecretPaso5 –clear. Esto desencriptará el archivo .bot que contiene los secrets necesarios para que el bot pueda ser publicado; son datos sensibles, por eso están encriptados inicialmente. Por supuesto, reemplaza:
- NombreArchivoBot.bot con el nombre del archivo .bot que aparece en el código fuente descargado en el paso 4.
- SecretPaso5 es el botFileSecret obtenido desde los Application settings del paso 5.
Si la información provista es correcta, deberías recibir un mensaje como el siguiente:
Paso 10. Ahora abre dicho archivo .bot de configuración y copia todo lo que está dentro de la colección de services:
Paso 11. Regresa a tu proyecto de Bot Framework en Visual Studio y elimina la entrada dentro de services de tipo endpoint y nombre development.
Paso 12. Pega dentro de services todas las entradas obtenidas en el Paso 10. IMPORTANTE: No elimines o reemplaces la entrada de tipo luis.
Paso 13. Realiza un commit del código fuente. Eso significa que necesitas tener Git instalado.
Paso 13b. Coloca una descripción del commit y haz clic en Commit All. En este caso, he colocado Azure Bot Services Configured (verás más adelante este nombre nuevamente).
Paso 14. Una vez realizada esta operación, haz clic en Sync para hacer un push de tus cambios a tu repositorio. En este caso yo tengo GitHub configurado en el proyecto y con Visual Studio.
Paso 15. Este paso es opcional pero te recomiendo que lo hagas. Dado que en el código fuente incluiremos secrets y datos sensibles, voy a configurar mi repositorio como privado. Eso lo podemos hacer desde GitHub (en caso de que ya tengas el repositorio creado y si no, confirma el push -paso 16- y luego regresa aquí).
Paso 16. Realiza el Push de tu código fuente (si no habías hecho uno antes, te pedirá que escribas el nombre del repositorio en GitHub que deseas crear).
Paso 17. Regresa a Application Settings del proyecto en Azure y remueve la entrada botFileSecret.
Paso 18. En cuanto a botFilePath, su valor debe ser el mismo que el del archivo .bot en tu código fuente. En caso de que no, ajústalo en el portal.
Paso 19. No olvides guardar los cambios en Application Settings.
Paso 20. Da clic en All App service settings.
Paso 21. En la categoría Deployments, haz clic en Deployment Center. Selecciona GitHub para configurar Integración Continua con un repositorio. Esto significa que cada vez que sincronicemos cambios del repositorio, los cambios se replicarán automáticamente en la web app de Azure. Da clic en Authorize.
Paso 22. Inicia sesión en GitHub y autoriza a Azure App Service para que pueda localizar tu repositorio.
Paso 23. Sal y vuelve a entrar al Deployment Center cuando la configuración termine. Debería aparecer tu cuenta de GitHub. Si es el caso, selecciona GitHub y da clic en Continue.
Paso 24. Selecciona App Service Kuku build server y da clic en Continue nuevamente.
Paso 25. Selecciona tu cuenta de GitHub, el repositorio de tu proyecto de bot y la rama master (o alguna otra que hayas configurado, si es el caso), respectivamente.
Paso 26. Confirma la información dando clic en Finish.
Espera a que finalice el proceso, recibirás una notificación.
Paso 27. Después de unos instantes, regresa al Deployment Center y observa cómo aparece el mensaje del paso 13b bajo el Checkin Message de la implementación actual del bot en la web app.
Paso 28. Si accedes a la sección Overview, encontrarás el messaging endpoint (que es la dirección que escuchará mensajes enviados al bot). Copia este valor.
Paso 29. Pega dicha URL en el navegador, removiendo la parte del api/messages y observa cómo aparece la página principal del bot, ¡lo que significa que la implementación se ha realizado correctamente!
Paso 30. Podemos probar el bot en la sección Bot management, haciendo clic en Test in Web Chat. Si le preguntamos sobre el clima de una ciudad al bot, éste nos responderá (tal como sucedió en la Parte 2 cuando ejecutamos el bot localmente en nuestro emulador).
¡Y eso es todo de momento! Hasta aquí vamos a dejar de momento esta entrada. En la próxima publicación realizaremos la aplicación móvil desarrollada en Xamarin que consumirá este bot ya publicado.
¿Qué tal te fue? ¿Pudiste lograrlo? Espero que sí, y en caso de que hayas obtenido un error házmelo saber en los comentarios y le damos seguimiento.
¡Espero que esta entrada haya sido de interés para tí!
Agradezco tu visita al blog. Si la publicación fue útil, no olvides compartirla en tus redes sociales.
¡Hasta la próxima!
Luis