fix(cmcc): webhook 失败诊断(400 只报状态码等于瞎眼)

真机 2026-11-09 08:40 首跑:webhook HTTP 400,日志只有「失败」两个字,
无从判断是鉴权头缺失、Content-Type 与模板矛盾,还是路径不对。
现在失败时打:请求体前 80 字符 + 服务端响应前 300 字符 + 400/401/403 分诊提示。
This commit is contained in:
2026-11-09 13:02:37 +08:00
parent 2f3132d2ff
commit 8b21ef8502

View File

@@ -172,7 +172,17 @@ def send_notify(title, content):
r = requests.post(hook, data=body.encode("utf-8"), headers=hdrs, timeout=15)
ok = 200 <= r.status_code < 300
sent = sent or ok
log("[通知] webhook HTTP %d %s" % (r.status_code, "成功" if ok else "失败"))
if ok:
log("[通知] webhook HTTP %d 成功" % r.status_code)
else:
# ★ 400/401 必须看到服务端说了什么,否则永远不知道为什么推不出去
log("[通知] webhook HTTP %d 失败 | 请求体前80=%r | 响应=%r" % (
r.status_code, body[:80], (r.text or "")[:300]))
if r.status_code in (401, 403):
log("[通知] 提示:webhook 需要鉴权头,检查 WEBHOOK_HEADERS 里有没有 Token/Authorization 行")
elif r.status_code == 400:
log("[通知] 提示:服务端嫌请求体不合法。核对 WEBHOOK_CONTENT_TYPE 与 WEBHOOK_BODY 模板是否自相矛盾"
"(JSON 内容必须配 application/json)")
except Exception as e:
log("[通知] webhook 异常 %r" % e)
if token: