others-企业微信api

企业微信 api, 实现 打包机 等自动推送消息


前篇


前置物料

  1. 线申请为 服务商. 服务商后台: https://open.work.weixin.qq.com/
  2. 企业id: corpidAAA,
  3. 应用秘钥: corpappsecretBBB, 在 创建应用 (如: bot-packer) 后可以获取到, 还有 agentid: agentidEEE
  4. access_token: tokenCCC, 通过 corpidAAA 和 corpappsecretBBB 获取到. 参考: https://work.weixin.qq.com/api/doc/10013

消息推送

参考: https://work.weixin.qq.com/api/doc/90000/90135/90236

  1. 创建应用, 获取到 应用秘钥: corpappsecretBBB, 通过 get 请求到 access_token

    1
    2
    3
    4
    5
    6
    7
    8
    9
    https://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失效时重新获取的逻辑。
  2. 推送消息

    通过 post 请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    https://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
    22
            args = {
    "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