10 个 IM 平台,一个插件接进来
im-channel是一个独立仓库的通用 IM 渠道组件:统一入站消息、统一出站发送、会话历史与人工回复。在 uuos 中它以产品插件 ai.uuos.im-channel的形态注册——每个平台的 webhook 握手、签名算法和奇怪的坑,都被挡在工作流之外。
想脱离 uuos 单独使用?见 产品族 · im-channel
一条消息的旅程
平台回调进来
每个渠道一个公开 webhook 地址(/webhooks/im-channel/…),飞书、Slack、Telegram 的消息统一从这里入站。
验签与规范化
各平台的签名算法、握手协议、消息格式在适配层被消化,进入系统的是统一的消息模型。
触发工作流运行
消息经 AgentInvoker 映射为一次 uuos 工作流运行——对执行引擎来说,IM 消息只是又一种触发源。
结果回到原会话
运行完成后答案发回消息来源的会话;会话历史留存,需要时人工可以接管回复。
平台覆盖
入站能力如实标注:企业微信群机器人只发不收,Discord 入站需要 Gateway bot,两者当前仅支持出站。
| 平台 | 入站(触发工作流) | 出站(发送回复) | 验签 / 备注 |
|---|---|---|---|
| 飞书 | 事件回调 | 群机器人 webhook | HMAC-SHA256 验签 |
| 钉钉 | Outgoing 机器人 | 自定义机器人 webhook | 加签 |
| 企业微信 | — | 群机器人 webhook | text / markdown |
| 微信公众号 | 消息回调 | 客服消息 API | echostr 握手 |
| Slack | Events API | chat.postMessage | 签名校验 |
| Telegram | Bot API update | sendMessage | token 路由 |
| Cloud API webhook | Cloud API | verify token | |
| LINE | Messaging API | Push message | 签名校验 |
| Discord | — | Incoming webhook | — |
| 通用 Webhook | 任意 JSON | POST JSON | 自定义 |
怎么集成到 uuos
- 01
配置开启
uuos 配置文件里打开 ImChannel 段(或 Helm values 的 productPlugins.msgChannel),指定默认触发的工作流。
- 02
启动即注册
作为产品插件 ai.uuos.im-channel 注册:认证 API 挂载 /v1/im-channel,公开 webhook 挂载 /webhooks/im-channel——后者在鉴权之外,专供平台回调。
- 03
把 Runner 注进来
uuos 实现 im-channel 定义的 AgentInvoker 接口,把消息触发接到自己的执行引擎;im-channel 不 import uuos,明天接你自己的 Agent 服务也是同一个接口。
# uuos-api.yaml —— 打开消息渠道插件
ImChannel:
Enabled: true
RedisAddr: "127.0.0.1:6379"
DefaultFlowID: "flow_…"
# 平台回调统一入口(鉴权之外)
POST /webhooks/im-channel/{token}
# AgentInvoker —— 消息到运行的映射
TriggerRun(ctx, scope, targetID, input)集成后你得到什么
IM 消息 = 工作流触发器
在飞书群里 @ 机器人,就是启动一次生产工作流——不用为每个平台单独写接入代码。
渠道配置界面开箱即用
「渠道接入」「会话消息」菜单出现在 uuos 一级导航,webhook 地址、验签配置、会话记录都在界面里管理。
会话与人工接管
自动回复之外保留人工通道:会话历史完整留存,客服可随时介入接管。
数据边界清晰
渠道与会话数据落在独立命名空间(t_im_channel_*),迁移脚本由组件自己维护,与核心表零外键。
| 插件 ID | ai.uuos.im-channel |
| API 挂载 | /v1/im-channel(认证) · /webhooks/im-channel(公开) |
| 能力声明 | im-channel.channel.manage · im-channel.message.send |
| 导航菜单 | 渠道接入 · 会话消息 |
组件状态:即将开源——状态如实标注,同集成页口径。