- 大家好,我是同学小张,日常分享AI知识和实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- 一起交流💬,一起进步💪。
- 微信公众号也可搜【同学小张】 🙏
本站文章一览:
今天来了解下企业微信中,如何利用API主动给用户发应用消息。
0. 接口说明
0.1 发送消息接口
请求方式:POST(HTTPS) 请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
在请求地址里,其实就需要一个 ACCESS_TOKEN。
- 接口返回示例
{ "errcode" : 0, "errmsg" : "ok", "invaliduser" : "userid1|userid2", "invalidparty" : "partyid1|partyid2", "invalidtag": "tagid1|tagid2", "unlicenseduser" : "userid3|userid4", "msgid": "xxxx", "response_code": "xyzxyz" }
- 发送消息的格式,以文本消息为例
{ "touser" : "UserID1|UserID2|UserID3", "toparty" : "PartyID1|PartyID2", "totag" : "TagID1 | TagID2", "msgtype" : "text", "agentid" : 1, "text" : { "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。" }, "safe":0, "enable_id_trans": 0, "enable_duplicate_check": 0, "duplicate_check_interval": 1800 }
- 支持的发送消息类型
- 接口使用限制
- 调用建议:大部分企业应用在每小时的0分或30分触发推送消息,容易造成资源挤占,从而投递不够及时,建议尽量避开这两个时间点进行调用。
- 频率限制:每应用不可超过账号上限数*200人次/天(注:若调用api一次发给1000人,算1000人次;若企业账号上限是500人,则每个应用每天可发送100000人次的消息)。每应用对同一个成员不可超过30次/分钟,1000次/小时,超过部分会被丢弃不下发
0.2 获取 Access_token接口
请求方式: GET(HTTPS) 请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
- 返回结果
{ "errcode": 0, "errmsg": "ok", "access_token": "accesstoken000001", "expires_in": 7200 }
- 注意事项
- 每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取
- 开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。
- access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。
- access_token至少保留512字节的存储空间。
1. 实践
现在有很多可以使用的开源库来简化以上接口的调用,不用自己去获取和缓存access_token,不用自己去组装请求链接等,非常方便。
官方文档中收集了一些针对企业微信API的开源封装:
我选取了其中的 corpwechatbot,号称开箱即用,一行代码实现消息推送。
1.1 corpwechatbot,一行代码实现消息推送
1.1.1 安装
pip install -U corpwechatbot
1.1.2 示例Demo
直接copy这段代码,修改里面的corpid, corpsecret和agentid:
import cptools from corpwechatbot.app import AppMsgSender # from corpwehcatbot import AppMsgSender # both will work app = AppMsgSender(corpid='xxx', # 你的企业id corpsecret='P-xxx', # 你的应用凭证密钥 agentid='1000002', # 你的应用id log_level=cptools.INFO, # 设置日志发送等级,INFO, ERROR, WARNING, CRITICAL,可选 # proxies={'http':'http:example.com', 'https':'https:example.com'} # 设置代理,可选 ) # 如果你在本地配置添加了企业微信本地配置文件,也可以直接初始化AppMsgSender,而无需再显式传入密钥参数 # app = AppMsgSender() app.send_text(content="你好,我是同学小张!")
点击运行,毫无意外地,发生了意外:
1.1.3 配置IP
在企业微信管理后台 —> 应用管理 —> 自己的应用界面,划到页面底部。
将你服务的IP填入到企业可信IP中。
重新运行示例Demo,发送成功!
1.1.4 看一眼源码
如果看一下源码的话,你就会发现,它其实就是将以上获取 Access Token的接口和发送消息的接口进行了一层封装,并进行了相应的缓存。
2. 参考
如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~
- 大家好,我是 同学小张,日常分享AI知识和实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- 一起交流💬,一起进步💪。
- 微信公众号也可搜【同学小张】 🙏
本站文章一览: