Python调用Slack Incoming Webhook时fields的value内容被截断如何解决
问题原因
Slack 旧版 attachments 结构中的 fields.value 存在内置字符限制,单字段内容过长时会被自动截断。
解决方案
方案1:调整现有attachments结构,将长内容移入text字段
attachments 下的 text 字段容量上限远高于fields的value字段,可承载更长内容,修改后的代码示例如下:
slack_data = { "username": "Test", "icon_emoji": ":robot_face:", "attachments": [ { "pretext": "Test", "title": self.__title, "text": message, # 长内容直接放在text字段 } ] } headers = {'Content-Type': "application/json"} response = requests.post(SLACK_CHANNEL_URL, json=slack_data, headers=headers)
方案2:改用Slack官方推荐的Block Kit结构
如果内容超过3000字符,可拆分为多个section块拼接,不会出现自动截断问题,代码示例如下:
slack_data = { "username": "Test", "icon_emoji": ":robot_face:", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": f"*{self.__title}*\n{message}" # 支持markdown格式,单块容量上限3000字符 } } ] } headers = {'Content-Type': "application/json"} response = requests.post(SLACK_CHANNEL_URL, json=slack_data, headers=headers)
如果内容超过3000字符,直接把长文本按段落拆分,追加多个section类型的块到blocks列表中即可。
内容的提问来源于stack exchange,提问作者Ayush Ujjwal
相关产品推荐
相关产品推荐

