SuperAPI AI 工具集

slack-automation

办公与效率

查看项目

更新于 10-15 11:24

技能介绍

用途

该技能用于通过 Rube MCP(Composio)自动化 Slack 工作区操作,包括消息发送、频道管理、搜索、表情回应和话题线程处理。它面向需要以编程方式或智能体方式操作 Slack 的用户,将 Slack 的常见操作封装为可调用的工具序列。

主要能力

技能覆盖以下核心工作流:

  1. 向频道发送消息:解析频道名称为频道 ID,发送消息,并可在需要时编辑已发布消息。支持 markdown_text 格式化内容、thread_ts 线程回复、blocks 布局块等参数。
  2. 搜索消息与对话:使用关键词搜索可访问的对话,支持 in:#channel、from:@user、before/after 日期、has:link、has:file 等修饰符,并可展开相关消息的线程。
  3. 管理频道与用户:获取工作区信息、列出公开频道、列出包含私密频道与私信的对话、列出工作区成员、获取频道详细元数据、列出用户组。
  4. 表情回应与线程管理:为消息添加或移除表情回应、列出消息上的回应、使用 thread_ts 在线程中回复、读取完整线程。
  5. 定时发送消息:通过 post_at 参数安排未来发送的消息,最多可提前 120 天。

使用方式

前置条件

  • 必须连接 Rube MCP(RUBE_SEARCH_TOOLS 可用)。
  • 通过 RUBE_MANAGE_CONNECTIONS 建立有效的 Slack 连接(toolkit 为 slack)。
  • 始终先调用 RUBE_SEARCH_TOOLS 获取当前工具 schema。

设置步骤

  1. 获取 Rube MCP:在客户端配置中添加 https://rube.app/mcp 作为 MCP 服务器。无需 API 密钥,添加端点即可使用。
  2. 确认 RUBE_SEARCH_TOOLS 有响应,以验证 Rube MCP 可用。
  3. 调用 RUBE_MANAGE_CONNECTIONS,toolkit 设为 slack。
  4. 若连接不是 ACTIVE,按返回的授权链接完成 Slack OAuth。
  5. 确认连接状态为 ACTIVE 后再运行任何工作流。

常用工具与参数

  • 查找频道:SLACK_FIND_CHANNELS,参数 query。
  • 列出所有频道:SLACK_LIST_ALL_CHANNELS,参数 limit、cursor、types。
  • 发送消息:SLACK_SEND_MESSAGE,参数 channel、markdown_text。
  • 编辑消息:SLACK_UPDATES_A_SLACK_MESSAGE,参数 channel、ts、markdown_text。
  • 搜索消息:SLACK_SEARCH_MESSAGES,参数 query、count、sort。
  • 获取线程:SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION,参数 channel、ts。
  • 添加表情:SLACK_ADD_REACTION_TO_AN_ITEM,参数 channel、name、timestamp。
  • 查找用户:SLACK_FIND_USERS,参数 search_query 或 email。
  • 列出用户:SLACK_LIST_ALL_USERS,参数 limit、cursor。
  • 打开私信:SLACK_OPEN_DM,参数 user IDs。
  • 定时消息:SLACK_SCHEDULE_MESSAGE,参数 channel、post_at、text。
  • 获取频道信息:SLACK_RETRIEVE_CONVERSATION_INFORMATION,参数 channel ID。
  • 频道历史:SLACK_FETCH_CONVERSATION_HISTORY,参数 channel、oldest、latest。
  • 工作区信息:SLACK_FETCH_TEAM_INFO,无参数。

通用模式

  • ID 解析:操作前先将显示名称解析为 ID。频道名到频道 ID 使用 SLACK_FIND_CHANNELS;用户名到用户 ID 使用 SLACK_FIND_USERS;私信频道使用 SLACK_OPEN_DM。
  • 分页:多数列表端点使用游标分页,需跟随 response_metadata.next_cursor 直到为空,设置明确的 limit 值(如 100-200),并按 id 去重。
  • 消息格式化:优先使用 markdown_text 而非 text 或 blocks;提及用户使用 <@USER_ID> 格式;换行使用 \n。

适用场景

  • 需要自动向 Slack 频道或用户发送、编辑、定时发送消息。
  • 需要在 Slack 工作区中按关键词、频道、用户、日期等条件搜索消息并展开线程。
  • 需要批量列出频道、用户、用户组或获取工作区与频道元数据。
  • 需要自动添加或移除消息表情回应,或在线程中回复。

限制与注意事项

  • 频道解析:若频道为私密且机器人未被邀请,SLACK_FIND_CHANNELS 可能返回空结果。
  • 限流:SLACK_LIST_ALL_USERS 等列表端点可能触发 HTTP 429,需遵守 Retry-After 响应头。
  • 嵌套响应:在包装执行中,结果可能嵌套在 response.data.results[0].response.data 下。
  • 线程与频道:SLACK_FETCH_CONVERSATION_HISTORY 仅返回主频道时间线,不包含线程回复;需使用 SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION 获取线程回复。
  • 消息编辑:需要 channel 和原始消息 ts,应从 SEND_MESSAGE 响应中持久化保存。
  • 搜索延迟:最近发布的消息可能不会立即出现在搜索结果中。
  • 权限范围:缺少 OAuth scope 可能导致 403 错误,可用 SLACK_GET_APP_PERMISSION_SCOPES 检查。
  • 定时发送:最多提前 120 天,post_at 必须为 Unix 时间戳而非 ISO 8601。
  • 搜索校验:query 缺失或为空会导致校验失败;ok=true 仍可能表示无结果(response.data.messages.total=0)。
  • 表情回应:需要精确的频道 ID 与消息时间戳组合;表情名称使用 Slack 命名约定,不带冒号。
  • 消息发送:需要有效频道以及 markdown_text/text/blocks/attachments 之一;无效 block 负载返回 error=invalid_blocks(最多 50 个 block)。
  • 线程回复:省略 thread_ts 时回复会变成顶层帖子。