我正在编辑【python】代码,遇到了 【'{"errcode":40035,"errmsg":"need param file_size and agent_Id"}'】
,请帮我检查并改正错误点。我的原始代码如下:
【import requests
import os
import time
import hmac
import hashlib
import urllib.parse
import base64
# 钉钉发送日报表
# 获取Access Token
def get_access_token(app_key, app_secret):
url = "https://api.dingtalk.com/v1.0/oauth2/accessToken"
data = {"appKey": app_key, "appSecret": app_secret, "scope": "file"}
response = requests.post(url, json=data)
return response.json()["accessToken"]
def upload_to_dingpan(access_token, agent_id, file_path):
url = f"https://oapi.dingtalk.com/file/upload/single?access_token={access_token}"
file_size = os.path.getsize(file_path)
headers = {"Content-Type": "multipart/form-data"}
data = {
"agent_id": agent_id,
"file_size": file_size,
"file_name": os.path.basename(file_path)
}
try:
with open(file_path, "rb") as f:
files = {"file": f}
response = requests.post(url, headers=headers, json=data, files=files)
result = response.json()
if result.get("errcode") == 0:
return result["dentry_id"]
else:
print(f"Error: {result.get('errmsg')}")
return None
except Exception as e:
print(f"Exception: {str(e)}")
return None
def generate_share_link(access_token, dentry_id, expire_seconds=604800):
url = "https://api.dingtalk.com/v1.0/storage/files/shareLinks"
headers = {"x-acs-dingtalk-access-token": access_token}
data = {"dentryIds": [dentry_id], "expireTime": expire_seconds}
response = requests.post(url, headers=headers, json=data)
return response.json()["shareLinks"][0]["shareLink"]
def generate_sign(secret):
timestamp = str(round(time.time() * 1000))
secret_enc = secret.encode('utf-8')
string_to_sign = f"{timestamp}\n{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 = urllib.parse.quote_plus(base64.b64encode(hmac_code))
return timestamp, sign
def send_to_external_group(webhook_url, secret, message):
timestamp, sign = generate_sign(secret)
url = f"{webhook_url}×tamp={timestamp}&sign={sign}"
headers = {"Content-Type": "application/json"}
data = {
"msgtype": "text",
"text": {"content": message}
}
response = requests.post(url, headers=headers, json=data)
return response.json()
# 配置信息
Agent_id = '3555606221'
APP_KEY = "dinge2fsedwjpovp0ktj"
APP_SECRET = "lXudDKNBFMNtrEUU0sSk_C9c1TEh3nKEolF6Sd5s-Oc5FWZgsmf9s8i_sT3BbGRq"
FILE_PATH = r"C:\Users\13474\Desktop\日报旧表\日报Excel\2025生产数据录入表防城港.xlsx"
WEBHOOK_URL = "https://oapi.dingtalk.com/robot/send?access_token=b092a7911907f09a1e7b056984f6ee93d8862518e47b5fde2bc51ce6da99adbd"
SECRET = "SEC3ffb98e93b533781edb9227bc407f7c83596354c9f6524aeca7a743e79a5938f" # 机器人加签密钥
# 执行流程
access_token = get_access_token(APP_KEY, APP_SECRET)
file_id = upload_to_dingpan(access_token, Agent_id, FILE_PATH)
share_link = generate_share_link(access_token, file_id)
# 发送到外部群
send_to_external_group(WEBHOOK_URL, SECRET, f"外部群文件分享:{share_link}")
】
最新发布