Ejecución de telegram-cli en consola

Algo que puede ser muy util para nuestros proyectos en Raspberry Pi, es que nos notifique de alguna forma de que algún evento controlado por sus GPIO ha sucedido. Hoy te voy a explicar como mi Raspberry Pi me envía mensajes al móvil mediante Telegram cuando se abre o se cierra la puerta de casa.

Instalar Telegram CLI

Requisitos previos

Telegram CLI (telegram-cli) es un cliente por consola del conocido servicio de mensajería. Para seguir este artículo necesitarás:

  • 1 numero de teléfono móvil que no sea el tuyo propio (es des de donde la raspberry nos enviará los mensajes)
  • Tu cuenta de telegram habitual

Instalación

Para instalar telegram nos situamos en la carpeta en la que queremos tener las carpetas del programa, para este test yo lo voy a instalar en la carpeta home.

cd /home/pi

Antes de instalar telegram-cli tenemos que tener en cuenta las dependencias que va a necesitar, por lo que vamos a instalar las siguientes librerías

sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev git

Una vez tengamos las dependencias resueltas, vamos a clonarnos el repositorio de telegram-cli

git clone --recursive https://github.com/vysheng/tg.git

Y entramos a la carpeta tg

cd ./tg

Antes de compilar el programa tenemos que hacer una pequeña modificación en el programa para que funcione correctamente, debemos editar el fichero mtproto-utils.c y decirle al compilador que omita 2 lineas del código fuente

nano tgl/mtproto-utils.c

En este fichero necesitamos buscar las funciones BN2ull y ull2BN y comentar las lineas donde aparece el texto: assert (0); // As long as nobody ever uses this code, assume it is broken. añadiendo // delante de assert(0); El fichero debe quedar de la siguiente forma:

static unsigned long long BN2ull (TGLC_bn *b) {
  if (sizeof (unsigned long) == 8) {
    return TGLC_bn_get_word (b);
  } else if (sizeof (unsigned long long) == 8) {
    //assert (0); // As long as nobody ever uses this code, assume it is broken.
    unsigned long long tmp;
    /* Here be dragons, but it should be okay due to be64toh */
    TGLC_bn_bn2bin (b, (unsigned char *) &tmp);
    return be64toh (tmp);
  } else {
    assert (0);
  }
}

static void ull2BN (TGLC_bn *b, unsigned long long val) {
  if (sizeof (unsigned long) == 8 || val < (1ll << 32)) {
    TGLC_bn_set_word (b, val);
  } else if (sizeof (unsigned long long) == 8) {
    //assert (0); // As long as nobody ever uses this code, assume it is broken.
    htobe64(val);
    /* Here be dragons, but it should be okay due to htobe64 */
    TGLC_bn_bin2bn ((unsigned char *) &val, 8, b);
  } else {
    assert (0);
  }
}

Guardamos y ahora vamos a ejecutar el archivo de configuración del paquete y vamos a compilar el programa en nuestra Raspberry Pi (Este proceso va a tardar varios minutos).

./configure --disable-openssl
make

Pasados unos minutos ya tendremos telegram instalado en nuestro pequeño ordenador.

¿Como se usa?

Llegados a este punto vamos a necesitar el numero de teléfono preparado para la Raspberry Pi y un móvil para poder recibir el SMS de confirmación.

¡Vamos a ejecutar el programa por primera vez! Avisaros que la primera vez que ejecutamos telegram-cli y el inicio de sesión / registro es un proceso que puede llevar hasta 10 min.

¡Vamos a ello! Entramos en la carpeta bin

cd ./bin

Y ejecutamos telegram-cli -k tg.pub, si te da error también podéis ejecutar: telegram-cli -k tg-server.pub -W

Cuando te solicite el número recordad meter el prefijo de vuestro país, de momento para el mío es +34. Después de esto Telegram te enviará un mensaje con el código de confirmación que también deberéis introducir.

./telegram-cli -k tg.pub
Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.
Telegram-cli uses libtgl version 2.1.0
I: config dir=[/home/pi/.config/telegram-cli]
phone number: +346XXXXXXXX
code ('CALL' for phone code): 89541

Cuando el proceso haya completado estarás dentro de telegram-cli, puedes escribir help para que te muestre todos los comandos disponibles.

Lo primero que debes hacer para poder enviar un mensaje es dar de alta un contacto con el comando

add_contact +34XXXXXXXXX Nombre Apellido 

Después ya podemos hacer nuestro primer test

msg Nombre_Apellido "Hola Telegram!"

Vale pero… puedo usarlo des de la linea de comandos sin estar en la terminal? ¡SI!

Para usarlo con una invocación directa des de terminal podemos hacerlo de la siguiente manera:

telegram-cli -k tg-server.pub -e "msg Nombre_Apellido Hello World"

Ten en cuenta que el nombre y el apellido deben ir separados por un _

Espero que este artículo te haya servido, ¡hasta la próxima!

Last modified: November 28, 2019

Author

Comments

Alex Garcia 

Hola Josep,
Usas Raspbian u otra distribución?

    Author
    Josep Escobar 

    Buenos días Alex, uso Raspbian, pero se puede instalar en cualquier distribución Linux.

Leave a Reply to Alex Garcia Cancel reply

Your email address will not be published.