Egg定时任务实现企业微信群机器人定时推送
# 效果
# 参考资料
# 完整DEMO源码
// app/schedule/demo.js
'use strict'
module.exports = {
schedule: {
// interval: '1m', // 1 分钟间隔
cron: '0 55 8 * * *', // 每天上午8点55分
type: 'all', // 类型 worker-每台机器上只有一个 worker 会执行这个定时任务,每次执行定时任务的 worker 的选择是随机的。 all-每台机器上的每个 worker 都会执行这个定时任务。
// immediate: true, // 配置了该参数为 true 时,这个定时任务会在应用启动并 ready 后立刻执行一次这个定时任务。
// disable: false, // 配置该参数为 true 时,这个定时任务不会被启动。
// env: [ 'local', 'prod' ], // 数组,仅在指定的环境下才启动该定时任务。
},
async task(ctx) {
const data = {
// 要发送的数据。将自动进行字符串化
// 当前自定义机器人支持文本(text)、markdown(markdown)、图片(image)、图文(news)四种消息类型。
// 机器人的text/markdown类型消息支持在content中使用<@userid>扩展语法来@群成员
msgtype: 'text',
text: {
// 文本内容,最长不超过2048个字节,必须是utf8编码
content: '还有5分钟就要上班啦,记得按时打卡别迟到咯~',
// userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
mentioned_list: [ '@all' ],
// 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人
// mentioned_mobile_list: [ '13000000000', '@all' ],
},
}
// 替换为自己添加的机器人webHook
const webHook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXX'
const result = await ctx.curl(webHook, {
method: 'POST', // 请求方法,默认为GET。可以是GET,POST,DELETE或PUT
data,
dataType: 'json', // 字符串-响应数据的类型。可能是text或json
headers: { // 请求标头
'Content-Type': 'application/json',
},
// timeout: '', // 请求超时
// auth: '', // username:password在HTTP基本授权中使用
// gzip: '', // 让您在请求连接时获取res对象,默认为false
})
const success = result && result.data && result.data.errcode === 0
console.log(success ? '发送成功' : `发送失败:${result.data.errcode} --- ${result.data.errmsg}`)
},
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
上次更新: 2023-06-21 10:49:53