SuperAPI AI 工具集

message-push

办公与效率

查看项目

更新于 10-15 08:49

技能介绍

Message Push 是一个用于主动向 IM 渠道发送消息的技能,可以向群组或个人用户推送消息,而无需等待对方先发来消息。

用途 该技能用于识别用户的推送意图,例如“把这条消息发到运维群”“私聊告诉 Alice……”“把这个摘要发到 #general”“在飞书上通知团队”“转发到聊天 oc_xxx”等。当用户提出发送、发布、通知、转发或告知某人消息的请求时,可使用该技能完成主动推送。

主要能力

  • 主动向 IM 群组或个人用户发送消息。
  • 通过 GET /api/channels 发现可用渠道,并确认渠道是否存在、是否支持发送。
  • 通过 POST /api/send 发送消息,请求字段包括 channel、chatId 和 text,其中 text 支持 Markdown。
  • 发送成功返回 200 { "ok": true };失败时可根据 HTTP 状态码处理:404 表示渠道未找到,501 表示渠道不支持主动发送,503 表示当前没有可用的渠道适配器。
  • 支持渠道包括 feishu、dingtalk、wecom、slack、telegram、discord。
  • 提供各平台查找 chatId 的常见方式:飞书为群设置中的群 ID(以 oc_ 开头);Slack 为 URL 中的频道 ID(C 前缀)或私聊用户 ID(U 前缀);Telegram 为消息事件中的 Chat ID(群组为负数);Discord 为 URL 或开发者模式中的频道 ID;钉钉为 webhook 或 API 中的会话 ID;企业微信为 API 中的 Chat ID。
  • 如果用户以名称而非 ID 引用群组,可检查 memory/groups/ 中的群组记忆文件,群组键格式为 {channel}-{chatId}。

使用方式 发送工作流如下:

  1. 识别目标——根据用户请求确定渠道名称和 chatId。
  2. 发现可用渠道——调用 GET /api/channels 确认渠道存在且支持发送。
  3. 撰写消息——起草文本内容,遵循 im-adapter 格式指南。
  4. 与用户确认——如果是首次向该会话发送,展示草稿并请求批准。
  5. 发送消息——调用 POST /api/send,传入 channel、chatId 和 text。
  6. 报告结果——告知用户发送成功或失败。

发送 API 示例: curl -X POST http://localhost:$PORT/api/send
-H "Content-Type: application/json"
-d '{ "channel": "feishu", "chatId": "oc_xxxx", "text": "Hello from the bot!" }'

请求字段:

  • channel:字符串,必填,渠道名称,如 feishu、dingtalk、wecom、slack、telegram、discord。
  • chatId:字符串,必填,目标平台上的聊天/群组/会话 ID。
  • text:字符串,必填,消息内容,支持 Markdown。

响应:

  • 200 { "ok": true }:消息发送成功。
  • 404:渠道未找到(请检查可用渠道)。
  • 501:渠道不支持主动发送。
  • 503:没有可用的渠道适配器。

发现可用渠道: curl http://localhost:$PORT/api/channels 返回示例: { "channels": [ { "name": "feishu", "canSend": true }, { "name": "slack", "canSend": true } ] }

错误处理 如果发送失败,检查 HTTP 状态码:

  • 404:运行 GET /api/channels,并告知用户实际可用的渠道。
  • 501:说明目标渠道适配器不支持主动发送。
  • 503:告知用户当前没有正在运行的 IM 适配器。

适用场景 适用于需要主动推送消息到 IM 渠道的场景,例如向运维群发送通知、私聊告知某人信息、将摘要发布到频道、在飞书上通知团队、转发消息到指定聊天等。

限制

  • 首次向新会话发送前应始终与用户确认。
  • 私聊时需确保接收方此前已与机器人互动(多数平台有此要求)。
  • 消息应保持简洁,遵循 im-adapter 格式指南。
  • 如果用户只说“发到群里”而未指定具体群组,应检查当前会话上下文或询问用户。
  • 各平台 chatId 格式不同,需按平台方式获取。
  • 部分渠道可能不支持主动发送,需通过 GET /api/channels 确认。