telegramlogo
0

Crear y publicar un bot de Telegram

Últimamente se han puesto muy de moda los bots y, con la duda de si colgarlo bajo la categoría de “Tutoriales” o de “Banalidades”, me he decidido a hacer un pequeño post que explique de manera muy sencilla cómo crear un bot de Telegram con Visual Studio 2015 y la plantilla Bot Framework.

Crear el bot

Lo primero es crear nuestro proyecto en Visual Studio 2015. Para ponernos las cosas fáciles, los chicos de Microsoft se han currado una plantilla que nos viene de perlas para empezar. La mayoría ya sabréis cómo se instala una plantilla: basta con copiar los ficheros dentro de una carpeta, que yo he llamado Bot Application, en vuestro directorio “Templates” (normalmente lo encontraréis en “Documentos\Visual Studio 2015\Templates”). Una vez instalada, es cuestión de seleccionar la plantilla en el listado y darle un nombre a nuestra solución:

createproject

Veremos que por defecto la plantilla crea un controlador MessagesController que se encargará de recibir y responder a los mensajes. De momento nos centraremos en el método Post que es donde va a ocurrir la magia. Para hacer las cosas bien, dado que nuestro controlador va a tener distintos comportamientos y vamos a ir extendiendo su funcionalidad, seguiremos el patrón estrategia y crearemos una interfaz IReplyText:

En este contexto, IReplyText es nuestra estrategia para responder a todos los textos que introduzca el usuario. Siguiendo este patrón, podríamos crear, por ejemplo, IReplyImage para responder a las imágenes o IReplyAudio para responder a los mensajes de audio. En futuros posts extenderemos nuestro bot para dotarle de inteligencia y habilidades, pero de momento nos limitaremos a crear una clase Pesimist que responderá de la siguiente manera a los textos que reciba nuestro bot:

Como se puede apreciar, nuestro no bot no es que sea demasiado elocuente, pero para el objetivo de este tutorial es más que suficiente. El siguiente paso consiste en modificar nuestro controlador, para que utilice la clase Pesimist a la hora de analizar los textos:

A continuación, añadiremos un método a nuestro controlador, que responda a todos los mensajes de texto que reciba nuestro bot. Recordad que la responsabilidad de analizar nuestros textos y “fabricar” una respuesta la hemos delegado en el objeto replyText. Así que, lo que hace este método es comprobar que el mensaje recibido contiene algún texto, después le pide a replyText que lo analice y que nos de una respuesta, que se devuelve tras comprobar que no es null.

Para terminar con la implementación, llamamos al método ReplyToText desde el método Post de nuestro controlador:

 

Probar en local

Antes de pasar al siguiente nivel, debemos asegurarnos de que todo funciona como queremos, así que vamos a probar nuestro bot en local. Para ello, primero tenemos que descargar e instalar el Bot Framework Channel Emulator y ejecutarlo en nuestro equipo. Veremos que en la parte superior de la ventana hay algunos parámetros que debemos configurar. Realmente, el único que debemos tocar es el Bot Url, así que, ejecutamos nuestra solución desde Visual Studio y copiamos la URL. Es importante añadir al final de la URL “/api/messages”, para que quede así:

botemulatorconfig

Si todo ha ido bien, ya deberíamos poder tener una interesantísima conversación con nuestro bot:

pesimistlocal

 

Publicar nuestro bot

Para publicar nuestro bot vamos a necesitar una cuenta de Microsoft Azure, pero para la mayoría de vosotros eso no debería suponer un problema. Para los que no tengáis una, podéis crear una cuenta de prueba desde azure.microsoft.com. Es totalmente gratuita y NO se actualiza automáticamente a una cuenta de pago, así que no hay trampa ni cartón. Una vez tengamos nuestra cuenta, hacemos clic derecho en nuestro proyecto (no en la solución) y le damos a “Publicar…”, para que se abra el formulario de publicación, donde haremos clic en “Aplicaciones web de Microsoft Azure”.

azurepublish

Si es la primera vez que publicamos en Azure, probablemente tengamos que volver a introducir nuestra cuenta, para que actualice el estado de nuestra suscripción. El siguiente paso es crear nuestra app en Azure, que no supone más que introducir unos cuantos nombres, nuestra localización y esperar unos minutos a que se genere todo:

creatingazure

Una vez termine, volveremos automáticamente al diálogo de publicación, con todos los datos necesarios ya completados. Para asegurarnos, haremos clic en “Validate connection” y esperaremos a que Visual Studio valide todos los datos. En la siguiente ventana, elegiremos el modo “Debug”, para nuestro despliegue, ya que probablemente querremos depurarlo más adelante.

danimarpebotdebug

Desde aquí, ya podemos darle directamente a “Publicar”. A continuación, automáticamente se abrirá una ventana de nuestro navegador con la página principal de nuestra aplicación ya cargada desde Azure, lo que supone una confirmación de que hemos terminado de publicar nuestro bot correctamente.

 

Registrar el bot en Microsoft Bot Framework

Ya casi lo tenemos, nos quedan unos pocos pasos más. Para poder usar nuestro bot desde aplicaciones como Facebook o Telegram, es necesario que lo registremos. Para ello, nos dirigimos a la web de Microsoft Bot Framework y nos registramos con nuestra cuenta de Microsoft. Una vez dentro, veremos un botón para registrar nuestro bot que nos dirigirá a un formulario:

danimarpebotregisterform

En la parte inferior encontraréis los campos para configurar la APP. Si introducís la URL de vuestro bot (recordad añadir el “/api/messages” al final) y hacéis clic en “Manage Microsoft APP and Password” os abrirá una nueva ventana en la que podréis generar vuestro ID de aplicación y una contraseña. OJO: esta contraseña no la podréis ver más, así que copiadla y guardadla en cuanto la veáis en pantalla. Por último, introduciremos algunos datos básicos sobre nosotros y nuestro bot:

danimarpebotpublisher

Ahora que hemos publicado y registrado nuestro bot, tenemos que añadir nuestro app_ID y el password que hemos generado anteriormente, en nuestro web.config. Después de modificar estos dos campos, debemos publicar de nuevo nuestro bot (sólo publicar, no es necesario volverlo a registrar): botón derecho, publicar y listo.

Configurar el canal Telegram

En este ejemplo, vamos a configurar nuestro bot para comunicarnos con él a través de Telegram, pero podemos elegir cualquier otra aplicación de la lista y el proceso será prácticamente idéntico. Desde la ventana de configuración de nuestro bot, seleccionaremos el canal Telegram para añadirlo.

botdanimarpeconfiguretelegram

En esta ventana nos explican paso a paso lo que debemos hacer para obtener un access token con el que conectar nuestro bot. Es muy sencillo, yo lo he hecho desde la aplicación de Telegram del móvil:

  1. Abrimos un chat con @botfather
  2. Escribimos /newbot
  3. Nos preguntará por un nombre para nuestro bot Yo he elegido “DanimarpePesimist”
  4. Ahora nos pide un nombre de usuario para el bot.Tiene que acabar en “bot”. Yo he elegido “Pesimist_bot”.
  5. Listo. Copiamos el token y lo introducimos en el último paso de la ventana anterior.

danimarpebottelegramtoken

 

Charlar con nuestro bot

Pues eso, llegados a este punto, ya podemos abrir Telegram en nuestro móvil y tener una agradable charla con nuestro nuevo amigo. Para buscar buestro bot, simplemente introducid @SuNombre en la búsqueda de usuarios.

wp_ss_20161006_0008

Como casi siempre, tenéis el código completo de la aplicación en mi GitHub.

 

Deja un comentario

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