mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-07-21 06:07:13 +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.
|
# a new segment; collect tool results until turn_end.
|
||||||
state.pending_tool_results = []
|
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":
|
elif event_type == "tool_execution_start":
|
||||||
# Notify the client that a tool is about to run (with its input args)
|
# Notify the client that a tool is about to run (with its input args)
|
||||||
tool_name = data.get("tool_name", "")
|
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,
|
filesize=cipher_size,
|
||||||
aeskey=aes_key_hex,
|
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"
|
# API may return either upload_full_url (new) or upload_param (legacy)
|
||||||
f"?encrypted_query_param={quote(upload_param)}"
|
upload_full_url = resp.get("upload_full_url", "")
|
||||||
f"&filekey={quote(filekey)}")
|
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={
|
cdn_resp = requests.post(cdn_url, data=encrypted, headers={
|
||||||
"Content-Type": "application/octet-stream",
|
"Content-Type": "application/octet-stream",
|
||||||
|
|||||||
@@ -683,10 +683,8 @@ class CowCliPlugin(Plugin):
|
|||||||
lines = []
|
lines = []
|
||||||
for skill_name in result.installed:
|
for skill_name in result.installed:
|
||||||
desc = _read_skill_description(os.path.join(skills_dir, skill_name))
|
desc = _read_skill_description(os.path.join(skills_dir, skill_name))
|
||||||
lines.append(f"✅ {skill_name}")
|
lines.append(f"✅ 技能安装成功:{skill_name}")
|
||||||
if desc:
|
if desc:
|
||||||
if len(desc) > 60:
|
|
||||||
desc = desc[:57] + "…"
|
|
||||||
lines.append(f" {desc}")
|
lines.append(f" {desc}")
|
||||||
|
|
||||||
if len(result.installed) > 1:
|
if len(result.installed) > 1:
|
||||||
|
|||||||
Reference in New Issue
Block a user