Sinfonier y Telegram

viernes, 11 de diciembre de 2015

La cuenta de Twitter de Emergencias Madrid utiliza como uno de los canales de comunicación las alertas que Twitter permite gestionar para la notificación masiva, en este caso, para información crítica en situaciones de emergencia. Esto ejemplifica cómo los canales de comunicación están cambiando y cóomo surgen nuevas oportunidades todos los días delante de nosotros. Conscientes de esta realidad, vemos que es el momento de comenzar a trabajar en estas alternativas. Por suerte para nosotros ya está disponible en Sinfonier los módulos necesarios para interactuar con Telegram: TelegramUpdates y TelegramMessage Drain.

Primero, veamos cómo utilizar TelegramMessage. Se trata de un sencillo Drain que nos permite enviar mensajes usando Telegram BotAPI. El Bot API es un interfaz basado en HTTP creado para la creación de bots para Telegram.

En Telegram los bots son cuentas especiales diseñadas para manejar mensajes de forma automática. Los usuarios pueden interactuar con ellos enviando comandos de forma privada (solamente al bot) o en grupos.

Este Drain necesita tres parámetros para funcionar correctamente:
  • Token: clave para autenticar a nuestro bot.
  • Chat_id_field: nuestro identificador para el chat.
  • Textfield: el campo de texto para los mensajes que serán enviados.

¿De dónde sacamos estos parámetros? Veamos cómo conseguirlos:
  1. Crear una nueva cuenta tipo Bot y obtener el Token
  2. Lo primero es crear un nuevo bot en Telegram . Para crear la cuenta tenemos que hablar con el BotFather. Una vez arranca el bot podemos ver un menú de ayuda con todos los comandos disponibles. Estos comandos se utilizan para manejar las cuentas tipo bot: podemos crear una cuenta, configurar el nombre, la descripción, privacidad e incluso eliminar el bot, entre otras cosas.

    El comando/newbot crea un nuevo bot. Tendremos que darle un nombre y un “username” y el BotFather nos dará el Token. ¡Perfecto! Ya tenemos nuestro Token y por tanto nuestro primer parámetro. Vamos a por el siguiente.

  3. Configuración del modo privado y obtener el “chat_id of a conversation”
  4. Los Bots no pueden comenzar conversaciones con los usuarios. Debe ser el usuario el que comience la conversación para obtener el “chat_id”. Pero antes de comenzar a charlar con un bot tenemos que cambiar la privacidad del mismo a “disabled”. Si dejamos la privacidad activa nuestro bot solamente reconocerá mensajes que comiencen con una barra “/”, es decir, comandos. Ya podemos comenzar a charlar con nuestro bot como si fuese otro usuario.

    Ahora podemos obtener el chat_id consultando el método getUpdates del API HTTP. Para hacer esto, solamente necesitamos el token que hemos obtenido en el paso anterior y no tener miedo a leer un fichero tipo JSON.

    El id que buscamos está en: message -> chat -> id.

  5. Probando TelegramMessage Drain
  6. Ahora que tenemos los dos parámetros que nos sirven para interactuar con Telegram solamente nos falta decir a nuestro Drain qué campo queremos enviar al usuario. Para probar que funciona correctamente utilizaremos un Spout que genera información de forma continua y que nos sirve para comprobar que sabemos configurar nuestro módulo y hemos creado el bot correctamente.

TelegramUpdates Spout
Ahora que tenemos nuestro Drain necesitamos poder leer los mensajes que los usuarios nos envíen. Para ellos vamos a utilizar el método que vimos antes para obtener el chat_id, getUpdates.Para ello, recuperaremos los mensajes bajo una frecuencia configurable. Cada mensaje nuevo lo emitiremos a la topología para procesarlo.

En la siguiente topología vemos lo sencillo que es recuperar los mensajes y acto seguido reenviarlos sin procesamiento alguno. Solamente utilizamos un bolt que nos ayuda a simplificar el JSON que recibimos de Telegram para acceder a los datos que nos interesan de forma más sencilla.

¿Qué significa el parámetro offset? Simplemente nos sirve para indicar al Spout desde qué update_id debe comenzar a procesar los mensajes.

Bot de Telegram interactuando con Latch y VirusTotal
En este caso vamos a ver cómo interactuar con nuestra tecnología Latch y VirusTotal mediante un bot que nos permite indicar a usuarios que estén en un grupo concreto que hemos comenzado a realizar una acción concreta (en este caso, conducir) y además el bot comprobará cada URL enviada al chat contra VirusTotal. Cómo crear esta topología:



Sinfonier integrado con Intel Edison y Latch
Este segundo ejemplo muestra cómo nuestra tecnología Sinfonier interactúa con una Placa Intel Edison gestionando el acceso a la placa mediante de nuevo con Latch. Cómo crear esta integración:




Fran Gómez
franciscojesus.gomez@11paths.com
@ffranz

No hay comentarios:

Publicar un comentario en la entrada