ChatBots inteligentes con Azure (Parte 1): Fundamentos Bot Framework

Publicado por Santi Macias el

Microsoft AzureCognitive ServicesChatBotsMicrosoft Bot FrameworkMicrosoft

Este es el primer artículo de la serie, la lista completa de los temas que veremos son:

Los bots y chatbots, por si solos no tienen inteligencia (IA), en realidad son otro tipo más de aplicaciones, como puede ser una desktop, móvil o web que realizará las tareas para lo cual están diseñados.  Exponen un API para comunicarnos y nosotros como developers, podemos dotarles de dicha inteligencia para que los usuarios puedan interactuar con ellos de forma natural.

Su desarrollo, como podemos imaginar a priori, no es fácil, ya que, incluye muchas facetas que debemos contemplar en el análisis y diseño inicial como la lógica del bot, flujos de conversaciones, frameworks, seguridad, consultas a BBDD, infraestructura, integración con plataformas de mensajería, conexiones con otros servicios, etc. que por lo general lleva su tiempo.

La inteligencia (IA) de un bot, no la vamos a programar nosotros, la delegaremos a alguna de las plataformas que existen en el mercado, como los Servicios Cognitivos de Microsoft en Azure que vimos en un post anterior, siendo estos una lista de los servicios más comunes:

En el artículo de hoy, explicaremos cómo nos ayudan los servicios y framework de Microsoft para trabajar con bots, veremos un poco de contexto para situarnos como punto de partida y qué requisitos previos son necesarios.

Un poco de contexto

Hoy en día, los bots se utilizan para muchas cosas que a veces pasan inadvertidas o nos pueden confundir sobre todo al principio de trabajar con ellos y desconocer las tecnologías que podemos aplicar.

Un primer punto, los bots no son algún nuevo, existen desde hace varias décadas.

Si tenéis curiosidad y queréis saber más sobre su historia mirar estos estos links:

Segundo, recordar que los bots son aplicaciones/programas que ejecutan tareas automatizadas y repetitivas imitando el comportamiento humano, así que, si hay tareas repetitivas en vuestro dia a dia quizás un bot os ayudaría:

Tercero, existen muchísimos tipos de bots, según estén programados unos serán buenos y otros muy malotes, además, buscadores como Google, Bing o Yahoo los llevan usando durante años para indexar los contenidos de internet:

Os dejo alguna referencia de los más comunes que podemos encontrar hoy en día:

  • Asistentes: como Cortana, Ok Google y Siri
  • ChatBots: Bots conversacionales en canales de mensajería y webs.
  • Crawlers: Bots que recorren toda Internet mediante "spiders"
  • GameBots: Bots contra los que podemos jugar, ajedrez, damas, etc.
  • InfoBots: Bots que publican noticias en diferentes canales de información
  • SpamBots: Bots que realizan spam de forma masiva
  • TrafficBots: Bots que generan tráfico artificial en sitios web para aumentar visitas
  • TrendingBots: Bots que realizan interacciones con HashTags para hacer Trending Topics
  • SocialBots: Simuladores de clicks/likes en portales como YouTube, Instagram y otros
  • HackerBots: Diseñados para robar información de nuestro email, Facebook, ordenador, etc.
  • Maliciosos: Bots que registran cuentas falsas en web para realizar ataques o fraudes.

Incluso algunos ejemplos que seguro os sorprenderán:

Viendo este contexto, hay que destacar que el Microsoft Bot Framework está orientado a la creación de ChatBots exclusivamente, que podemos publicar de forma automática en muchos canales sin necesidad de programar una línea de código y deberemos integrarlos con los servicios cognitivos para dotarlos de cierta IA, ya que por defecto "no son inteligentes".

Actualmente, Microsoft ofrece estas tecnologías para el desarrollo y publicación de bots que combinaremos según nuestras necesidades.

ChatBots Landscape

Para tener una visión real del mundo de los ChatBots y las tecnologías actuales que demuestran que estamos hablando realmente de una apuesta de futuro, incluyo esta infografía ilustrativa del año 2017:

alt

Fuente: https://blog.keyreply.com/the-chatbot-landscape-2017-edition-ff2e3d2a0bdb


Plataforma Microsoft Bot Framework

Microsoft presentó su plataforma de Bots en el Build 2016 donde se explicó las ventajas de la misma como el desarrollo rápido de bots conversacionales, facilidad para crear, testear y desplegar bots, como se integra con Azure para usar los servicios cognitivos, publicar los bots en diferentes canales de mensajería como Facebook, Slack, Skype, Teams, Telegram, etc. o como utilizarlos en nuestras aplicaciones web MVC.

Veamos un diagrama de la plataforma para tener una visión global:

alt

Aquí vemos los componentes principales del Framework donde encontramos el BotBuilder SDK, Bot Connector, Bot Emulator y Channels para conectarnos con todo lo relacionado en la construcción de bots. Comentar que muchos de estas herramientas ya vienen disponibles en Azure Bot Service para facilitar el trabajo:

Bot Builder: Es la herramienta para desarrollar nuestros propios bots. Debemos instalarnos Bot Builder SDK en nuestro equipo de desarrollo donde tenemos Visual Studio. El paquete SDK contiene todas las herramientas y servicios necesarios para construir nuestros bots. Acceder al Bot Builder SDK: https://github.com/Microsoft/BotBuilder

Bot Connector: Mediante Bot Connector podemos conectar nuestro bot con Skype, Slack, Telegram, entre otros servicios de mensajería con un API REST. Para conectarlo no es necesario que el bot esté programado en C# o en Node.js, con que siga el formato de mensajes del API REST establecido y esté registrado es suficiente. Documentación Oficial: https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-quickstart?view=azure-bot-service-3.0

Bot Directory: Es un directorio público donde encontrar bots ya construidos, es como un repositorio GitHub, en este caso, para bots creados con tecnologías Microsoft por la comunidad. Estos bots pueden ser descargados por cualquier desarrollador y usuario. Link: https://bots.botframework.com

Bot Emulator: Aunque forma parte del Bot Builder, lo podemos descargar directamente desde Bot Framework Emulator para instalarlo en nuestro equipo, es una herramienta imprescindible para depurar nuestros bots en modo local o remoto. Descarga y documentación: https://github.com/Microsoft/BotFramework-Emulator

Developer Portal: Es un servicio para registrar o ver nuestros bot creados. así como saber su applicationID. Mediante el Bot Builder, podemos conectarnos para indicar dónde se encuentra nuestro endpoint de entrada al servicio bot. Acceder al Portal: https://dev.botframework.com/bots

Proyecto AURA de Telefónica

Como caso real, Telefónica y Microsoft llevan colaborando varios años en la plataforma AURA, su asistente digital con IA basado en los servicios de Azure y Inteligencia Artificial de Microsoft desarrollado con Bot Framework y conectado con varias aplicaciones de mensajería.


Video de la presentación oficial de AURA en MWC Barcelona

Conclusiones

La tendencia en los próximos años será tener bots para todo, ya sea, mediante interfaz de texto o voz, combinados con IA y servicios cognitivos. Esto evitará tener una aplicación instalada para cada cosa en nuestros dispositivos, por ejemplo, reservar un vuelo, comprar entradas, hacer un regalo, pedir comida, alquilar un coche, consultar al médico, ... En definitiva, el usuario le pedirá a su ordenador, teléfono o tablet, lo que quiere y en este punto es dónde las aplicaciones de mensajería y redes sociales entran en juego.

Desde el punto de vista de las empresas, la inversión en bots, ChatBots y otras ramas de la IA supone grandes beneficios en productividad, reducción de costes y ahorro de tiempo en sus tareas y procesos de negocio.

En este artículo, hemos visto una primera parte teórica y las herramientas que podemos utilizar para crear ChatBots con tecnologías Microsoft. En los próximos artículos de esta serie veremos la parte técnica para crearlos en Azure y publicarlos en un canal de Skype.

Y si te ha gustado, ¡síguenos en Twitter para estar al día de más artículos!

Autor

Santi Macias

Microsoft Tech Lead en knowmad mood, +20 años trabajando con tecnologías Microsoft actualmente centrado sobretodo en Azure, Cloud Native, DevOps, Docker, Kubernetes, Microservicios y Serverless.