Skip to content

通知组

通知组是可复用的通知渠道配置——企业微信、钉钉、邮件等——RPC 脚本和触发器脚本中的告警/通知动作可以通过名称引用这些渠道。只需配置一次,即可在整个组织的任意脚本中按名称使用。

配置方式

进入 系统管理 → 通知组 创建和管理通知组。

字段说明
名称脚本引用时使用的唯一标识符,如 WeCom_opsalarm_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"]
    }
}];

对比

维度alarmnotify
创建告警记录
分发至 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"]
        }
    }
];