La semana pasada se me planteó un problema de los que me gusta resolver:
Tengo un grupo en el que algunos días hay que lanzar una encuesta para que la gente se apunte a la hora a la que van a asistir a la actividad.
Tener que hacer la encuesta cada mañana es tedioso y alguna vez se puede olvidar, así que pensé que igual lo podía automatizar.
Lo primero fue pensar en hacer un bot y programarlo yo de cero, pero solo para eso quería algo más simple. Así que me puse a mirar la API de Telegram.
El primer paso fue hacer un bot, claro, porque se necesita la clave secreta para poder enviar mensajes de forma automática. Aquí tenéis un artículo donde lo explican.
Lo siguiente fue mirar la API a ver que permitía hacer y que no.
No soy programador experto y no estoy todo el día usando APIs así que me fui a lo que conozco. La de mandar mensajes:
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Hola! Soy tu bot
Como ves se necesitan dos datos:
El token ya lo debes tener si has seguido los pasos del artículo que te puse. Así que vamos al ID del usuario o grupo.
Los bots no pueden hablar a las personas si ellas no les hablan primero (parecido a los vampiros). Así que habla a tu bot o añádelo al grupo donde quieras que funcione y escribe esto en el navegador:
https://api.telegram.org/bot<TOKEN>/getUpdates
Te aparecerá una respuesta en formato json donde verás algo así:
…
"chat":{"id":123456789,"first_name":"nombre","type":"private"}
…
Ahí puedes ver el ID del chat. Si es un chat verás que el número es positivo. Si es un grupo el número es negativo, así que empezará por un -12334553244…
Pues ya tenemos los ingredientes para enviar un mensaje desde el navegador a un grupo o persona.
Ahora volvemos a mi tema: conseguir enviar una encuesta. Para eso me revisé la API buscando la palabra «poll» que es una palabra para encuesta en inglés. La web de la API de Telegram es esta: https://core.telegram.org/bots/api
Ahí podemos ir a SendPoll y ver que se nos pide.
Como ves, son muchas las cosas que se pueden configurar, pero os voy a poner mi ejemplo para simplificar y que sepáis en qué se traduce lo que dice en la web:
https://api.telegram.org/bot<TOKEN>/sendPoll?chat_id=chatID&question=¿A qué hora vas a entrenar hoy?&options=["TKD 11h","TKD 16h","TKD 18h"]&is_anonymous=false&type=regular&allows_multiple_answers=true
Con esto ya puedes enviar una encuesta desde el navegador. Falta programarlo. Para eso lo que hice fue usar IFTTT usando como disparador días de la semana y hora y como resultado la URL con la encuesta.
Objetivo conseguido. 😉