无需额外权限与Bot,基于Slack Commands API删除交互式消息
实现无需额外权限与Bot的Slack Cancel删除按钮方案
嘿,这个需求我正好实践过,完全可以满足!核心是利用Slack交互式消息的原生响应能力,让用户点击Cancel按钮后直接删除目标消息,全程不需要你的应用拥有chat:write:user权限,也不需要单独创建Bot用户。
核心原理
当用户触发你的Slack命令后,你返回的交互式消息里的按钮,在被点击时可以让你的应用返回一个特定指令,告诉Slack以用户自身的权限删除那条原始消息——这个操作是Slack原生支持的,不需要应用额外申请权限。
具体实现步骤
1. 构建包含Cancel按钮的交互式消息
在你返回的消息附件里,添加一个类型为button的Cancel按钮,建议设置style: danger让按钮显示红色(更直观),并给它一个明确的action_id方便后续识别:{ "attachments": [ { "actions": [ // 你的其他功能按钮 { "type": "button", "text": { "type": "plain_text", "text": "Cancel" }, "style": "danger", "action_id": "cancel_command" } ] } ] }2. 处理Cancel按钮的交互请求
当Slack把用户点击Cancel按钮的POST请求发送到你的应用端点时,你只需要返回一段简单的JSON响应,指定response_action为delete_original:{ "response_action": "delete_original" }这个响应会直接通知Slack删除用户最初收到的那条交互式消息,而且整个操作是以用户自己的权限执行的,所以你的应用完全不需要额外的权限,也不需要Bot用户参与。
重要细节提醒
- 确保你的应用已经正确配置了交互式组件的请求端点,Slack能正常把按钮点击事件发送到你的服务。
- 这个方案只能删除由当前命令触发的原始消息,正好匹配你“取消当前命令并删除该消息”的需求。
- 全程不需要创建Bot用户,因为你的应用是作为Slack命令的响应者在工作,所有交互都是基于用户发起的命令流程。
内容的提问来源于stack exchange,提问作者Raul Rene
相关产品推荐
相关产品推荐

