Hace unas semanas en la compañía decidimos dejar de usar Google Hangouts para la conversación inter-empresarial, en favor de Telegram, oportunidad que nos abrió nuevas posibilidades.
Telegram es una aplicación de mensajería bastante similar a WhatsApp pero con algunas características interesantes desde nuestra perspectiva como empresa que desarrolla software: Bots y API.
Tras crear los grupos para reflejar los distintos equipos de trabajo, lo siguiente fue iniciativa de nuestro compañero Daniel, quien en una de nuestras charlas técnicas semanales, nos puso al tanto de la carácterística de Bots de Telegram.
Workboard Bot
Esta charla nos fue abriendo la mente poco a poco, para obtener mayor provecho de la plataforma. Así fue como seguidamente otro compañero, Ariel Moya, desarrolló un Bot que denominó "The Workboard".
The Workboard es un bot que facilita una gestión de coordinación interna, avisando a todo el equipo que actualice su planificación de esfuerzos durante 4 momentos del día. El Bot notifica al grupo de todo el equipo, alcanzando incluso a aquellos que trabajan desde su casa.
Anteriormente esta notificación era realizada por un miembro del equipo que denominamos "Workboard Officer", quien ahora no se ocupa de notificar, pero sí de acompañar la correcta planificación de sí mismo y todos los demás.
Tracker Bot
Minutos después esta iniciativa despertó mi interés, y en las siguientes horas logré desarrollar "TrackerBot", quien notifica de inmediato los commits que se realizan en los repositorios de código fuente de los proyectos en el grupo de Desarrolladores en Telegram.
La notificación no sólo es un aviso, sino que también enlaza directamente a nuestro sistema de gestión de proyectos para poder visualizar el conjunto de cambios recién aplicados en el proyecto. Para ello fue necesario emplear los hooks de nuestro sistema de control de versiones: Subversion.
Por otro lado, TrackerBot también facilita la colaboración. Es muy usual que entre nosotros compartamos los identificadores de las tareas que realizamos en el sistema de gestión de proyectos, como #1234
. Ahora, TrackerBot identifica cuando alguien escribe estos números en el chat y responde con una descripción y un enlace directo a la tarea correspondiente.
Translate Bot
Días después, y tras adoptar la práctica diaria de conversar internamente únicamente en idioma inglés, desarrollé Translate Bot: Este bot responde a mensajes como ?en Hello World
con la traducción de la frase al idioma indicado después del signo de pregunta.
Este Bot fue desarrollado usando Google Translate API, y su tiempo de respuesta es relativamente rápido. La intención era que durante una conversación en Telegram, evitáramos abrir en ventana aparte un traductor, copiando y pegando texto de un lado a otro, agilizando la interacción.
Tecnología
El desarrollo de estos Bots fue relativamente fácil, no realizan nada complicado. Sin embargo todos los bots se apoyan en la interoperabilidad con distintas interfaces de todos los servicios que empleamos: Telegram Bots API, Subversion Hooks, Redmine API, Google Translate API para PHP.
Adicionalmente, algunas aplicaciones de consola jugaron un papel importante, como Curl y HTTPie, que fueron usadas en los shell scripts que requerían interoperar con repositorios o ejecutarse desde una línea Crontab en los servidores.
Por otro lado, para procesar los mensajes enviados por Telegram, desarrollé un pequeño servicio REST en PHP que se encarga de filtrar los mensajes recibidos y controla las respuestas que realizan los Bots, en un solo fichero.