自建自用的微信推送服务

背景

需求

当拥有自己的云服务器、树莓派等软硬件时,总会希望在特定事件产生时收到一些推送消息给自己。例如无屏幕的树莓派开始时发送IP信息给自己;云服务器流量、cpu高峰时发送警告消息给自己。

要求

  1. 采用方便快捷的消息接收方式:微信。(邮件可能不及时,其他推送又需要安装多余的app,反正手机上装了微信,就用微信的信息推送)
  2. 没有推送条数、推送内容上的限制。(消息要提前生成模板审核?不存在的!)
  3. 利用手上的资源(云服务器一个),没有额外的费用。(例如消息推送费用)

别人的服务

在寻找类似的推送服务时,看到了server酱。接入方便,使用上符合要求1 。不过由于vip制度的关系,存在一些费用,又无法做定制化的处理。所以便希望自己搭建一套简单易用的推送服务来。

自建服务

原理

微信、无认证的微信公众号都不提供针对个人定制化的消息推送功能。所以只能绕道企业微信来实现了。企业微信拥有推送API1 ,并且允许成员通过微信来接收企业微信的消息。如此一来我们就可以通过企业微信进行消息推送,通过微信来接收消息,整个使用过程中并不需要手机安装企业微信APP

推送消息

准备资源

个人云服务器

  1. 云服务器或者虚拟空间都可以。
  2. 云服务器的话需要安装好web服务,例如lnmp2 等都可以,本人采用的是nginx+java+mysql。

企业微信

  1. 申请企业微信账号。个人用户都可以注册,并不需要什么认证,随便开通一个即可。通过web页面就可以注册,不需要手机上安装APP。
  2. 获取企业微信账号id。进入后台管理页面 -> 我的企业 -> 企业信息 -> 企业ID
    企业ID
  3. 创建应用。应用管理->应用->创建应用。
    创建应用
  4. 获取应用AgentId和Secret
    应用秘钥
  5. 打开微信接收企业微信消息设置。我的企业->微信插件
    设置

api接口

  1. 通过企业id+应用Secret获取token。这个接口不能频繁请求,在token有效期内不建议重复请求。详见API文档
  2. 通过已经获取的token+应用AgentId调用发送消息API

云服务器部分代码

  • 获取token
		Map<String,String> param = new HashMap<>();
        param.put("corpid", corpid);
        param.put("corpsecret",corpsecret);
        WeChatTokenResponse response = HttpUtil.doGetHttp(QY_TOKEN_URL,"请求企业微信token",param, WeChatTokenResponse.class);
  • 发送应用消息
		JSONObject json = new JSONObject();
        json.put("touser","@all");
        json.put("msgtype","text");
        json.put("agentid",agentid);
        JSONObject contentJson = new JSONObject();
        contentJson.put("content",content);
        json.put("text",contentJson);
        return  HttpUtil.doPostHttp(QY_MSG+token,"发送企业微信信息",json.toJSONString(), WeChatResponse.class);

效果

在这里插入图片描述
在这里插入图片描述


  1. 企业微信发送应用消息API文档 ↩︎

  2. linux+nginx+mysql+php环境。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shellingford37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值