运行后{"errcode":460101,"errmsg":"description: body 大小不合法;solution:请保持大小在 20000bytes 以内;"}
时间: 2023-09-09 12:06:18 浏览: 220
这个错误提示是因为发送的消息体大小超过了钉钉机器人 API 的限制。钉钉机器人 API 对消息体大小有限制,目前最大支持 20KB。你可以尝试压缩图片文件大小或者发送缩略图来避免这个问题。以下是示例代码:
```python
import requests
import json
import hmac
import hashlib
import base64
from PIL import Image
# 定义加签函数
def sign(secret, timestamp):
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = base64.b64encode(hmac_code).decode('utf-8')
return sign
# 读取本地图片
with open(r'E:\AI\nc2文件夹下a.jpg', 'rb') as f:
image_data = f.read()
# 压缩图片大小
img = Image.open(r'E:\AI\nc2文件夹下a.jpg')
img.thumbnail((800, 800))
with open('thumbnail.jpg', 'wb') as f:
img.save(f, format='JPEG')
with open('thumbnail.jpg', 'rb') as f:
thumbnail_data = f.read()
# 将图片数据转成 base64 编码
image_base64 = base64.b64encode(thumbnail_data).decode('utf-8')
# 发送图片消息到钉钉机器人
url = 'https://oapi.dingtalk.com/robot/send'
timestamp = str(round(time.time() * 1000))
secret = 'your_secret'
sign_str = sign(secret, timestamp)
url += '?access_token=your_access_token×tamp={}&sign={}'.format(timestamp, sign_str)
headers = {'Content-Type': 'application/json'}
data = {
"msgtype": "link",
"link": {
"text": "点击查看大图",
"title": "图片消息",
"picUrl": "data:image/jpeg;base64," + image_base64,
"messageUrl": "https://www.baidu.com"
}
}
r = requests.post(url, headers=headers, data=json.dumps(data))
print(r.text)
```
这里使用了 Pillow 库来压缩图片大小,并且发送的是缩略图。如果你想发送原图,可以将缩略图的代码部分替换为读取原图数据即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)