Python脚本调用Slack Incoming Webhook发消息:无报错但未成功
问题排查与修复方案
核心问题1:函数未执行
你的脚本只定义了main和send_slack_message函数,但从头到尾没有调用过这些函数——代码仅获取了name变量就结束了,自然不会触发任何发送请求的逻辑。
核心问题2:函数参数逻辑混乱
send_slack_message函数接收了message参数,但内部完全没用到,反而使用全局的name变量。而且直接用字符串拼接生成JSON,一旦name包含引号、换行等特殊字符,会直接破坏JSON格式,导致Slack拒绝处理。
核心问题3:请求格式不规范
给Slack Webhook发JSON数据时,需要设置Content-Type: application/json请求头,或者直接用requests的json参数自动处理格式和请求头,否则Slack无法正确解析你的请求。
修复后的完整代码
import requests # 建议把模块导入放在文件顶部,不要嵌套在函数内 def send_slack_message(message: str): # 用json参数传字典,requests会自动完成JSON序列化并设置正确请求头 response = requests.post( 'https://hooks.slack.com/services/*****************', json={"text": message} ) print(response.text) # 打印状态码方便排查问题 print(f"请求状态码: {response.status_code}") def main(): name = input("What is your name? ") send_slack_message(message=f"Hello, {name}!") # 构造要发送的消息内容 # 必须调用main函数才会执行整个逻辑 if __name__ == "__main__": main()
额外排查点
- 确认你的Webhook URL完全正确,没有打错字符或泄露后失效
- 如果仍然失败,查看
response.text里的具体错误信息,Slack会返回明确的失败原因(比如无效Webhook、格式错误等)
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

