SuperAPI AI 工具集

channel-bot

智能体与模型

查看项目

更新于 10-16 07:29

技能介绍

Messaging Channels(Telegram / Slack)

Channels 是位于 backend/app/services/channels/ 的一个完整服务:包含各平台适配器,以及一个把入站消息导入与网页聊天相同智能体流水线的路由器。

目录结构

文件 | 职责

base.py | 共享的渠道适配器接口

telegram.py | Telegram 适配器(aiogram v3)

slack.py | Slack 适配器(Events API + Socket Mode)

router.py | 将入站平台消息映射为会话 / session → 智能体运行 → 回复

chart_render.py | 将图表工具输出渲染为 PNG 供渠道使用

机器人存储在数据库(channel_bot)中,并配有按用户身份(channel_identity)和按会话线程(channel_session)的表。机器人令牌使用 CHANNEL_ENCRYPTION_KEY(Fernet)静态加密。

注册 / 管理机器人

uv run {{ cookiecutter.project_slug }} cmd channel ... # 参见 cmd channel --help

Webhook 与轮询

轮询(开发):适配器向平台发起长轮询——无需公网 URL。

Webhook(生产):平台将请求 POST 到 POST /api/v1/telegram/{bot_id}/webhook 或 Slack 事件端点。在处理前校验签名 / 密钥(Telegram 使用 HMAC,Slack 使用签名密钥)。

新增渠道适配器

在 services/channels/<platform>.py 中针对 base.py 接口实现适配器(解析入站 → 规范化消息;发送出站)。

将其接入 router.py,使入站消息到达智能体并将回复流式返回。

在 api/routes/v1/ 下添加(已校验签名的)Webhook 路由,和/或一个轮询入口。

复用现有的 conversation/session 模型——不要分叉智能体流水线。

规则

入站消息经 router.py 流入与网页聊天相同的智能体 / session 流水线——不要按平台重复实现智能体逻辑。

在对载荷执行操作前,始终校验 Webhook 签名。

令牌加密存储(CHANNEL_ENCRYPTION_KEY);绝不记录或回显令牌。

遵守各适配器中已有的按群组 / 按线程并发控制。