You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slack Webhook发送含路径字符时返回invalid_payload问题求助

问题根源

你手动拼接JSON payload的方式有问题——当消息里带Windows路径的反斜杠\时,生成的JSON格式会失效。因为JSON语法要求字符串里的反斜杠必须写成\\,你的代码没做转义处理,导致Slack收到的payload不符合规范,触发invalid_payload错误。

修复方案

别自己拼JSON了,用Python自带的json模块或者requests的内置功能来处理,它们会自动搞定字符转义:

方案1:用json模块序列化

import requests
import json

def send_slack_message(message: str):
    payload = json.dumps({"text": message})
    response = requests.post(url,
                             data=payload,
                             headers={"Content-Type": "application/json"})
    print(response.text)

def main(message_text: str):
    send_slack_message(message=message_text)

调用的时候可以直接传原始路径,或者用Python原始字符串(加r前缀)避免本地转义:

# 普通字符串(需要手动转义反斜杠)
main(message_text="Found at \\something.co.uk\\blahblah\\blah")
# 原始字符串(无需手动转义)
main(message_text=r"Found at \something.co.uk\blahblah\blah")

方案2:直接用requests的json参数

更简单的方式,让requests自动处理序列化和请求头:

import requests

def send_slack_message(message: str):
    response = requests.post(url,
                             json={"text": message})
    print(response.text)

def main(message_text: str):
    send_slack_message(message=message_text)
Slack Webhook字符规则说明

Slack对消息内容的字符限制很宽松,核心约束来自JSON格式:

  • 反斜杠、双引号必须转义(用json模块会自动处理)
  • 控制字符(比如换行、制表符)需要正确转义
  • 除JSON语法要求的转义外,常规的字母、数字、路径符号(\、/等)都能正常发送

只要保证最终发送的payload是合法JSON,就能成功投递消息。

内容的提问来源于stack exchange,提问作者frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:32:47