Files
workspace/final_send_attempt_v2.py
aitest 15c4480db1 Add OpenClaw workspace configuration and tools
- Add agent configuration files (AGENTS.md, USER.md, IDENTITY.md, SOUL.md)
- Add git configuration and skills management scripts
- Add frontend/backend analysis tools and reports
- Add DingTalk media sender utilities and documentation
- Fix OpenClaw runtime environment (Node.js and Python)
- Configure git remotes and push scripts
2026-03-05 13:56:59 +09:00

96 lines
3.4 KiB
Python

import requests
import json
import os
from requests_toolbelt.multipart.encoder import MultipartEncoder
DINGTALK_APP_KEY = "ding4ursdp0l2giat4bj"
DINGTALK_APP_SECRET = "J0gBicjKiIHoKla7WfKKhRs1Tv8L6Xd5UhW3EVQByF16G7Vn7UUcRhP6u-PBCQNo"
ROBOT_CODE = "ding4ursdp0l2giat4bj"
OPEN_CONVERSATION_ID = "cidcjYshXVtKck5LfOO9AqOJg=="
FILE_PATH = r"C:\Users\ALC\.openclaw\workspace\前后端功能与开源可修改性分析报告.docx"
FILE_NAME = "前后端功能与开源可修改性分析报告.docx"
def get_old_api_token():
url = "https://oapi.dingtalk.com/gettoken"
params = {'appkey': DINGTALK_APP_KEY, 'appsecret': DINGTALK_APP_SECRET}
r = requests.get(url, params=params, timeout=10)
result = r.json()
if result.get('errcode') == 0:
return result['access_token']
raise Exception(f"Get token failed: {result}")
def upload_oapi_dingtalk(access_token, file_path):
url = "https://oapi.dingtalk.com/media/upload"
with open(file_path, 'rb') as f:
fields = {
'access_token': access_token,
'type': 'file',
'media': (FILE_NAME, f, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')
}
m = MultipartEncoder(fields=fields)
headers = {'Content-Type': m.content_type}
r = requests.post(url, headers=headers, data=m, timeout=30)
return r.json()
def send_sample_file_oapi(access_token, media_id):
url = "https://oapi.dingtalk.com/robot/send"
payload = {
"msgtype": "file",
"file": {
"media_id": media_id
},
"openConversationId": OPEN_CONVERSATION_ID
}
r = requests.post(url, json=payload, timeout=30)
return r.json()
def main():
try:
result_path = r"C:\Users\ALC\.openclaw\workspace\final_send_result_v2.txt"
with open(result_path, "w", encoding="utf-8") as f:
f.write("=== DingTalk Old API Send Attempt ===\n\n")
f.write("Step 1: Get Old API Token\n")
token = get_old_api_token()
f.write(f"Token: {token}\n\n")
f.write("Step 2: Upload File via oapi.dingtalk.com\n")
upload_result = upload_oapi_dingtalk(token, FILE_PATH)
f.write(f"{json.dumps(upload_result, ensure_ascii=False)}\n\n")
if 'media_id' in upload_result:
media_id = upload_result['media_id']
f.write(f"Media ID: {media_id}\n\n")
f.write("Step 3: Send sampleFile message\n")
send_result = send_sample_file_oapi(token, media_id)
f.write(f"{json.dumps(send_result, ensure_ascii=False)}\n\n")
if send_result.get('errcode') == 0 and send_result.get('processQueryKey'):
f.write("=== SUCCESS ===\n")
f.write(f"ProcessQueryKey: {send_result['processQueryKey']}\n")
else:
f.write("=== SEND FAILED ===\n")
f.write(f"Error: {send_result.get('errmsg', '')}\n")
else:
f.write("=== UPLOAD FAILED ===\n")
print("Done. Check result_v2.txt")
except Exception as e:
with open(r"C:\Users\ALC\.openclaw\workspace\final_send_error_v2.txt", "w", encoding="utf-8") as f:
f.write(f"Error: {e}\n")
import traceback
f.write(traceback.format_exc())
print(f"Error: {e}")
if __name__ == "__main__":
main()