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

Slack API Blocks中tags类型在Python调用时失效的问题排查

解决Slack Blocks中tags区块无效的问题

问题根源

Slack官方的Block Kit没有名为tags的区块类型,这就是你带这个区块会触发invalid_block错误的核心原因——Slack API根本不识别这个类型,跟你是否用json.dumps()序列化无关。

正确解决步骤

1. 替换tags区块为官方支持的类型

如果你的需求是在消息里展示标签,用官方认可的区块模拟:

  • 用section区块配合Markdown格式文本,比如用*#标签名*或[#标签名]呈现标签样式
  • 用context区块,把多个标签放在同一行展示

2. 用Slack官方Python SDK发送Blocks(推荐)

别手动处理JSON序列化,用slack-sdk的WebClient直接传Python字典,SDK会自动处理格式问题,代码示例:

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

# 初始化客户端,替换为你的Bot Token
client = WebClient(token="xoxb-your-bot-token")

# 构造包含合法区块的payload
blocks = [
    {
        "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": "这是带标签的消息:*#项目A* *#紧急*"
        }
    },
    {
        "type": "context",
        "elements": [
            {
                "type": "mrkdwn",
                "text": "*#前端*"
            },
            {
                "type": "mrkdwn",
                "text": "*#Bug修复*"
            }
        ]
    }
]

try:
    # 发送消息,直接传入blocks字典
    response = client.chat_postMessage(
        channel="#your-channel",
        blocks=blocks
    )
    print("消息发送成功:", response["ts"])
except SlackApiError as e:
    print(f"发送失败: {e.response['error']}")

3. 验证Blocks格式

用Slack官方的Block Kit验证工具检查你的payload,确保所有区块类型都是官方支持的(比如section、divider、image、actions、context等),避免使用非官方类型。

额外注意点

  • 不要用json.dumps()把blocks转成字符串传给API,直接传Python字典即可,Slack SDK会自动处理序列化
  • 从Block Kit Builder复制payload时,务必检查区块类型,有些测试或第三方扩展的类型官方API不支持,只保留官方文档里列出的类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:12:11