基于企业微信API的消息推送


基于 企业微信 API 的微信消息推送, 无需自建服务器的 Python 库解决方案.

前言

很多时候编写程序时希望能将程序的运行结果实时告知开发者, 需要点对点的推送服务.

之前组内一直使用的QQ机器人,直到某天大佬提桶跑路无人维护,机器人挂了就再也起不来了.

没办法只有自己动手丰衣足食,github上搜到了这个库,对企业微信API简单封装了一层,使用起来也算方便.

TODO: 后面有时间再研究一下接收信息吧,相比推送接收信息需要开公网映射,存在安全隐患. 当然推送也是用代理出的公网233

开始

而此 Python 库有以下优点:

  • 无需自建服务器, 不使用第三方服务器, 无其他费用
  • 第一次需要配置(只需要个人微信), 之后可以直接调用, 简单方便
  • 无需安装企业微信客户端, 可以直接在微信接收推送
  • 调用次数充足, 限制少
  • 可以推送 文本, 超链接, 图片, 文件, Markdown 多种格式

配置(本步内容参考了 WecomChan 的相关文档)

配置过程中, 你需要记录下 corp_id secret 以及 agent_id 三个值.

  • 第一步,注册企业

    用电脑打开企业微信官网,注册一个企业

  • 第二步,创建应用

    注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」

    img

    应用名称可以随意填入,应用logo自己上传一张图片,可见范围选择公司名。

    img

    创建完成后进入应用详情页,可以得到 agent_id,应用Secret( secret )。

    注意:secret推送到手机端时,只能在企业微信客户端中查看。

    img

  • 第三步,获取企业ID

    进入「我的企业」页面,拉到最下边,可以看到企业ID(corp_id)③,复制并填到上方。

    推送UID直接填 @all ,推送给公司全员。

  • 第四步,推送消息到微信

    进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。

    img

    PS:如果出现接口请求正常,企业微信接受消息正常,个人微信无法收到消息的情况:

    进入「我的企业」 → 「微信插件」,拉到最下方,勾选 “允许成员在微信插件中接收和回复聊天消息” img

    在企业微信客户端 「我」 → 「设置」 → 「新消息通知」中关闭 “仅在企业微信中接受消息” 限制条件 img

安装

pip3 install wechat_push

示例

>>> from wechat_push import WechatPush
>>> push = WechatPush("你的corp_id", "你的secret", "你的agent_id")
>>> push.send_text('Hello!\n文本支持换行\n<a href="https://github.com">文本支持超链接</a>')
{'errcode': 0, 'errmsg': 'ok', 'msgid': 'xxx'}
>>> push.send_markdown("**Markdown here!**")
{'errcode': 0, 'errmsg': 'ok', 'msgid': 'xxx'}
>>> push.send_file(open("test.txt", "rb"), "微信中显示的文件名称")
{'errcode': 0, 'errmsg': 'ok', 'msgid': 'xxx'}
>>> push.send_image(open("test.png", "rb"))
{'errcode': 0, 'errmsg': 'ok', 'msgid': 'xxx'}