保姆级教程:从零开始,搭建一个属于你自己的微信消息推送服务
最近,我被一个推送消息的需求给难住了。
过去,我们习惯让服务器生成每日报告,然后一股脑儿地用邮件发给自己。结果就是,邮箱里塞满了各种报告文件,翻找起来特别麻烦。我一直在想,有没有什么更清爽的替代方案?
企业微信自带的消息API进入了我的视线。
我相信很多人都用过像 Server酱 或者 PushPlus 这类的第三方推送服务。它们确实方便,往往一行代码就能把通知发到微信上,简单快捷。
但用久了,你可能会遇到一些小问题:服务依赖第三方,偶尔会不太稳定;想自定义一些功能时,又感觉束手束脚。于是我琢磨着:为什么不干脆自己动手,搞一个专属的、完全可控的推送机器人呢?
企业微信的API,可以说是一个现成的完美方案——稳定、免费,而且配置起来比想象中要简单得多。
整个过程中,最大的“拦路虎”,其实是那个“可信IP”的验证。特别是对于没有固定公网IP,或者不想折腾服务器的同学来说,很容易在第一步就卡住。
今天,我就给大家分享一个思路:借助我用ClawCloud免费容器搭建的一个中转服务,巧妙绕过“可信IP”的验证。后续,你甚至可以直接通过这个中转服务来发消息。当然,如果你有带固定公网IP的服务器,直接研究官方API也是一个非常不错的选择。
关于ClawCloud免费容器我这不过多介绍了,可以参考我公众号的另一篇文章:
https://mp.weixin.qq.com/s/8XfRSP250YV4QaNswI3pzw
, 今天这个项目的镜像名是: wangwangit/wangwangit:qywx ,参考下图配置即可!
准备工作
你不需要准备太多东西,只需要一个企业微信账号。个人也能免费注册,去官网 (https://work.weixin.qq.com/wework_admin/register_wx
) 填些基本信息就好。
第一步:创建你的企业微信应用
首先,登录企业微信后台,找到 「应用管理」->「自建」->「创建应用」。
这里需要你上传一个应用Logo(随便找张图就行),再给应用起个名字,比如我就叫它“测试”。
应用创建成功后,点进去。有三个关键信息将作为后续所有操作的“身份凭证”,请务必找个地方把它们记下来:
AgentId
(应用ID)Secret
(应用密钥,需要用企业微信App扫码查看,切勿泄露)企业ID
(在后台 「我的企业」 页面,拉到最下方就能看到)
提醒一下:别忘了在应用的“可见范围”里,把你希望接收消息的同事(或者就你自己)加进去,否则机器人会不知道该把消息发给谁。
第二步:搞定最关键的“可信IP”
这是整个流程中最容易让人放弃的地方。
正常情况下,企业微信要求你提供一个公网服务器地址(URL)。它会向这个地址发送一个验证请求,你的服务器需要给出正确的回应,才算通过。验证通过后,才能继续添加“可信IP”。
但我们大多数人哪有现成的公网服务器来做这个事呢?别慌,我们可以“借”一个。
在你的应用配置页面,找到“接收消息”功能区,点击“设置API接收”。
进去之后,
Token
和EncodingAESKey
这两项,直接点右侧的“随机获取”。然后,立刻把这两个值复制下来备用。接下来是重点:打开下面这个我搭建的中转服务网站,它专门用来完成这次验证“握手”。
地址:https://push.wangwangit.com
把上一步你复制的
Token
和EncodingAESKey
粘贴到网站对应的输入框里,它会立刻为你生成一个临时的回调URL。将这个刚刚生成的URL,完整地复制粘贴回企业微信的“URL”配置框中,然后点“保存”。
Duang!你会惊喜地发现,验证竟然直接通过了!
这一步的原理,就是我们借用了这个中转服务作为“跳板”,它帮我们接收并正确地响应了企业微信的验证请求。验证完成后,这个跳板的使命就结束了。
URL验证通过后,企业微信的“企业可信IP”功能也就随之解锁了。现在,你就可以把你真正用来发消息的服务器IP填进去了。
- 如果你有服务器,就填服务器的公网IP。
- 如果你在家里,没有固定公网IP,可以配置一个DDNS动态域名,然后把域名填进去。
- 最直接的,你甚至可以把你家当前的公网IP填进去(缺点是IP地址改变后,需要回来重新修改)。
添加完这个IP后,今后只有来自该IP的请求才能调用API发消息,非常安全。
第三步:生成你的专属推送URL
到这里,企业微信后台的配置基本完成了。理论上,你已经可以对照着官方API文档,自己写代码来调用接口、推送消息了。
但为了“懒”得更彻底一点,我们可以继续使用那个中转服务,它能把复杂的API调用过程,封装成一个极其简单的URL。你只需要请求这个URL,就能轻松发消息。
动手能力强的同学,可以去GitHub上自己部署这个服务,实现完全私有化:
https://github.com/wangwangit/qywx-push
这里我继续用公共服务来演示:
- 再次回到中转服务网站:
https://push.wangwangit.com
- 这次,我们把第一步记录的
企业ID
、Secret
、AgentId
填到下方的“生成推送URL”配置区。 - 点击“获取成员列表”,选中你希望接收消息的用户(注意:用户需要先在企业微信中关注你的企业和这个自建应用)。
- 点击“完成配置”。
网站会立刻为你生成一个专属的调用地址。这个地址非常重要,请务必保存好! 你可以点击右上角的“API文档”查看详细的调用方法。
今后,如果你想让AI帮你写一段带通知功能的代码,你只需要把这个URL和对应的API文档一起告诉它,就能快速搞定。
最后:享受你的成果!
现在,大功告成!
无论你想在Shell脚本、Python程序,还是任何支持HTTP请求的地方实现通知功能,只需要调用一下上面生成的那个专属URL,消息就能瞬间推送到你的企业微信里。
我个人还有一个很喜欢的小技巧:在手机上把这个企业微信应用“发送到桌面”,让它看起来就像一个独立的App,接收消息和查看都非常方便。
从今以后,再也不用被塞满报告的邮箱困扰了!