通知组
通知组是可复用的通知渠道配置——企业微信、钉钉、邮件等——RPC 脚本和触发器脚本中的告警/通知动作可以通过名称引用这些渠道。只需配置一次,即可在整个组织的任意脚本中按名称使用。
配置方式
进入 系统管理 → 通知组 创建和管理通知组。
| 字段 | 说明 |
|---|---|
| 名称 | 脚本引用时使用的唯一标识符,如 WeCom_ops、alarm_email。在脚本的 notice_groups 数组中填写此名称。大小写敏感。 |
| 渠道 | 通知渠道类型:企业微信、钉钉、邮件、Slack、Telegram 等。 |
| 渠道配置 | 渠道特有参数,如 Webhook URL、收件人地址或 SMTP 配置。 |
保存后,该通知组名称立即对整个组织的所有脚本生效。
脚本如何使用通知组
type: "alarm" — 创建告警并通知
需要在 ThinkLink 告警中心留存记录,同时推送通知时使用。
javascript
return [{
type: "alarm",
params: {
id: "over_temp_01", // 告警唯一标识
level: "high", // low | mid | high | urgent
title: "温度过高",
desc: `当前温度:${device.telemetry_data.temperature}°C`,
notice_groups: ["WeCom_ops", "alarm_email"]
}
}];每条 alarm 动作须搭配一条 clear 动作,在条件恢复时关闭告警:
javascript
return [{
type: "alarm",
params: { id: "over_temp_01", type: "clear" }
}];type: "notify" — 仅发送消息(不写入告警库)
用于提醒、日报或第三方回调结果回执——不需要在告警中心留存记录时使用。
javascript
return [{
type: "notify",
params: {
title: "日报",
desc: "全部设备在线。",
notice_groups: ["WeCom_ops"]
}
}];对比
| 维度 | alarm | notify |
|---|---|---|
| 创建告警记录 | ✅ | ❌ |
分发至 notice_groups | ✅ | ✅ |
需要搭配 clear 动作 | ✅ | ❌ |
按 id 去重 | ✅ | ❌ |
💡 既要"留痕"又要"推送"→ 用
type: "alarm";只想"推送不留痕"→ 用type: "notify"。两者共用同一套notice_groups分发逻辑。
在设备上存储通知组列表
常见模式——设备级通知路由:将通知组名称列表保存在设备服务端属性的 notify 键下,脚本运行时动态读取,无需在脚本中硬编码组名。
在设备详情页配置(服务端属性):
Key: notify
Value: ["WeCom_ops", "alarm_email"]在 RPC 或触发脚本中读取:
javascript
// 直接读取
let notify = params?.notify ?? []; // params.notify 即 device.server_attrs.notify(扁平数组)
// TriggerHelper 会自动完成这一步:
// this.group = device.server_attrs.notify
// 直接传给 notice_groups 即可:
return [{
type: "alarm",
params: {
id: "over_temp",
notice_groups: notify,
...
}
}];继承 TriggerHelper(来自 tklHelper)时,构造函数会自动从 device.server_attrs.notify 读取并存入 this.group,无需手动提取。
消息格式与渠道类型
desc 字段的格式由接收方的渠道类型决定:
| 渠道 | 渲染方式 | 建议 desc 格式 |
|---|---|---|
| 企业微信 | Markdown | 使用 **粗体**、\n 换行、emoji |
| 钉钉 | Markdown | 同企业微信 |
| 邮件 | HTML / 纯文本 | 支持 HTML;正文保持简洁 |
| Slack / Telegram | 纯文本 | Markdown 效果因客户端而异 |
若一条动作同时指定了不同渠道类型的通知组,同一份
desc会被各渠道按自己的方式渲染——意味着你需要选择一种格式,另一渠道的展示效果可能欠佳。如需每个渠道都呈现得当,请按渠道拆分为多条type: "notify",各写各的格式。
示例:按渠道拆分推送
javascript
return [
{ // 企业微信 — Markdown 格式
type: "notify",
params: {
title: "告警已恢复",
desc: "**设备:**" + device.name + "\n**状态:** 已恢复",
notice_groups: ["WeCom_ops"]
}
},
{ // 邮件 — 纯文本
type: "notify",
params: {
title: "告警已恢复",
desc: "设备:" + device.name + " 已恢复正常。",
notice_groups: ["alarm_email"]
}
}
];