Implementación de un bot de preguntas y respuestas con QnA Maker, Azure Bot Service y Telegram
Tags: azure, tutorial, webdev
Published: 2020-03-20 00:54:51

En la actualidad son cada vez más los dispositivos móviles que integran 'bots' para interactuar y anticiparse a los gustos de los usuarios. 

La palabra bot se deriva del término robot y viene a ser la versión software del mismo. En pocas palabras, se trata de una aplicación desarrollada para llevar a cabo una diversa cantidad de tareas de forma autónoma.

A menudo es más fácil chatear con un bot que buscar/leer a través de un muro de texto. Los "bots de chat" por ejemplo, hacen uso del procesamiento del lenguaje natural para unir mensajes de los usuarios con las respuestas apropiadas. 

En el siguiente tutorial aprenderemos como construir un bot con QnA Maker service, Azure Bot service y el servicio de mensajería de Telegram. 

####La base del conocimiento####

Según Wikipedia, la base del conocimiento es un tipo especial de base de datos para la gestión del conocimiento. Provee los medios para la recolección, organización y recuperación computarizada de conocimiento. En otras palabras, es la fuente de información que nos permitirá establecer respuestas ante una respuesta para algún caso de estudio determinado.
 
Para nuestro caso, el objetivo del bot tendrá como objetivo responder a preguntas sobre términos informáticos, entre estos, componentes del computador, periféricos, fundamentos del sistema operativo, etc. 

La base del conocimiento estará constituida por un documento de Microsoft Word, un archivo como cualquier otro.

Fuente de la base del conocimiento: [KB.docx](https://1drv.ms/w/s!ApLRabRfUdwZg-5ymQgSr_r3XlpYnQ?e=w7Oafr)

Otras bases de conocimiento también pueden estar constituidas por archivos PDF, archivos de Excel, alguna pagina informativa con datos sobre el dominio a trabajar, bases de datos SQL o NoSQL, o cualquier otro medio que pueda proveer de información a un bot de tipo informativo.

##Parte 1: Qna Maker##

Lo primero que debemos hacer es establecer nuestra base del conocimiento. Para este objetivo hacemos uso de Qna Maker, un servicio que hace parte del catalogo de Azure, el cual cuenta con su propio portal web para construir y para publicar bases del conocimiento también denominadas de forma abreviada como KB. 

QnA Maker extrae automáticamente pares de preguntas y respuestas del contenido semiestructurado, como preguntas más frecuentes, manuales de productos, directrices, documentos de soporte técnico y directivas almacenada (del documento de Word para este caso).

El objetivo a la final es consumir esta base del conocimiento desde Bot service para la construcción del bot de preguntas y respuestas desde Telegram. El flujo entre la base del conocimiento y bot service es como se muestra a continuación: 

![](https://dev-to-uploads.s3.amazonaws.com/i/chj6jhsg7qh5q2ws9hlx.jpg)

Muy bien, para establecer la base del conocimiento debemos dirigirnos a la página: [www.qnamaker.ai](www.qnamaker.ai) e iniciar sesión con nuestra cuenta de Azure. 

![](https://dev-to-uploads.s3.amazonaws.com/i/dadkgd73vw02ab7g72iq.png)

Posteriormente nos dirigiremos a la sección: Crear una base del conocimiento. En este apartado necesitaremos realizar dos actividades rápidas: 

####1. Crear un servicio de QnA en Azure.####

En este caso, la pagina de QnA Maker nos mostrará la opción que nos permitirá redirigirnos al portal de Azure para crear el recurso: 

![](https://dev-to-uploads.s3.amazonaws.com/i/gqitq6qvxoghs5uwrvzg.png)

Una vez en Azure, debemos especificar el nombre del recurso, el plan, su ubicación y los demás campos necesarios para la creación del mismo. 

![](https://dev-to-uploads.s3.amazonaws.com/i/j68kadaicl477u0g0735.png)

####2. Conectar el servicio de Azure QnA con nuestra base del conocimiento.####

Después de crear el recurso QnA service en Azure, el siguiente apartado es refrescar la pagina para definir la base del conocimiento: 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/k1v01a0s4j4ob9dl9rmo.png)

En primera instancia deberemos seleccionar nuestra suscripción de Azure junto con el recurso de Qna Maker creado anteriormente. Después debemos seleccionar el idioma. El idioma a seleccionar será según el lenguaje de la base del conocimiento y posteriormente el idioma de interacción con el bot. 

![](https://dev-to-uploads.s3.amazonaws.com/i/yu85tf0q3g84jmg6klza.png)

A continuación, deberemos ingresar el nombre de la base del conocimiento KB y especificar la fuente de datos, para nuestro caso será un archivo de Word: 

![](https://dev-to-uploads.s3.amazonaws.com/i/4xunffbxvcuvhv9ms6kp.png)

Finalmente tendremos la opción de especificar el estilo o la “personalidad” del bot: 

![](https://dev-to-uploads.s3.amazonaws.com/i/b4ru1ck3wwnpw3yxys8k.png)

Ejemplo. Para la consulta del usuario: `¿Cuándo es tu cumpleaños?`, cada personalidad tiene una respuesta con estilo:

+ Profesional: La edad no va conmigo.
+ Descriptiva: Realmente no tengo una edad.
+ Ingenioso: No tengo caducidad.
+ Cariñoso: No tengo edad.
+ Entusiasta: Soy un bot, así que no tengo edad.

Finalmente creamos la base del conocimiento. Al terminar el proceso, podremos interactuar con la base del conocimiento o publicarlo para acceder a través de un servicio web o directamente desde un bot:

![](https://dev-to-uploads.s3.amazonaws.com/i/o61l1kab8sneho3v7kwf.png)

Al publicar: 

![](https://dev-to-uploads.s3.amazonaws.com/i/vnc2krinhd9g3xn4ukcn.png)

En este caso recibiremos la ayuda del portal de QnA Maker para crear el bot. Al ir a ese apartado: Crear Bot, seremos redirigidos al portal de Azure para crear un nuevo recurso Bot Service, la mayoría de los campos necesarios ya estarán llenados automáticamente con la información necesaria: 

![](https://dev-to-uploads.s3.amazonaws.com/i/cilfk024s5xq267jdcpi.png)

Muy bien, con estos pasos ya tenemos la base del conocimiento en Qna Maker lista al igual que el Bot Service.

##Parte 2: Bot service + Telegram##

En este segundo paso nuestro objetivo es conectar el bot creado anteriormente con algún servicio de mensajería, en este caso: Telegram. La secuencia a llevar a cabo es la siguiente: 

![](https://dev-to-uploads.s3.amazonaws.com/i/66axe6yerbjmosmh41u3.png)

Ahora bien, en el recurso Web App Bot, nos dirigimos a la sección Canales/Channels para establecer la configuración entre el servicio de mensajería y el bot. 

Los canales de mensajería que tenemos disponibles para conectar con el bot son los siguientes: 

+ Bing
+ Cortana
+ Email
+ Facebook
+ GroupMe
+ Microsoft Teams
+ Skype / Skype for Business
+ Telegram
+ Twilio
+ Web Chat

Cada canal de mensajería tiene cierta variación al momento de realizar la configuración respectiva. Como se ha mencionado anteriormente, nuestro sistema de mensajería a utilizar será Telegram. 

![](https://dev-to-uploads.s3.amazonaws.com/i/0s7z24b61ex6ao4vdrux.png)

Al acceder a este canal de mensajería, el portal de Azure solicitará un Token, el cual permitirá establecer la conexión entre un bot de telegram y el bot creado en Azure.

![](https://dev-to-uploads.s3.amazonaws.com/i/z9e8dwe276956vjbq33g.png)

Para crear un bot en Telegram debemos visitar a BotFather para cumplir con este objetivo. Una vez allí debemos escribir el comando: /newbot. 

BotFather nos pedirá especificar el nombre del bot y un nombre de usuario único para el bot. Al finalizar, tendremos un mensaje donde se indica que el bot se ha creado y acceso al token respectivo. 

![](https://dev-to-uploads.s3.amazonaws.com/i/1kskcx88f41d4mxxii4l.png)

##El bot en Telegram está listo…##

Con estos pasos, estamos listos para interactuar con nuestro bot de preguntas y respuestas. Este es un ejemplo:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/btuhbuimzaqe6f6533y3.png)

##Conclusiones##

Los bots representan una verdadera revolución en la forma en la que realizamos las transacciones en internet y nuestras labores diarias. Según Satya Nadella, CEO de Microsoft, «los bots serán las apps del futuro y el lenguaje hablado la nueva forma de interactuar».

En un futuro relativamente cercano, la tendencia está en la generación de bots con una capacidad de procesamiento cada vez mayor gracias a la implementación de nuevos conceptos y servicios en el ámbito de la Inteligencia Artificial. En el caso de los chatbots, su uso sigue creciendo exponencialmente, lo que ha permitido generalizar aplicaciones de mensajería que convertirán a estos bots en una forma habitual de interacción entre consumidores y empresas.

####Gracias.####
Nos vemos en [Twitter](https://twitter.com/esDanielGomez)!! :)