Enviar notificaciones a Telegram con curl y la Bot API

·3 min de lectura·

La Bot API de Telegram permite enviar mensajes a un chat mediante peticiones HTTPS. Con curl puedes hacer una prueba desde un servidor o integrar un aviso sencillo en una tarea administrativa, como el resultado de una copia de seguridad [1].

Para enviar mensajes necesitas un bot, su token de acceso y el identificador del chat de destino. El token permite controlar el bot, así que trátalo como una contraseña: no lo incluyas en notas, repositorios ni capturas [2].

Preparar el bot y obtener el identificador del chat

Crea o selecciona un bot mediante BotFather y guarda su token en un lugar protegido. Después, abre una conversación con el bot y envíale un mensaje; esto genera una actualización que se puede consultar con getUpdates [1][2].

En una sesión de Bash, lee el token sin mostrarlo en pantalla ni escribir su valor literal en el comando:

read -r -s -p "Token del bot: " TELEGRAM_BOT_TOKEN
printf '\n'

Consulta las actualizaciones. La configuración de curl se envía por la entrada estándar para que el token no aparezca como argumento del proceso:

printf 'url = "https://api.telegram.org/bot%s/getUpdates"\n' \
  "$TELEGRAM_BOT_TOKEN" | curl --silent --show-error --config -

En la respuesta JSON, localiza message → chat → id. Ese valor es el chat_id para enviar el mensaje. La actualización puede contener texto privado; no compartas la respuesta completa si no es necesario.

getUpdates y los webhooks son dos métodos excluyentes para recibir actualizaciones. Si el bot ya tiene un webhook configurado, la consulta con getUpdates no funcionará [1].

Enviar un mensaje de prueba

Guarda el identificador obtenido en una variable de la misma sesión y envía el texto. Sustituye el marcador por el chat_id correcto:

TELEGRAM_CHAT_ID='<CHAT_ID_EJEMPLO>'

{
  printf 'url = "https://api.telegram.org/bot%s/sendMessage"\n' \
    "$TELEGRAM_BOT_TOKEN"
  printf 'data-urlencode = "chat_id=%s"\n' "$TELEGRAM_CHAT_ID"
  printf 'data-urlencode = "text=%s"\n' "Prueba de notificación desde el servidor"
} | curl --silent --show-error --config -

sendMessage necesita un destino (chat_id) y el texto del mensaje. curl muestra la respuesta JSON de la API; comprueba que la respuesta indique éxito y que el mensaje llegue al chat esperado [1].

Cuando termines, elimina el token de la sesión actual:

unset TELEGRAM_BOT_TOKEN

Diagnóstico básico

  • No aparecen actualizaciones: comprueba que el usuario ya haya iniciado el bot y enviado un mensaje; revisa también si hay un webhook activo.
  • La API indica que el chat no es válido: vuelve a obtener el chat.id y confirma que estás usando el destino correcto.
  • No llega el mensaje: revisa el resultado JSON, el token y que el bot pueda escribir en ese chat.
  • El token se expuso: revócalo y genera uno nuevo desde BotFather. Telegram indica que el token permite controlar el bot [2].

En resumen

getUpdates sirve para inspeccionar actualizaciones y localizar el chat_id; sendMessage envía el aviso. Mantén el token fuera del contenido de los scripts y del historial del shell, verifica la respuesta de la API y limita cada mensaje a un destino que hayas comprobado.

📚 Fuentes consultadas

  1. Telegram Bot API — Telegram
  2. Telegram Bot Features: BotFather y gestión del token — Telegram

Imagen

Envío de notificaciones a Telegram desde la terminal

¿Te ha resultado útil?

Compártelo con tu red de contactos profesionales.

Comentarios (0)

Sé el primero en comentar.