feat: 新增企业微信应用推送 (#217)

Fixed #217
This commit is contained in:
shanmite 2022-11-05 12:20:01 +08:00
parent e0a8ce5b20
commit b51882819a
3 changed files with 91 additions and 2 deletions

View File

@ -186,7 +186,8 @@ Chrome浏览器:
| `IGOT_PUSH_KEY` | iGot推送 | iGot聚合推送支持多方式推送确保消息可达。 [参考文档](https://wahao.github.io/Bark-MP-helper ) | | `IGOT_PUSH_KEY` | iGot推送 | iGot聚合推送支持多方式推送确保消息可达。 [参考文档](https://wahao.github.io/Bark-MP-helper ) |
| `QQ_SKEY` | 酷推(Cool Push)推送 | 推送所需的Skey,登录后获取Skey [参考文档](https://cp.xuthus.cc/) | | `QQ_SKEY` | 酷推(Cool Push)推送 | 推送所需的Skey,登录后获取Skey [参考文档](https://cp.xuthus.cc/) |
| `QQ_MODE` | 酷推(Cool Push)推送 | 推送方式(send或group或者wx默认send) [参考文档](https://cp.xuthus.cc/) | | `QQ_MODE` | 酷推(Cool Push)推送 | 推送方式(send或group或者wx默认send) [参考文档](https://cp.xuthus.cc/) |
| `QYWX_KEY` | 企业微信推送 | 密钥,企业微信推送 webhook 后面的 key [详见官方说明文档](https://work.weixin.qq.com/api/doc/90000/90136/91770) | | `QYWX_AM` | 企业微信应用 | 第一个值是企业id第二个值是secret第三个值@all(或者成员id)第四个值是AgentID (逗号分割) 可查看此[教程](http://note.youdao.com/s/HMiudGkb) [官方文档](https://developer.work.weixin.qq.com/document/path/90236) |
| `QYWX_KEY` | 企业微信Bot推送 | 密钥,企业微信推送 webhook 后面的 key [详见官方说明文档](https://work.weixin.qq.com/api/doc/90000/90136/91770) |
| `PUSH_PLUS_TOKEN` | pushplus推送 | 微信扫码登录后一对一推送或一对多推送下面的token(您的Token) [官方网站](http://pushplus.hxtrip.com/) | | `PUSH_PLUS_TOKEN` | pushplus推送 | 微信扫码登录后一对一推送或一对多推送下面的token(您的Token) [官方网站](http://pushplus.hxtrip.com/) |
| `PUSH_PLUS_USER` | pushplus推送 | 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码)注:(1、需订阅者扫描二维码 2、如果您是创建群组所属人也需点击“查看二维码”扫描绑定否则不能接受群组消息推送),只填`PUSH_PLUS_TOKEN`默认为一对一推送 | | `PUSH_PLUS_USER` | pushplus推送 | 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码)注:(1、需订阅者扫描二维码 2、如果您是创建群组所属人也需点击“查看二维码”扫描绑定否则不能接受群组消息推送),只填`PUSH_PLUS_TOKEN`默认为一对一推送 |
| `QMSG_KEY` | [Qmsg酱](https://qmsg.zendee.cn)私聊推送 | [Qmsg注册](https://qmsg.zendee.cn/login.html) | | `QMSG_KEY` | [Qmsg酱](https://qmsg.zendee.cn)私聊推送 | [Qmsg注册](https://qmsg.zendee.cn/login.html) |

View File

@ -75,6 +75,7 @@ module.exports = Object.freeze({
TG_PROXY_PORT: "", TG_PROXY_PORT: "",
DD_BOT_TOKEN: "", DD_BOT_TOKEN: "",
DD_BOT_SECRET: "", DD_BOT_SECRET: "",
QYWX_AM: "",
QYWX_KEY: "", QYWX_KEY: "",
IGOT_PUSH_KEY: "", IGOT_PUSH_KEY: "",
PUSH_PLUS_TOKEN: "", PUSH_PLUS_TOKEN: "",

View File

@ -43,6 +43,12 @@ let DD_BOT_TOKEN = '';
//密钥机器人安全设置页面加签一栏下面显示的SEC开头的字符串 //密钥机器人安全设置页面加签一栏下面显示的SEC开头的字符串
let DD_BOT_SECRET = ''; let DD_BOT_SECRET = '';
// ================================企业微信应用通知设置区域====================================
// 此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236)
// 环境变量名 QYWX_AM 依次填入 corpid,corpsecret,touser(注多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型)
// 注意用,号隔开(英文输入法的逗号)例如wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat
let QYWX_AM = '';
// =======================================企业微信机器人通知设置区域=========================================== // =======================================企业微信机器人通知设置区域===========================================
//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770)例如693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa //此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770)例如693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
//注此处设置github action用户填写到Settings-Secrets里面(Name输入QYWX_KEY) //注此处设置github action用户填写到Settings-Secrets里面(Name输入QYWX_KEY)
@ -125,6 +131,10 @@ if (process.env.DD_BOT_TOKEN) {
} }
} }
if (process.env.QYWX_AM) {
QYWX_AM = process.env.QYWX_AM;
}
if (process.env.QYWX_KEY) { if (process.env.QYWX_KEY) {
QYWX_KEY = process.env.QYWX_KEY; QYWX_KEY = process.env.QYWX_KEY;
} }
@ -169,7 +179,7 @@ if (process.env.SMTP_TO_USER) {
async function sendNotify(text, desp, params = {}) { async function sendNotify(text, desp, params = {}) {
//提供10种通知方式 //提供种通知方式
await Promise.all([ await Promise.all([
//微信server酱 //微信server酱
serverNotify(text, desp), serverNotify(text, desp),
@ -183,6 +193,8 @@ async function sendNotify(text, desp, params = {}) {
tgBotNotify(text, desp), tgBotNotify(text, desp),
//钉钉机器人 //钉钉机器人
ddBotNotify(text, desp), ddBotNotify(text, desp),
//企业微信应用
qywxAmNotify(text, desp),
//企业微信机器人 //企业微信机器人
qywxBotNotify(text, desp), qywxBotNotify(text, desp),
//iGot //iGot
@ -529,6 +541,81 @@ function ddBotNotify(text, desp) {
}) })
} }
function qywxAmNotify(text, desp) {
return new Promise(resolve => {
if (QYWX_AM) {
const QYWX_AM_AY = QYWX_AM.split(',');
send({
method: 'POST',
url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`,
contents: {
corpid: `${QYWX_AM_AY[0]}`,
corpsecret: `${QYWX_AM_AY[1]}`,
},
config: {
retry: false
},
headers: {
accept: 'application/json, text/plain, */*',
'content-type': 'application/json',
},
success: res => {
try {
const data = JSON.parse(res.body);
let accesstoken = data.access_token;
send({
method: 'POST',
url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`,
contents: {
touser: `${QYWX_AM_AY[2]}`,
agentid: `${QYWX_AM_AY[3]}`,
safe: '0',
msgtype: 'text',
text: {
content: `${text}\n\n${desp}`,
},
},
config: {
retry: false
},
headers: {
accept: 'application/json, text/plain, */*',
'content-type': 'application/json',
},
success: res => {
try {
const data = JSON.parse(res.body);
if (data.errcode === 0) {
log.info('发送通知', '企业微信应用发送通知消息完成。');
} else {
log.error('发送通知', `${data.errmsg}`);
}
} catch (e) {
log.error('发送通知', e);
} finally {
resolve();
}
},
failure: err => {
log.error('发送通知', '企业微信应用发送通知消息失败!!' + err);
resolve();
}
})
} catch (e) {
log.error('发送通知', e);
} finally {
resolve();
}
},
failure: err => {
log.error('发送通知', '企业微信应用发送通知消息失败!!' + err);
resolve();
}
})
}
});
}
function qywxBotNotify(text, desp) { function qywxBotNotify(text, desp) {
return new Promise(resolve => { return new Promise(resolve => {
if (QYWX_KEY) { if (QYWX_KEY) {