产品定价 立即试用
社区版
入门 文档 指南 安装 架构 API 常见问题

send notification

通过通知中心使用通知模板向指定收件人发送通知。

配置

Template

定义通知内容、格式和配送渠道(Web、Email、SMS、Slack等)的通知模板。从ThingsBoard实例中选择已有的通知模板

文档信息图标

注意:仅类型为 Rule node 的通知模板可用于本规则节点。

可使用 ${key} 语法引用消息data字段、metadata及其他消息属性,在通知模板中使用入站消息中的值

文档信息图标

注意:即使对于在规则节点中通常使用 $[key] 语法的消息data字段,通知模板也要求使用 ${key} 语法。

Recipients

将接收通知的收件人组列表。可选择多个收件人组。通知系统将自动解析并在所有所选组之间去重。

JSON Schema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "TbNotificationNodeConfiguration",
  "type": "object",
  "properties": {
    "templateId": {
      "type": "object",
      "description": "ID of the notification template to use.",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "entityType": {
          "type": "string",
          "enum": [
            "NOTIFICATION_TEMPLATE"
          ]
        }
      },
      "required": [
        "id",
        "entityType"
      ]
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "description": "List of recipient target UUIDs."
    }
  },
  "required": [
    "templateId",
    "targets"
  ],
  "additionalProperties": false
}

输出消息格式

节点通过将通知请求统计添加到消息metadata来转换入站消息,同时保留原始消息data。

当通知成功处理并发送时,以下字段添加到消息metadata:

  • notificationRequestResult — 包含通知配送统计的JSON字符串,包括:
    • sent — 各配送渠道成功发送数量的映射
    • errors — 各配送渠道失败数量的映射(如有)
    • totalSent — 所有渠道成功发送的总数
    • totalErrors — 所有渠道失败的总数
    • error — 整个通知请求失败时的错误信息(成功时为null)

示例:

原始消息metadata:

1
2
3
{
  "deviceType": "sensor"
}

通知成功发送后,metadata变为:

1
2
3
4
{
  "deviceType": "sensor",
  "notificationRequestResult": "{\"sent\":{\"WEB\":1},\"errors\":{},\"totalErrors\":0,\"error\":null,\"totalSent\":1}"
}

消息data保持不变。

消息确认行为

节点的消息确认行为由 ACTORS_RULE_EXTERNAL_NODE_FORCE_ACK 环境变量控制:

  • 设为 true — 入站消息在接收后立即被确认并标记为已成功处理。创建包含更新metadata的新消息并加入队列供下一节点处理。
  • 设为 false(默认)— 入站消息在整个通知操作期间保持处理中状态。消息就地转换,其metadata使用通知结果更新,通知完成后将修改后的消息传递至下一节点。

消息处理逻辑

  1. 节点使用入站消息data、metadata、来源实体信息及配置的模板和收件人创建通知请求。
  2. 通知请求异步提交至通知中心,由通知中心向解析出的收件人发送通知。
  3. 处理完成时:
    • Success:将配送统计以 notificationRequestResult 添加到消息metadata,消息经 Success 连接路由。
    • Failure:消息经 Failure 连接路由。

输出连接

  • Success
    • 通知已成功处理并发送给收件人。
    • 出站消息metadata包含配送统计(notificationRequestResult),显示各渠道发送数量。
  • Failure
    • 意外错误:通知处理过程中发生意外错误。

示例

示例1 — 在通知中发送遥测值

发送包含设备最新遥测值的通知。

入站消息

Data:

1
2
3
4
5
{
  "temperature": 23.5,
  "humidity": 65.2,
  "pressure": 1013.25
}

Metadata:

1
2
3
4
{
  "deviceName": "Weather Station 01",
  "deviceType": "sensor"
}

节点配置

1
2
3
4
5
6
7
8
9
{
  "templateId": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "entityType": "NOTIFICATION_TEMPLATE"
  },
  "targets": [
    "784f394c-42b6-435a-983c-b7beff2784f9"
  ]
}

节点配置

ID为 a1b2c3d4-e5f6-7890-abcd-ef1234567890 的通知模板具有以下内容:

1
2
3
4
5
6
7
8
Weather Update from ${deviceName}

Current readings:
- Temperature: ${temperature}°C
- Humidity: ${humidity}%
- Pressure: ${pressure} hPa

Device type: ${deviceType}

出站消息

Data:不变。

Metadata:

1
2
3
4
5
{
  "deviceName": "Weather Station 01",
  "deviceType": "sensor",
  "notificationRequestResult": "{\"sent\":{\"WEB\":1},\"errors\":{},\"totalErrors\":0,\"error\":null,\"totalSent\":1}"
}

Success 连接路由。

结果

通知已通过Web界面成功发送给用户。通知内容:

1
2
3
4
5
6
7
8
Weather Update from Weather Station 01

Current readings:
- Temperature: 23.5°C
- Humidity: 65.2%
- Pressure: 1013.25 hPa

Device type: sensor