Channel 消息渠道
Channel 的定位
Channel 是用户与平台之间的入口通道。同一个 Agent 能力可以通过不同 Channel 暴露——用户无需学习新界面,在既有工作方式下就能触发 Agent:
Rendering diagram…
已支持 Channel
| Channel | 支持能力 | 典型场景 |
|---|---|---|
| Web Chat | 富文本消息、流式响应、文件上传、工件实时更新 | 默认 Web 界面 |
| 飞书 / Lark | IM(@ 机器人 / 群聊 / 私聊)、云文档评论触发、卡片消息、附件 | 团队协作为主的客户 |
| 企业微信 / WeCom | IM(@ 机器人 / 群聊 / 私聊)、卡片消息、文件 | 内部部署国企 / 政府 |
| 邮件 / SMTP · IMAP | 发信 / 收信 / 规则触发 / 附件解析 | 外部合作方、客户交付 |
| Webhook | 通用 HTTP POST 入口 | 外部系统(CI / Jira / DOORS)触发 |
Channel Adapter 的 4 大职责
1. 身份映射
外部身份(飞书 open_id、企微 userid、邮箱地址)→ 平台租户 / 用户 / 会话所有者
- 支持强映射:外部 ID 必须先在平台绑定
- 支持动态映射:按规则自动创建用户(例:邮件域名 = 租户)
2. 会话路由(Session Resolver)
一条外部消息应该落到哪个 Session?这层决策考虑:
- 群聊 / 单聊:群聊默认共享 Session,单聊每人一个
- 话题隔离:飞书话题 / 企微会话序列可映射到不同 Session
- 时间窗口:超过 X 小时不活跃自动开新 Session
3. 格式转换
| 来源 | 内部统一格式 | 目标 |
|---|---|---|
| 飞书富文本 / 卡片 | 平台 Message | 飞书卡片 / 富文本 |
| 企微 markdown 卡 | 平台 Message | 企微 markdown 卡 |
| 邮件 HTML / 附件 | 平台 Message | 邮件 HTML |
| Webhook JSON | 平台 Event | HTTP 响应 |
4. 凭据 / 限流 / 去抖
- 凭据:Bot Token / OAuth / App Secret 由 Credential 层统一管
- 限流:防止外部 Bot 攻击,按 Channel 独立计数
- 去抖(Debounce):同一用户 N 秒内重复消息合并
一个消息的生命周期(飞书示例)
DM / 群聊策略
每个 Channel 可独立配置:
| 策略 | 说明 |
|---|---|
dm-only | 只处理单聊,群聊里的 @ 也忽略 |
mention-only | 群聊只处理 @ 机器人的消息 |
all | 群聊所有消息都进 Session(适合"小群专机器人") |
command-prefix | 只处理以 /, @xxx 等前缀的消息 |
配置方式
通过管理台的「集成对接」页面,每个 Channel 独立配置:
- 飞书:
App ID+App Secret+ 事件订阅 URL - 企微:
CorpID+AgentID+Secret - 邮件:SMTP / IMAP 账号
详见 集成对接。
相关文档
- 📖 Event Trigger 事件触发 — Channel 也是一种 Trigger
- 🔌 飞书集成 · 企微集成 · 邮件集成
- 🧩 源码入口:
AgentFlow/src/channels/·api/apps/channel_app.py