Uso de Telegram desde NodeRED
Contingut
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
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).
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.
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:
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.