使用Telegram Bot的智能手机上的通知和警报

概述

Telegram提供了创建被视为第三方应用程序的Telegram Bot的可能性。

因此在本教程中我们将演示如何创建Telegram Bot 并将你的ThingsBoard规则引擎配置为能够使用Rest API调用扩展将通知发送到Telegram App。

用例

本教程基于创建和清除警报教程。

我们将重用上述教程中的规则链,并将添加更多规则节点以与Telegram集成

假设你的设备正在使用DHT22传感器来收集温度读数并将其推送到ThingsBoard。

DHT22传感器适用于-40至80°C的温度读数。如果温度超出范围,我们希望生成警报,并在警报创建时向Telegram App发送通知。

在本教程中我们将ThingsBoard规则引擎配置为:

  • 如果警报已创建则向用户发送消息通知。

  • 使用Script Transform节点将当前警报类型及其始发者添加到消息正文中。

先决条件

我们假设你已完成以下指南并查看了以下文章:

消息流

在本节中我们将解释本教程中每个节点的用途:

  • 节点A: Transform Script
  • 此节点将用于创建电报消息通知的正文。
  • 节点B: REST API Call
    • 该节点将电报消息payload发送到已配置的Telegram REST API的REST终节点中。

创建Telegram Bot

The BotFather是主要的机器人可帮助你create新的bot并更改其设置。

Telegram Bot创建完成后为新Telegram Bot生成授权令牌 ‘110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw’

先决条件:

  • ThingsBoard 启动并运行
  • Telegram Bot 创建

获取Chat ID

在下一步中,我们需要获取一个Chat ID通过HTTP API发送 Chat ID。

有以下几种获取Chat ID的方法:

  • 首先你需要向Bot发送一些消息:

    • 私有聊天;

      image

    • Bot被添加为成员的组中。

      image


    ThingsBoard_Bot是Telegram Bot名称。

  • 接下来,打开你的网络浏览器并输入以下网址:

https://api.telegram.org/bot"YOUR_BOT_TOKEN"/getUpdates

"YOUR_BOT_TOKEN" 必须替换为你的机器人的身份验证令牌, 例如:

https://api.telegram.org/bot110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw/getUpdates

从即将到来的数据中,你可以找到字段 ‘id’。这就是chat_id。

  • 第一种选择:

image

  • 第二种选择:

image

之后,你可以开始配置规则引擎以使用Rest API调用扩展。

配置Rule Chains

在本教程中,我们使用了创建和清除警报教程中的规则链。

我们通过添加上述消息流部分中所述的节点,修改了规则链Create & Clear Alarms并将此规则链重命名为:Create/Clear Alarms & send notifications to Telgram


以下屏幕截图显示了以上规则链的外观:

  • Create/Clear Alarms & send notifications to Telgram:

image

  • Root Rule Chain:

image


下载json文件Create/Clear Alarms & send notifications to Telgram规则链。

下一节将向你展示如何从头开始修改此规则链。

修改Create/Clear Alarm & Send Email

添加所需的节点

在此规则链中你将创建2个节点如以下各节所述:

节点A: Transform Script
  • 添加Transform Script 节点并将其连接到关联类型为CreatedCreate Alarm节点。
    此节点将用于创建消息通知的正文。
    模板必须具有2个参数:

    • chat_id;

    • text.

    这是出站消息的示例:

{"chat_id" : "PUT YOUR CHOSEN CHAT_ID", "text" : "SOME MESSAGE YOU WANT TO RECEIVE"}
  • 请使用以下脚本:
 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};
  • 输入名称New telegram message.

image

节点B: REST API Call
  • 添加REST API Call节点并将其连接到关联类型为SuccessTransform Script节点。

  • 此节点将向配置的REST端点发送完整的消息payload。在我们的例子中它是Telegram REST API。

  • 在本教程的范围内,我们将使用‘/sendMessage’动作路径来引用Telegram Bot API发送消息。

  • 填写下表中输入的数据字段:

    FieldInput Data
    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

进行遥测并验证

对于发布设备遥测我们将使用Rest API遥测上传API。为此我们将需要复制设备Thermostat Home的访问令牌。

image

发布temperature = 99.创建警报:

curl -v -X POST -d '{"temperature":99}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

**你需要将$ACCESS_TOKEN替换为实际的设备令牌**

你应该了解仅在创建警报的情况下,更新警报时不会将消息发送到Telegram App。

最后我们可以看到收到的消息具有正确的值:

  • 第一种选择:

image

  • 第二种选择:

image

另外你可以:

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

  • 通过添加警报部件以可视化警报来配置仪表板。

  • 定义用于警报处理的其他逻辑例如:发送电子邮件。

请参阅另请参阅部分下的的链接,以了解如何执行此操作。


另请参阅

下一步

  • 入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。

  • 安装指南 - 了解如何在各种操作系统上安装ThingsBoard。

  • 设备连接 - 了解如何根据您的连接方式或解决方案连接设备。

  • 数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。

  • 数据处理 - 了解如何使用ThingsBoard规则引擎。

  • 数据分析 - 了解如何使用规则引擎执行基本的分析任务。

  • 高级功能 - 了解高级ThingsBoard功能。

  • 开发指南 - 了解ThingsBoard中的贡献和开发。