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

GitHub Actions上传文件至Slack遇400错误排查:请求缺少Slack要求的Payload字段

问题:GitHub Actions上传文件到Slack时出现"no_text" 400错误

我尝试通过GitHub Actions将文件上传至Slack时,出现如下错误:

"no custom payload was passed in, using default payload that triggered the GitHub Action axios post failed, double check the payload being sent includes the keys Slack expects Error: no_text Error: Request failed with status code 400"

以下是我在.yml文件中配置的内容:

- name: Send GitHub trigger payload to Slack Workflow Builder
  id: slack
  uses: slackapi/slack-github-action@v1.21.0
  with:
    payload-file-path: "./stats.json"
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

请问我的配置中缺失了什么?

解决方案

这个400错误里的no_text提示是核心线索——Slack没有收到它预期的必填字段,结合你的配置来看,问题出在这几个关键点:

1. 混淆了「发送消息Payload」和「上传文件」的参数

你当前使用的payload-file-path参数是用来向Slack Webhook发送自定义JSON消息内容的,而非直接上传文件。如果你的目标是把stats.json文件本身传到Slack,应该改用file-path参数,同时补充必要的消息说明,修改后的配置如下:

- name: Upload stats file to Slack
  id: slack
  uses: slackapi/slack-github-action@v1.21.0
  with:
    file-path: "./stats.json"
    initial-comment: "本次GitHub Actions运行生成的统计数据文件"
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

2. 若需发送JSON Payload,必须包含Slack要求的字段

如果你的需求是把stats.json里的内容作为消息发送(而非上传文件),那必须保证JSON结构符合Slack Webhook的要求:

  • 对于普通Slack Incoming Webhook,text是必填字段(比如{"text": "这里是要发送的消息内容"})
  • 如果你对接的是Slack Workflow Builder的Webhook,要严格匹配你在Workflow中定义的触发参数(比如Workflow设置了接收report_content字段,你的JSON里就必须包含这个键)

你可以先用curl手动测试Payload和Webhook的有效性,快速定位问题:

curl -X POST -H "Content-Type: application/json" -d @stats.json $SLACK_WEBHOOK_URL

如果curl也返回400,那就是stats.json的内容不符合Slack要求,补充对应字段即可。

3. 确认Webhook类型与配置匹配

不同类型的Slack Webhook对Payload的要求差异很大:

  • Workflow Builder的Webhook需要完全匹配你创建Workflow时设定的触发参数,不能使用默认的text字段
  • 普通Incoming Webhook灵活性更高,但text是必填项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:18:13