概述
Telegram支持创建Telegram Bot,作为第三方应用。
本教程将演示如何创建Telegram Bot,
并配置ThingsBoard rule engine,通过REST API Call扩展向Telegram App发送通知。
使用场景
本教程基于 create & clear alarms 教程及其使用场景。 我们将复用前述教程的rule chains,并添加若干rule节点以集成Telegram。
假设设备使用DHT22传感器采集温度读数并推送到ThingsBoard。 DHT22适用于 -40到80°C。温度超出该范围时生成Alarm,alarm创建时向Telegram App发送通知。
本教程将配置ThingsBoard Rule Engine,实现:
-
alarm创建时向用户发送消息通知。
-
使用Script Transform节点将当前alarm类型及其originator加入消息正文。
前置条件
请确保已完成以下指南并阅读所列文章:
消息流
本节说明本教程中各节点的作用:
- Node A:Transform Script 节点。
- 用于构建Telegram消息通知的正文。
- Node B:REST API Call 节点。
- 将Telegram消息payload发送到配置的REST端点。本示例中为Telegram REST API。
创建Telegram机器人
BotFather 是帮助您创建新机器人和修改其设置的主机器人。
创建完成后,可为新机器人生成授权令牌。 令牌是一个类似 ‘110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw’ 的字符串,用于授权机器人。
前置条件:
- ThingsBoard已运行
- 已创建Telegram机器人
获取Chat ID
下一步需要获取Chat ID。Chat ID用于通过HTTP API发送消息。
获取Chat ID的几种方式:
-
首先,需向机器人发送一条消息:
-
在私聊中;

-
在已将机器人添加为成员的群组中。

其中 ThingsBoard_Bot 为Telegram机器人的名称。 -
-
随后,在浏览器中打开并访问以下URL:
1
2
3
4
5
https://api.telegram.org/bot"YOUR_BOT_TOKEN"/getUpdates
"YOUR_BOT_TOKEN" has to be replaced by the authentication token of your bot, e.g.:
https://api.telegram.org/bot110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw/getUpdates
在返回数据中可找到 ‘id’ 字段,即chat_id。
- 第一种方式:

- 第二种方式:

此后即可开始配置规则引擎以使用REST API Call扩展。
配置规则链
本教程使用 create & clear alarms 教程中的规则链。
在 消息流 章节所述的节点基础上,修改了规则链 Create & Clear Alarms
并将其重命名为:Create/Clear Alarms & send notifications to Telegram。
以下截图展示了上述规则链的大致结构:
- Create/Clear Alarms & send notifications to Telegram:

- Root Rule Chain:

以下章节说明如何从零修改该规则链。
修改 Create/Clear Alarm & Send Email
添加所需节点
在该规则链中,将创建2个节点,如下节所述:
节点A:Transform Script
-
添加 Transform Script 节点,并以relation type Created 连接到 Create Alarm 节点。
该节点用于构建消息通知正文。
正文模板需包含2个参数:-
chat_id;
-
text。
出站消息示例:
-
1
{"chat_id" : "PUT YOUR CHOSEN CHAT_ID", "text" : "SOME MESSAGE YOU WANT TO RECEIVE"}
- 使用以下脚本实现:
1
2
3
4
var newMsg ={};
newMsg.text = '"' + msg.name + '"' + " alarm was created for device: " + '"' + metadata.deviceName + '"';
newMsg.chat_id = 337878729; //has to be replaced by the actual chat id
return {msg: newMsg, metadata: metadata, msgType: msgType};
- 在Name字段填入 New telegram message。

节点B:REST API Call
-
添加 REST API Call 节点,并以relation type Success 连接到 Transform Script 节点。
该节点将完整Message payload发送到配置的REST端点。本例中为Telegram REST API。
本教程将使用 ‘/sendMessage’ 作为Telegram Bot API的action path来发送消息。 -
按下表填写各字段:
字段 输入数据 Name REST API telegram Call Endpoint URL pattern https://api.telegram.org/bot"YOUR_BOT_TOKEN"/sendMessage Request method POST Header Content-Type Value application/json

发布telemetry并验证
发布设备telemetry将使用REST API:Telemetry upload APIs。为此需从设备 Thermostat Home 复制设备访问令牌。

发布temperature = 99。此时应创建alarm:
1
2
3
curl -v -X POST -d '{"temperature":99}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
**需将$ACCESS_TOKEN替换为实际设备令牌**
需注意,alarm更新时不会向Telegram App发送消息,仅在alarm创建时会发送。
最后,可确认消息已正确接收:
- 第一种方式:

- 第二种方式:

此外,您可以:
-
在Create和Clear Alarm节点中配置Alarm Details功能。
-
在Dashboard中添加alarm部件以可视化alarm。
-
定义其他alarm处理逻辑,例如发送电子邮件。
请参阅 See Also 部分的链接了解具体操作。
参见
-
Create & Clear Alarms: alarm details 指南 — 了解如何在Alarm节点中配置Alarm Details功能
-
Create & Clear Alarms: configure dashboard 指南 — 了解如何向dashboard添加Alarm部件
-
Send Email 教程