如何通过API在Slack Canvas中程序化提及/标记用户?
Slack Canvas API实现可点击用户提及的解决方案
核心结论
Slack Canvas的Markdown解析器不兼容普通频道消息的<@UXXXX>提及语法,必须使用Canvas专属的富文本(rich_text)结构才能创建可点击的用户提及。
问题原因
- 你尝试的
<@U1234567890>是Slack频道消息的提及语法,Canvas的Markdown解析器不会将其解析为可交互的用户链接,只会显示为纯文本。 - 之前使用
rich_text类型时触发invalid_arguments错误,是因为没有遵循Canvas富文本的正确结构规范。
正确实现方式
使用rich_text类型的document_content,按照Canvas富文本的元素结构构建用户提及。以下是修正后的canvases.edit请求体示例:
{ "canvas_id": "F1234567890", "changes": [ { "operation": "replace", "document_content": { "type": "rich_text", "rich_text": { "elements": [ { "type": "text", "text": "User: " }, { "type": "user", "user_id": "U1234567890" } ] } } } ] }
关键注意事项
- 确保机器人已拥有
users:read(用于获取目标用户ID)和canvases:write权限 - 使用
@slack/web-api库时,直接构造上述JSON结构即可,无需额外转义字符 - 可以先通过
conversations.canvases.create接口创建带提及的Canvas,验证格式正确性后再复用结构到canvases.edit
内容的提问来源于stack exchange,提问作者Myron King
相关产品推荐
相关产品推荐

