0%

个人消息推送方案

简单说明

消息推送需求,服务器监控、系统发布、爬虫执行等等这些情况都可能用到消息推送,消息推送要尽量保证实时及成功,之前用过这些方案:

  • 邮件,使用微信绑定QQ或者企业邮箱接收消息
  • 自己写APP集成极光等推送平台
  • Server酱

自己可以APP可以灵活控制消息格式,但是APP包活是主要问题;Server酱通过微信发送可以保证到达及实时性,简单消息个人一直使用Server酱发送,缺点是消息格式单一

企业微信方案

这个方案无需安装企业微信APP,使用普通微信就可以接收消息,而且消息格式支持文本、图片、音频、视频、Markdown等。

注册企业微信

注册地址: https://work.weixin.qq.com/wework_admin/register_wx,注册后无需企业认证即可使用推送(当然只能推送给自己)

关注微工作台

路径:我的企业 -> 微工作台 -> 邀请关注

创建应用

发送消息需要使用发送应用消息接口,先创建应用:应用与小程序 -> 创建应用,需要应用的 AgentId 用于后续消息推送,网页控制台可以手动发送消息进行测试。

发送消息

消息发送接口:发送应用消息,发送消息前需要获取 ACCESS_TOKEN

shell 发送简单消息

agentid 替换成之前创建应用的

1
#!/bin/bash
2
3
main() {
4
    check $@
5
    TOKEN=`curl -s "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CORP_ID&corpsecret=$CORP_SECRET" | jq -r ".access_token"`
6
    curl -X POST -d '{
7
        "touser": "@all",
8
        "msgtype": "text",
9
        "agentid": 1000002,
10
        "text": {
11
            "content": "'$@'"
12
        },
13
        "safe": 0
14
    }' "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$TOKEN"
15
}
16
17
check() {
18
    if [[ -z "${CORP_ID}" ]]; then
19
        echo "Error: missing environment variable CORP_ID"
20
        exit 1
21
    fi
22
    if [[ -z "${CORP_SECRET}" ]]; then
23
        echo "Error: missing environment variable CORP_SECRET"
24
        exit 1
25
    fi
26
    command -v jq >/dev/null 2>&1 || {
27
        echo "Error: jq is not installed"
28
        exit 1
29
    }
30
    if [ "$#" -eq 0 ]; then
31
        echo "Illegal number of parameters.\nUsage: ./notify.sh <message>"
32
        exit 1
33
    fi
34
}
35
36
main $@

发送复杂消息

接口支持发送文本、图片、语音、视频、文件、文本卡片等,我用 go 写的工具简单封装了这个接口,可以方便的使用,具体查看 Github。

Github: dongfg/notify