You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slack斜杠命令如何获取用户上传的媒体文件?

如何通过Slack斜杠命令或机器人获取用户上传的文件?

斜杠命令的直接请求负载本身不会附带任何文件数据,这是Slack的机制限制。要实现同时接收文本和媒体文件的需求,可以通过以下两种方案解决:

方案一:消息事件监听+斜杠命令联动

这种方案适配用户直接在聊天框发送斜杠命令+文件的操作习惯:

  • 给Slack应用添加对应权限:根据需要监听的频道类型,勾选channels:history(公开频道)、groups:history(私有频道)、im:history(私聊)、mpim:history(多人私聊)权限;同时启用message.channels、message.im等对应的消息事件。
  • 事件关联逻辑:用户发送斜杠命令+文件后,Slack会先触发斜杠命令请求,随后发送包含文件信息的消息事件到你的应用。消息事件的payload里会有files数组,包含所有上传文件的ID、私有链接、文件类型等详情。你可以通过事件中的user、channel字段,和斜杠命令请求里的user_id、channel_id做关联,匹配到对应的文件。
  • 注意事项:用event_id对事件做去重处理,避免重复处理同一消息。

方案二:通过模态框(Modal)收集文本与文件

这种方案更可控,能明确引导用户提交内容:

  • 触发模态框:在斜杠命令的响应逻辑中,调用Slack的views.openAPI,弹出一个模态框。模态框里需包含两个核心组件:
    • plain_text_input:用于收集用户的文本内容
    • file_input:用于让用户上传图片、视频、语音等文件
  • 获取提交内容:用户在模态框中完成提交后,Slack会发送view_submission事件到你的应用。事件payload的state.values字段里会包含用户输入的文本,以及上传文件的ID。
  • 获取文件详情:调用files.infoAPI,传入文件ID即可获取文件的完整信息,之后就能根据文本中的关键词判断是否将文件发布到指定频道。

权限补充说明

  • 两种方案都需要确保应用已授权files:read权限,才能读取文件详情;若要将文件发布到其他频道,files:write权限必须配置。
  • 模态框方案额外需要chat:write权限,用于触发模态框。

内容的提问来源于stack exchange,提问作者Nuriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:15:31