others-企业微信api
企业微信 api, 实现 打包机 等自动推送消息
前篇
- 服务商后台 - https://open.work.weixin.qq.com/
- 访问频率限制 - https://work.weixin.qq.com/api/doc/90000/90139/90312
- 开始开发 (查看 前置物料 中的所有参数) - https://work.weixin.qq.com/api/doc/10013
- 简易教程 - https://work.weixin.qq.com/api/doc/90000/90003/90487
前置物料
- 线申请为 服务商. 服务商后台: https://open.work.weixin.qq.com/
- 企业id: corpidAAA,
- 应用秘钥: corpappsecretBBB, 在 创建应用 (如: bot-packer) 后可以获取到, 还有 agentid: agentidEEE
- access_token: tokenCCC, 通过 corpidAAA 和 corpappsecretBBB 获取到. 参考: https://work.weixin.qq.com/api/doc/10013
消息推送
创建应用, 获取到 应用秘钥: corpappsecretBBB, 通过 get 请求到 access_token
1
2
3
4
5
6
7
8
9https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=corpidAAA&corpsecret=corpappsecretBBB
-- 返回值, json
{
"errcode": 0,
"errmsg": "ok",
"access_token": "tokenCCC",
"expires_in": 7200
}expires_in 是 token 失效实现, 单位 秒, 7200s 也就是 2h, 期间内重复获取 token 会刷新这个过期时间. 但也要实现 token 过去的逻辑, 查看 错误码 表 https://work.weixin.qq.com/api/doc/90000/90139/90313, 40014 是不合法的 access_token, 此时要重新获取新的 token
不能频繁调用这个获取 token 的api, 需要缓存 token. 参考官方说明:
1
2
3
4
5
6
7缓存和刷新access_token
开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。
access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。
由于企业微信每个应用的access_token是彼此独立的,所以进行缓存时需要区分应用来进行存储。
access_token至少保留512字节的存储空间。
企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。
推送消息
通过 post 请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=tokenCCC
-- post 参数
{
"touser": "hello@world.com", // 企业微信邮箱就是 userId, 多人使用 | 分割, 如 hello@world.com|hello@world.com
"msgtype": "text",
"agentid": "agentidEEE",
"text": {
"content": "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},
}
-- 返回值 json
{
"errcode": 0,
"errmsg": "ok",
"invaliduser": ""
}结果
markdown 内容
请求参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22args = {
"touser": "hello@world.com",
"agentid": "agentidEEE",
# markdown
"msgtype": "markdown",
"markdown": {
"content": """您的会议室已经预定,稍后会同步到`邮箱`
> **事项详情**
> 事 项:<font color=\"info\">开会</font>
> 组织者:@miglioguan
> 参与者:@miglioguan、@kunliu、@jamdeezhou、@kanexiong、@{0}
>
> 会议室:<font color=\"#00b32d\">广州TIT 1楼 301</font>
> 日 期:<font color=\"#cc9900\">2018年5月18日</font>
> 时 间:<font color=\"#808080\">上午9:00-11:00</font>
> 时 间:<font color=\"#ff0000\">错误</font>
>
> 请准时参加会议。
>
> 如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)""".format("yangx")
},结果
查看成员 id
方式一: 管理员查看 - https://work.weixin.qq.com/help?doc_id=13431
方式二: 如果推送邮箱不成功的情况下, 可以成员的 id 不是 邮箱, 可以通过这里 https://open.work.weixin.qq.com/devtool/query?e=81013, 输入 token 查看到成员的 id