Enviar encuestas automáticas en Telegram

30 marzo 2021 4 mins to read
Share

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 del bot que obtienes al crearlo
  • El ID del chat donde vas a mandar los mensajes, que puede ser una persona o un grupo.

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.

Estos son los parámetros necesarios.

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
  • question= aquí escribe la pregunta en texto normal con espacios, tildes etc.
  • options= tienes que hacer una lista entre corchetes de las opciones. Máximo 10 opciones.
  • Is_anonymous= si quieres que las respuestas sean anónimas pon un true. Si quieres que se vea quien ha votado cada opción coloca un false.
  • Type= puede ser quiz si quieres que sea un cuestionario o regular si quieres que sea una encuesta.
  • Allows_multiple_answers= true si quieres que los usuarios puedan votar más de una opción o false si solo quieres que se pueda votar una opción.

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. 😉

Deja un comentario