Uso de Telegram desde NodeRED

De binefa.com
Salta a la navegació Salta a la cerca

Bot de Telegram

Para poder interactuar con la aplicación de mensajería Telegram se puede usar un Bot.

Tenei que crear vuestro propio bot desde @BotFather

Una vez habéis seleccionado @BotFather para enviarle un mensaje, os presenta un texto en inglés explicándoos lo que un bot puede hacer. Para empezar a interaccionar y generaros vuestro propio bot, tenéis que escribir al chat, de Telegram, con @BotFather:

/start

Ahora os volverá a salir un texto con un listado de órdenes para interactuar. El siguiente paso es pedirle la creación de vuestro propio bot:

/newbot

Os pregunta el nombre de vuestro bot. Después de introducirlo, os pide un nombre de usuario para vuestro bot. El nombre de usuario tiene que acabar en 'bot', por ejemplo TetrisBot o tetris_bot.

Después de esta última acción @BotFather nos proporciona el identificador único de acceso (token) al API HTTP de Telegram. Este identificador es clave para poder interaccionar.

Ahora salís del chat con @BotFather e iniciáis un nuevo chat con el nuevo bot creado. Enviadle al nuevo bot esta orden:

/start

En caso de querer añadir vuestro bot a un grupo de Telegram tenéis que hacer que sea un administrador más del grupo y después iniciarlo en el grupo:

/start@nomUsuariDeVuestro_bot

Una vez ya tenéis vuestro propio bot creado, podéis interactuar mediante el API de Telegram.

Automatización de un bot de Telegram en NodeRED

caption

Un flujo de NodeRED para Telegram

Instalación

Instalad el paquete node-red-contrib-telegrambot mediante el menú de NodeRED. La alternativa es hacerlo desde el terminal:

npm install node-red-contrib-telegrambot

Recepción

Configurad el nodo receiver de NodeRed indicando en la configuració su nombre de usuario (Bot-Name) y su identificador único de acceso (Token).


caption

En la salida superior del nodo receiver conectad un nodo de depuración para visualizar los mensajes que os lleguen de vuestro bot de Telegram.

caption

Transmisión

Para transmitir por Telegram hace falta inyectar un texto (string) y hacer un JSON para transmitirlo a un nodo sender.

msg.payload = {
  "content": msg.payload,
  "chatId" : 00000000,
  "type" : "message"
}
return msg;

El chatID lo podemos saber transmitiendo mensajes desde el grupo de donde es miembro el bot. El chatID del bot acostumbra a no tener signo negativo, a diferencia de los grupos.

Ejemplo de creación de JSON destinado a un grupo:

msg.payload = {
  "content": msg.payload,
  "chatId" : -000000000,
  "type" : "message"
}
return msg;

Gestión de órdenes transmitidas por Telegram

En la recepción podemos filtrar las órdenes con el nodo switch. En este ejemplo se filtra la orden /estat:

caption

Ejercicios

  • Desde el chat del bot: Al enviar la orden /ledWon se enciende el led blanco de la placa IoT-02. Al enviar la orden /ledWoff se apaga el led blanco.
  • Desde el chat del bot: Al enviar la orden /ledReleSet el relé se pone en estado SET. Al enviar la orden /ledReleReset el relé se pone en estado RESET.
  • El chat de vuestro bot recibe un mensaje cuando se aprieta vuestro botón I34 y cuando se deja de apretar.
  • Desde el chat del grupo donde pertenece vuestro bot: Al enviar la orden /entradas el bot contesta con los estados de los botones y la temperatura de la placa.