问题域/PD-133

多渠道消息网关

Multi-Channel Message Gateway

统一管理多个消息平台的接入、路由和分发,解耦渠道层与业务逻辑

子问题

1.多平台协议适配

2.消息队列解耦

3.出站消息路由分发

4.渠道动态启停管理

5.跨线程事件循环桥接(飞书 SDK 线程回调→asyncio)

6.平台特定消息格式转换(Markdown→HTML/Card/纯文本)

7.OAuth2 Token 自动刷新与过期管理

8.SDK 可选依赖的延迟导入与优雅降级

各项目的解法1 solutions

Signals

横向对比

维度Nanobot
渠道数量8 个平台:Telegram/WhatsApp/Discord/Feishu/DingTalk/Email/Slack/QQ
解耦机制MessageBus 双 asyncio.Queue(inbound + outbound)
渠道接口BaseChannel ABC 统一 start/stop/send 三方法
配置驱动Pydantic ChannelsConfig 每渠道 enabled 开关 + 延迟导入容错
访问控制BaseChannel.is_allowed() 统一白名单,支持复合 ID
消息去重按渠道差异化:OrderedDict/deque/set 三种策略
出站路由ChannelManager 单协程轮询 outbound 队列按 channel 字段分发

最佳实践

1.用 MessageBus 异步队列解耦渠道与核心逻辑

2.用 BaseChannel ABC 模板方法统一权限检查和消息构造

3.延迟导入 + ImportError 捕获实现 SDK 可选依赖

4.按平台特性选择差异化去重策略(OrderedDict/deque/set)

5.出站路由用 wait_for(timeout=1.0) 避免无限阻塞保证可停机