microsoft-luis

Si tienes un bot en Microsoft habrás observado en los últimos días un banner indicando que ya es posible la migración. También podrás comprobar que la plataforma para la creación de bots ya no es exactamente igual que antes. Hay partes que han desaparecido. Con los bots que tengas creados anteriormente podrás editar sus propiedades y probar desde el portal (dev.botframework.com) pero si creas uno nuevo hay cosas que han cambiado.

Quizás para los bots antiguos que todavía no hayas actualizado veas algo roto en la web, aquí veremos un motivo.

Tabla de contenidos

1. Comienzo

La forma de crear un bot ha cambiado un poco. Ahora Microsoft nos redirige a Azure donde necesitamos una cuenta con crédito para crear un Bot Service. En mi caso recibí un crédito de 170 €. No está nada mal para empezar.

redirección a Azure

Una vez dentro de Azure nos muestra 3 modalidades de bots para elegir:

– Web app bot
– Bot channel registration
– Functions bot

tipos de Bot Service

Veamos un caso teórico y uno práctico de dos tipos diferentes de servicio de forma que nos permita conocer las nuevas funcionalidades más profundamente.

2. La teória

a. Web app bot

Esta es la clásica implementación de un bot para un web chat. Muestra un formulario con plantillas en Node.js C# a escoger, para implementar el servidor incluyendo las diferentes modalidades de bot según necesidad.
En este caso hemos escogido generar un bot con un servicio cognitivo llamado LUIS (Language Understanding System) de Microsoft. Esto nos permitirá tener un chatbot con reconocimiento de intenciones.

plantilla de web app bot

Una vez generado nos solicita el nombre del bot y el nombre de la App web que va a crear para usar el bot.

b. Hosting

Ahora en la configuración del bot la única opción para alojar el bot es Azure. Al usar la plantilla de código Azure ya genera un espacio donde se aloja el proyecto. Anteriormente podías alojarlo en otro servidor y configurarlo en los settings del bot con una url HTTPS.

c. Código

El código que se ha alojado en Azure está disponible de tres formas en la plataforma:

  • editando el código en linea
  • manualmente descargando un zip y volviéndolo a subir
  • configurando la implementación continua bajando un zip, subiéndolo a un repositorio en uno de los proveedores soportados y cada vez que subas código nuevo en la rama configurada se desplegará una nueva versión.

formas de trabajar con el código

Si queremos usar la implementación continua, tenemos varios proveedores que nos ayudarán a desplegar una nueva versión del código cada vez que necesitemos.

Proveedores de código

d. Registro de canales

Para dar de alta un canal lo tendrás que hacer desde Azure también. Los canales posibles no han variado en relación a los que había antes, es más, parece que hayan usado las mismas vistas aplicando un capa de CSS diferente.

Conectar canales a tu bot

Este ligero cambio hace que en Azure la experiencia sea correcta pero en los bots antiguos se vea desparejo, como decíamos, parece que hayan reutilizado algo que no ha quedado del todo cuadrado.

CSS para bot antiguos

e. Testear tu bot

Las pruebas las han dejado prácticamente intactas solo han movido a las vistas a Azure. De forma que ahora tenemos casi todo a mano por si hay que hacer cambios.

testing

f. LUIS

Al haber elegido un bot que reconoce las intenciones Azure ha creado en www.luis.ai una instancia nueva de una aplicación de LUIS que enlaza con el bot y nos proporciona el servicio.

popiggbot2-b86b creada para este ejemplo

No vemos muy claro porque la app de LUIS está en www.luis.ai que es el dominio para US, y no se ha creado en eu.luis.ai ya que hemos seleccionado al crear el bot en West Europe. Quizás estén revisando esta parte ya que la release está en beta y ha sido muy reciente.

3. Caso práctico

Para el caso práctico hemos elegido Functions Bot Service de forma que nos permite despreocuparnos de configurar Web apps o servidores. La function de Azure se invocará cuando se detecte la llamada al bot y ejecutará nuestro código. Esta implementación está muy lograda porque al crear el bot automágicamente crea una function que al ejecutarse arranca el bot.

El código de este bot es el más sencillo que hemos encontrado en la documentación de Microsoft.

'use strict';  const builder = require('botbuilder'); const restify = require('restify');  const server = restify.createServer(); server.listen(process.env.port || process.env.PORT || 3978, () => {    console.log('%s listening to %s', server.name, server.url); });  // Create chat connector for communicating with the Bot Framework Service const connector = new builder.ChatConnector({     appId: process.env.MICROSOFT_APP_ID,     appPassword: process.env.MICROSOFT_APP_PASSWORD, });  // Listen for messages from users server.post('/api/messages', connector.listen());  // Receive messages from the user and respond by echoing each message back (prefixed with 'You said:') const bot = new builder.UniversalBot(connector, (session) => {     session.send('You said: %s', session.message.text); });

Añadiendo nuestras modificaciones al código y habilitando los despliegues automáticos, podemos saber que versión hay desplegada.

despliegues recientes

4. Cambios y mejoras

a. Pruebas

Para hacer pruebas sobre el server, anteriormente, necesitábamos usar un dominio https que podríamos obtener con certificado sobre un dominio propio, o para prototipos más rápidos mediante tunneling con herramientas como ngrok. Ahora no es necesario, podemos probar nuestro bot una vez desplegado en Azure ya que nos proporciona un dominio.

b. Despliegues automáticos

Desde mi punto de vista esta funcionalidad es la más relevante. Puedes desplegar tu bot desde distintos proveedores populares metiendo tu código en un repositorio visible por la plataforma. Esto evita bastante trabajo para proyectos sencillos.

c. Plantillas genéricas por lenguaje

En la nueva versión hay plantillas para que no tengas que hacer casi nada de código o por lo menos haya un ejemplo donde empezar. Es bastante útil para iniciarse. Hasta ahora hay disponible plantillas en Node.js y C#.

d. Edición del código online

También han incluido un editor online de forma que ante alguna urgencia tus cambios tendrían efecto inmediatamente. Puede venir bien para solucionar errores críticos pero sencillos.

e. Hosting

El obligarte a usar su hosting restringe las libertades pero facilita el uso. No lo catalogaría como una mejora pero en ciertos casos añade sencillez a todo el proceso.

5. Conclusiones

Parece que el giro de Microsoft en la parte de la inteligencia artificial ha sido para redondear el producto, afinar la configuración y APIs pero recorta algunas libertades. Espero que con las nuevas funcionalidades los ventajas actuales se vean superadas.

Photo by Max DeRoin from Pexels https://www.pexels.com/photo/keyboard-green-51415/

Espero que te haya gustado, si así es, puedes compartirlo.

Gracias por leer.

Por Pablo Gómez Guerrero

Lector, a veces escritor, todos estamos aprendiendo. Prototipos de IA y software en Telefónica.

Deja una respuesta

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