微信机器人
首先在企业微信中创建一个机器人(在右上角的添加用户边上的 ... 中就有这个选项),之后会获得一个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 |
| markdown | markdown |
| image | Image |
| file | file |
| 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
