mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-04-16 08:53:16 +08:00
fix(weixin): file send failed
This commit is contained in:
@@ -75,26 +75,6 @@ class ChatService:
|
||||
# a new segment; collect tool results until turn_end.
|
||||
state.pending_tool_results = []
|
||||
|
||||
elif event_type == "file_to_send":
|
||||
# Cloud CHAT stream: local paths are useless to the web UI; push a markdown link when we have a public URL.
|
||||
url = data.get("url") or ""
|
||||
if url:
|
||||
msg = (data.get("message") or "").strip()
|
||||
fname = data.get("file_name") or "file"
|
||||
ft = data.get("file_type") or "file"
|
||||
parts = []
|
||||
if msg:
|
||||
parts.append(f"{msg}\n\n")
|
||||
if ft == "image":
|
||||
parts.append(f"")
|
||||
else:
|
||||
parts.append(f"[{fname}]({url})")
|
||||
send_chunk_fn({
|
||||
"chunk_type": "content",
|
||||
"delta": "\n\n" + "".join(parts) + "\n\n",
|
||||
"segment_id": state.segment_id,
|
||||
})
|
||||
|
||||
elif event_type == "tool_execution_start":
|
||||
# Notify the client that a tool is about to run (with its input args)
|
||||
tool_name = data.get("tool_name", "")
|
||||
|
||||
@@ -303,13 +303,18 @@ def upload_media_to_cdn(api: WeixinApi, file_path: str, to_user_id: str,
|
||||
filesize=cipher_size,
|
||||
aeskey=aes_key_hex,
|
||||
)
|
||||
upload_param = resp.get("upload_param", "")
|
||||
if not upload_param:
|
||||
raise RuntimeError(f"[Weixin] getUploadUrl returned no upload_param: {resp}")
|
||||
|
||||
cdn_url = (f"{api.cdn_base_url}/upload"
|
||||
f"?encrypted_query_param={quote(upload_param)}"
|
||||
f"&filekey={quote(filekey)}")
|
||||
# API may return either upload_full_url (new) or upload_param (legacy)
|
||||
upload_full_url = resp.get("upload_full_url", "")
|
||||
upload_param = resp.get("upload_param", "")
|
||||
if upload_full_url:
|
||||
cdn_url = upload_full_url
|
||||
elif upload_param:
|
||||
cdn_url = (f"{api.cdn_base_url}/upload"
|
||||
f"?encrypted_query_param={quote(upload_param)}"
|
||||
f"&filekey={quote(filekey)}")
|
||||
else:
|
||||
raise RuntimeError(f"[Weixin] getUploadUrl returned neither upload_full_url nor upload_param: {resp}")
|
||||
|
||||
cdn_resp = requests.post(cdn_url, data=encrypted, headers={
|
||||
"Content-Type": "application/octet-stream",
|
||||
|
||||
@@ -683,10 +683,8 @@ class CowCliPlugin(Plugin):
|
||||
lines = []
|
||||
for skill_name in result.installed:
|
||||
desc = _read_skill_description(os.path.join(skills_dir, skill_name))
|
||||
lines.append(f"✅ {skill_name}")
|
||||
lines.append(f"✅ 技能安装成功:{skill_name}")
|
||||
if desc:
|
||||
if len(desc) > 60:
|
||||
desc = desc[:57] + "…"
|
||||
lines.append(f" {desc}")
|
||||
|
||||
if len(result.installed) > 1:
|
||||
|
||||
Reference in New Issue
Block a user