实体告警消息实时发送通知到钉钉

本文将为你介绍如何使用数据推送函数,编写的自定义数据处理的规则与推送逻辑的脚本将实体告警的消息推送到钉钉。

示例

创建钉钉通知机器人

打开钉钉应用,选择需要收取消息的群。进入群设置,选择机器人。

null

选择添加一个类型为自定义的机器人。

null

设置机器人的名字,安全设置方式选择自定义关键词的方式,输入设置的关键词。设置完成后,点击保存。(也可以设定为其他方式,对应的请求内容同步修改即可)

null

添加完成,保存好webhook地址已备用。

null

创建数据推送函数

在任务管理-数据推送函数下,创建一个名为”钉钉通知“的函数。创建完成后,进入编辑脚本页面。

null

编辑函数脚本

根据钉钉开放文档——自定义机器人发送群消息API接口,编写钉钉通知发送的内容。保存后将函数保持启用状态。 null

/**
 * Http数据交互转发模式
 * 请求脚本已经内置参数:
 * @in-Object {Object} req - 内置函数对象,支持Http同步调用
 * @function {function} req.open(method,url) - 打开一个新的请求
 * @function-param {string} method - HTTP method,必传
 * @function-param {string} url - 请求地址,必传
 * @function {function} req.setRequestHeader(header,value) - 设置请求的 HTTP 头,非必传
 * @function-param {string} header - 请求头key
 * @function-param {string} value - 请求头value
 * @function {function} req.send(data) -发送请求
 * @function-param {string} data -请求体,非必传
 * @response {int} req.readyState -获取请求的状态
 * @response {string} req.responseText - 获取响应文本
 * @response {int} req.status - 获取响应的HTTP状态码
 * @response {string} req.statusText - 获取响应的状态文本
 * @in-param {jsonObject} body - 内置参数,上行数据的固定属性,可用于计算后二次转发
 * @param {string} body.messageId - 消息编号
 * @param {string} body.productId - 产品唯一标识
 * @param {string} body.productName - 产品名称
 * @param {string} body.sourceType - 资源类型 0 动态资源 1 静态资源
 * @param {string} body.deviceId - 设备编号
 * @param {string} body.deviceSecret - 设备密钥,与deviceId同时存在
 * @param {string} body.deviceName - 设备名称
 * @param {string} body.deviceStatus - 设备状态 0 未启用 1 已启用
 * @param {string} body.location - 设备位置纬经度(默认0 0 0 = latitude longitude elevation)
 * @param {string} body.identifier - 事件标识符,事件上报时存在,否则Val为空
 * @param {string} body.name - 功能名称,事件上报时存在,否则Val为空
 * @param {string} body.type - 事件类型 0 信息 1 告警,事件上报时存在,否则Val为空
 * @param {string} body.description - 事件描述,事件上报时存在,否则Val为空
 * @param {string} body.timestamp - 上行数据传输时间。时间戳格式为数值,值为自GMT 1970年1月1日0时0分到当前时间点所经过的毫秒数
 * @param {string} body.templateId - 消息(事件、属性详情)模板唯一标识符
 * @param {string} body.templateURL - 消息(事件、属性详情)模板访问链接
 * @param {string} body.version - 版本号。若不传入此参数,则默认default
 * @param {jsonObject} body.payload - 验证解析后的上行数据
 */

var alarmType = body.type == 1 ? '告警' : '信息';
var sendMessage = {
    "at": {
        "isAtAll": false
    },
    "markdown": {
        "title": body.deviceName + alarmType + "推送",
        "text": "### " + body.deviceName + alarmType + "推送 \n > " + body.deviceName + "处发生【" + body.name + "】,请注意查看 \n > ######  " + new Date() + "触发 [详情](../02_快速上手/02_快速上手/02.03_任务管理/" + body.templateURL + ")"
    },
    "msgtype": "markdown"
}

req.open("POST", "https://oapi.dingtalk.com/robot/send?access_token=e362881597d97b44d1a502e820875cc0a5c336f4f3f8fa8d7ed91ea0dfc85421", true);
req.setRequestHeader("Content-Type", "application/json");
req.send(JSON.stringify(sendMessage));

创建任务

在任务管理页面,创建一个任务名为“功率过载提醒“的任务。

任务逻辑

智能插座设备发生功率过载事件 触发 执行任务 发送消息到钉钉通知

创建完成后,进入编辑页面。根据任务逻辑编辑对应的规则。设定触发条件为事件触发:智能电压设备发生功率过载事件,添加执行任务类型为”数据推送函数“,选择数据推送函数”钉钉通知“。编辑完成后保存并开启任务。

null

模拟事件触发

使用APIFox模拟功率过载事件的触发。

结果验证

事件触发后,前往钉钉群查看消息通知。 null

作者:北京-产品-yantings  创建时间:2025-03-03 18:44
最后编辑:北京-产品-yantings  更新时间:2026-07-16 17:09