钉钉自定义机器人 node 加签
钉钉自定义机器人:官方文档
机器人群通知#
通过在钉钉群里添加自定义机器人,获得webhook地址和secret加签,根据加密规则获得可以发送消息的地址,实现消息的推送
可以集成到node脚本中,实现特定情形的群通知
node 封装代码#
bot.js
const request = require('request');
const crypto = require('crypto');
const headers= {
"Content-Type": "application/json;charset=utf-8"
};
const defaultOptions = {
msgtype: "text",
text: {
content: 'hello~'
}
}
// https://ding-doc.dingtalk.com/document/app/custom-robot-access
class Bot{
_initData = {
base_url:'',
access_token: '',
secret: ''
}
constructor(_initData){
const { access_token, secret, base_url = 'https://oapi.dingtalk.com/robot/send' } = _initData
const timestamp = new Date().getTime()
const sign = this.signFn(secret,`${timestamp}\n${secret}`)
this._webhookUrl = `${base_url}?access_token=${access_token}×tamp=${timestamp}&sign=${sign}`
}
signFn = (secret, content) =>{ // 加签
const str = crypto.createHmac('sha256', secret).update(content)
.digest()
.toString('base64');
return encodeURIComponent(str);
}
send (json = defaultOptions){
try {
let options = {
headers,
json
};
request.post(this._webhookUrl, options, function(_error, _response, body){
console.log(`send msg, response: ${JSON.stringify(body)}`);
});
}
catch(err) {
console.error(err);
return false;
}
}
}
module.exports = Bot
使用
import Bot from './bot.js'
// 初始化实例
// Webhook地址: https://oapi.dingtalk.com/robot/send?access_token=xxx
const bot = new Bot({
access_token: 'xxx', // Webhook地址后的access_token
secret: 'xxx' // 安全设置:加签的secret
})
// 发送消息
bot.send({
msgtype: "text",
text: {
content: 'hello~'
}
})
上述已封装到 npm 包 ding-bot-sdk,也可以直接安装 npm 包来使用 npm install ding-bot-sdk
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
2019-01-17 react 侧栏二级菜单组件