Slack API:chat.postMessage接口payload星号字符转义问题咨询
问题原因
你遇到的是两层规则冲突导致的问题:
- JSON语法要求字符串中的反斜杠必须转义,直接写
\*属于非法JSON格式,所以会返回invalid_json报错 - Slack的mrkdwn语法不支持用反斜杠转义星号,所以你传
\\*经过JSON解析后变成\*传给Slack,会被直接原样渲染出反斜杠
解决方案
方案1:使用Unicode实体转义普通星号
把需要作为乘号原样显示的星号替换为Unicode实体*,Slack会自动将其解析为普通半角星号,不会识别为加粗格式符。
请求写法如下:
{ "channel": "CHANNEL_ID", "mrkdwn": true, "text": "500 * 2 = *1000*" }
注意你之前请求里的根参数"type": "mrkdwn"是无效参数,全局开启mrkdwn解析的正确参数是"mrkdwn": true。
方案2:使用blocks字段传递内容(兼容性更强)
如果需要更稳定的格式控制,推荐用Slack官方推荐的blocks结构传递富文本:
{ "channel": "CHANNEL_ID", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "500 * 2 = *1000*" } } ] }
以上两种方案都可以实现预期效果:500 * 2 = 1000(其中1000为加粗样式)。
内容的提问来源于stack exchange,提问作者Taslim Oseni
相关产品推荐
相关产品推荐

