产品定价 立即试用
云平台
欧洲地区
文档 > 集成 > 使用Telegram机器人实现智能手机上的通知和告警
入门
指南 API 常见问题
目录

使用Telegram Bot在手机上接收通知与告警

概述

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的几种方式:

  • 首先,需向机器人发送一条消息:

    • 在私聊中;

      image

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

      image


    其中 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。

  • 第一种方式:

image

  • 第二种方式:

image

此后即可开始配置规则引擎以使用REST API Call扩展。

配置规则链

本教程使用 create & clear alarms 教程中的规则链。 在 消息流 章节所述的节点基础上,修改了规则链 Create & Clear Alarms
并将其重命名为:Create/Clear Alarms & send notifications to Telegram


以下截图展示了上述规则链的大致结构:

  • Create/Clear Alarms & send notifications to Telegram:

image

  • Root Rule Chain:

image


以下章节说明如何从零修改该规则链。

修改 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

image

节点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

image

发布telemetry并验证

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

image

发布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创建时会发送。

最后,可确认消息已正确接收:

  • 第一种方式:

image

  • 第二种方式:

image

此外,您可以:

  • 在Create和Clear Alarm节点中配置Alarm Details功能。

  • 在Dashboard中添加alarm部件以可视化alarm。

  • 定义其他alarm处理逻辑,例如发送电子邮件。

请参阅 See Also 部分的链接了解具体操作。


参见

下一步