Skip to content

微信机器人

首先在企业微信中创建一个机器人(在右上角的添加用户边上的 ... 中就有这个选项),之后会获得一个Webhook地址(一定保密,否则容易被攻击)

如下面的就是一个机器的hook地址,可以进行推送

bash
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \
   -H 'Content-Type: application/json' \
   -d '
   {
        "msgtype": "text",
        "text": {
            "content": "hello world"
        }
   }'

消息数据

  • 不通的消息数据通过msgtype进行类型指定,其所包含的实际数据位置也是不同的
消息类型(msgtype)数据位置(json的key值)
text(简单文本)text
markdownmarkdown
imageImage
filefile
news(图文类型)news

下面的代码块中的都是该消息必须的部分

简单文本

  • 实际内容在content中,最长不超过2048个字节
  • 通过menthioned_list可以进行特定用户的@,或者@all
    • "mentioned_list":["wangqing","@all"]
    • 这里的特定用户是和企业有关,每个企业内部有特定的编号,不是通过用户名或者昵称直接指定
json
{
    "msgtype": "text",
    "text": {
        "content": "广州今日天气:29度,大部分多云,降雨概率:60%"
    }
}

markdown

json
{
    "msgtype": "markdown",
    "markdown": {
        "content": "实时新增用户反馈<font color=\"warning\">132例</font>\n
         111"
    }
}

内容格式定制

  • 标题:用markdown的 # 确定标题级别,1~6 个 # 对应1至6级标题,注意#与文字中间要有空格

  • 加粗:**text**

  • 链接:[这是一个链接](http://work.weixin.qq.com/api/doc)

  • 行内代码段(暂不支持跨行)

    点击查看完整代码实现
点击查看完整代码实现
  `code`
  • 引用 :>text

  • 字体颜色:<font color="colorMode">绿色</font>,colorMode支持三种

    • info-》绿色
    • comment-> 灰色
    • warning -> 橙红色

图片

:::json { "msgtype": "image", "image": { "base64": "DATA", "md5": "MD5" } }


- base64: base64 编码值
- md5: 编码前的md5值



### 图文

```json
{
    "msgtype": "news",
    "news": {
       "articles" : [
           {
               "title" : "中秋节礼品领取",
               "url" : "www.qq.com"
           }
        ]
    }
}
  • url:点击跳转的链接
  • 可以通过 "description" 添加一些描述信息(不超过512)
  • 通过 picurl 在当前的消息上显示一个封面图片(支持JPG、PNG)
    • 较好的效果为大图 1068*455,小图150*150

文件类型

json
{
    "msgtype": "file",
    "file": {
         "media_id": "3a8asd892asd8asd"
    }
}
  • media_id:文件id,通过下文的文件上传接口获取

python

python
"""
简单文本发送
"""
def send_message(message, person_list, xxxx=""):
    wx_url = f'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={xxxx}'
    data = {
        "msgtype": "text",
        "text": {
            "content": message,
            "mentioned_list": person_list  # 需@人的姓名
        }
    }
    r = requests.post(url=wx_url, json=data)  # url中的xxx是你的机器人webhook对应片段,不要轻易泄露出去否则任何人都可以控制你的机器人


"""
文件发送
"""
def wechat_send_file(file,xxxx):
    # 发送文件
    wx_url = f'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={xxxx}'
    data = {'file': open(file, 'rb')}
    # 请求id_url(将文件上传微信临时平台),返回media_id
    id_url = f'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={xxxx}&type=file'
    response = requests.post(url=id_url, files=data)
    print(response.text)
    json_res = response.json()
    media_id = json_res['media_id']
    data = {"msgtype": "file",
            "file": {"media_id": media_id}
            }
    # 发送文件
    result = requests.post(url=wx_url, json=data)
    return (result)

错误

44001

  • 企业微信在上传带有中文名称的临时素材时遇到44001错误,原因是urllib3 和 requests 的老版本bug。
  • 升级requests包

https://blog.csdn.net/weixin_30918633/article/details/101297480

正在精进