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

Slack Blocks格式在Workflows中失效,请求技术排查

Slack Block Kit 格式丢失问题修复

问题现状

我编写了AWS Lambda函数向Slack发送Block Kit格式消息,但发送后所有格式失效:

  • 标题“Week N: Coding Puzzle, human generation!”的加粗效果未显示
  • 分隔线未渲染
  • 代码块仅显示反引号,内容变为纯文本

当前Lambda代码:

def postToSlack(url, message):
   slack_data = json.dumps({'blocks': message})

   headers = {
       "Content-Type": "application/json",
       "Accept": "application/json",
   }

   r = requests.post(url, headers=headers,  data=slack_data)

问题原因与修复方案

1. 严格遵循Block Kit结构规范

Slack的Block Kit对格式有明确结构要求,需确保message变量符合以下规则:

  • 加粗文本:在section类型的block中,将text的type设为mrkdwn,并用*内容*标记加粗:
    {
        "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": "*Week N: Coding Puzzle, human generation!*"
        }
    }
    
  • 分隔线:单独使用一个type: "divider"的block,不能嵌套在其他block内:
    {"type": "divider"}
    
  • 代码块:在section的mrkdwn类型text中,用三个反引号包裹代码内容:
    {
        "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": "```\n你的代码内容\n```"
        }
    }
    

2. 优化Lambda函数实现

原代码手动序列化JSON并设置headers,易出现转义问题。改用requests的json参数,它会自动处理序列化和Content-Type头,避免格式错误:

import json
import requests

def postToSlack(url, message):
    # 直接传入json参数,无需手动dumps和设置headers
    response = requests.post(url, json={'blocks': message})
    # 新增错误检查,便于调试
    if response.status_code != 200:
        raise Exception(f"Slack请求失败: {response.status_code} - {response.text}")

3. 调试建议

  • 先用Slack Block Kit Builder验证message结构是否正确,确认预览效果符合预期后再部署Lambda
  • 查看Slack API的返回响应,若有错误信息可直接定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:42:42