在日常项目开发中,生产环境往往会出现一些不可预测的大大小小问题,虽然可以给项目中配置日志以及报警,但处理人无法在第一时间收到消息,集成钉钉机器人后,项目出现报警,可以直接在群里 @ 到相对应的处理人进行提醒
钉钉自定义机器人消息官方文档:https://open.dingtalk.com/document/group/custom-robot-access
1.选择需要添加机器人的群聊 -> 打开群设置 -> 选择智能群助手
2.点击 智能群助手,添加机器人
3.添加机器人,拿到 Webhook
获取到 Webhook 地址后,用户可以向该地址发起 HTTP POST 请求,即可实现给该钉钉群发送消息。
当前自定义机器人支持以下消息类型,请根据自己的使用场景选择合适的类型,详情参见上方的官方链接。
文本 (text)
链接 (link)
markdown(markdown)
ActionCard
FeedCard
自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员收到该消息时,会有@消息提醒。免打扰会话仍然通知提醒,首屏出现“有人@你”。
本文测试使用的消息是
文本(text)
官网有 java 以及 php 的测试案例,这里使用的是 node 服务
/**
* 自定义钉钉机器人消息
* @route POST /dingtalk/send
* @group 钉钉 - 接入钉钉的机器人提示
* @param {string} message.query.required - 需要发送的文本消息
* @param {Array} mobiles.query - 需要提醒的处理人
* @returns {object} 200 - 发送成功
* @returns {Error} 500 - 发送失败
*/
router.post('/dingtalk/send', (req, res) => {
let body = req.body
if (!body.mobiles) {
body.mobiles = ['需要被 @ 的手机号码']
}
let params = {
msgtype: 'text',
text: {
// 程序报错就是定义机器人使用的关键词,每次发送消息必须包含
content: `[程序报错]:${body.message}`
},
at: {
atMobiles: body.mobiles,
isAtAll: false
}
}
/*
axios 请求转发
access_token=xxxxx,
access_token是必须的,每个不同的机器人有不同的access_token
*/
axios
.request({
baseURL: 'https://oapi.dingtalk.com',
url: '/robot/send?access_token=xxxxx', // 注意:需要设置正确的token
headers: {
'Content-type': 'application/json;charset=UTF-8'
},
method: 'POST',
data: params
})
.then((result) => {
res.send({
resp_code: 0,
resp_msg: result.data
})
})
.catch((err) => {
res.status(500).send({
resp_code: 1,
resp_msg: err
})
})
})
成功发送消息