如何在Slack API全局快捷方式中获取当前会话/频道ID
实现Slack全局快捷方式默认选中当前频道的方法
核心解决路径
虽然全局快捷方式的官方请求载荷里没有直接提供当前频道ID,但可以通过以下两种可靠方式实现需求:
方式一:借助Slack客户端前端上下文获取精准频道ID
Slack客户端在前端会保留用户当前活跃频道的上下文信息,你可以结合侧边栏应用能力来获取:- 先让用户打开过你的应用侧边栏,此时通过客户端JS调用Slack的上下文API获取当前频道ID:
slack.getContext().then(context => { const currentChannelId = context.channelId; // 将该ID与用户会话绑定,存储到你的服务端 }); - 当用户触发全局快捷方式时,服务端通过用户ID关联之前存储的频道ID,在模态框的频道选择字段中设置
initial_channel为该ID,即可默认选中当前频道。
- 先让用户打开过你的应用侧边栏,此时通过客户端JS调用Slack的上下文API获取当前频道ID:
方式二:通过用户互动历史推断最近活跃频道
如果无法依赖侧边栏上下文,可以通过API推断用户最近使用的频道:- 调用
conversations.list获取用户可见的所有频道(带上user参数指定目标用户)。 - 对每个频道调用
conversations.history,筛选出用户最近发送消息的频道,将其作为默认选项。 - 在模态框的频道选择组件中配置
initial_channel为该频道ID。
- 调用
模态框频道字段配置示例
构建模态框的blocks时,给频道选择组件添加默认值属性:
{ "type": "input", "element": { "type": "conversations_select", "placeholder": { "type": "plain_text", "text": "选择频道" }, "initial_channel": "C1234567890" // 填入获取到的目标频道ID }, "label": { "type": "plain_text", "text": "目标频道" } }
内容的提问来源于stack exchange,提问作者Facundo Dartayete
相关产品推荐
相关产品推荐

