关于 channel-bridge
用于 Signal、Telegram 和 Discord 之间消息路由的技能,支持格式转换、跨频道广播、会话发送及反应转发,并包含失败重试机制。
主要功能
- 01跨 Signal、Telegram 和 Discord 路由消息
- 02转换消息格式
- 03区分普通发送与会话发送
- 04向多个频道广播
- 05转发并映射反应
- 06为失败传输重试
适用场景
- 01将 Telegram 告警转发到其他频道
- 02向多个消息平台同步公告
- 03跨平台转发用户反应
- 04通过持久会话传递消息
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill channel-bridge安装后在 Claude Code 中输入/channel-bridge确认已加载。
详细介绍
channel-bridge
用途
此技能可实现 Signal、Telegram 和 Discord 之间的跨渠道消息路由。它会处理消息格式(例如,将 Markdown 转换为纯文本),区分简单消息发送和基于会话的传输,支持向多个渠道广播,并管理跨平台的回应。
适用场景
在集成不同的消息应用时使用此技能,例如,将 Signal 警报转发到 Discord 以通知团队,在 Telegram 和 Signal 上向分布式团队广播更新,或将用户在 Discord 上的回应(例如,点赞)路由到 Signal,以便统一跟踪反馈。适用于需要实时跨平台通信且无需人工干预的场景。
主要功能
- 消息格式:自动转换内容格式;例如,使用 Discord 的 Markdown 语法,并通过
format标志将其转换为 Signal 可用的纯文本。 - 路由选项:使用
type: "message"或type: "sessions_send"等 API 参数,区分message(简单发送)和sessions_send(基于持久会话的路由)。 - 广播:同时向多个渠道发送消息;例如,使用 JSON 数组指定目标,如
["signal:group1", "discord:channel2"]。 - 回应处理:在平台间传递回应(例如,表情符号);例如,通过预定义的配置映射,将 Discord 回应映射为 Signal 回应。
- 错误恢复能力:包含失败传输的重试逻辑,并可配置重试阈值。
使用模式
始终使用环境变量进行身份验证初始化(例如,$SIGNAL_API_KEY、$TELEGRAM_BOT_TOKEN)。使用 CLI 时,直接通过管道传入输入;使用 API 时,通过 HTTP 请求发送 JSON 负载。模式 1:单渠道路由——将消息从一个平台发送到另一个平台。模式 2:广播——在单条命令中指定多个目标。模式 3:回应处理——通过 webhook 监控并转发回应。请先验证输入(例如,检查各平台的消息长度限制:Signal=4096 个字符,Discord=2000 个字符)。对于会话,可在命令中加入 --session-id 来建立持久连接。
常用命令/API
使用 CLI 工具或 REST API 进行交互。CLI 命令需要 channel-bridge 二进制文件;API 端点位于 /api/v1/ 下。
-
用于发送消息的 CLI 命令:
channel-bridge send --from signal --to telegram --message "Hello team" --format markdown此命令会路由格式化后的消息;添加
--broadcast可向多个目标发送,例如,--to "discord:channel1,signal:group2"。 -
用于会话发送的 API 端点: POST /api/v1/sessions_send 请求体:
{"from": "discord", "to": ["telegram"], "content": "Update", "type": "sessions_send", "session_id": "abc123"}添加请求头:Authorization: Bearer $DISCORD_API_KEY。 -
用于带回应广播的 CLI 命令:
channel-bridge broadcast --from tg --to "signal,discord" --message "Alert" --reactions true此命令可启用回应转发;回应通过配置文件进行映射,例如,JSON:
{"👍": "thumbsup"}。 -
用于回应处理的 API: POST /api/v1/reactions 请求体:
{"source": "discord", "reaction": "👍", "targets": ["signal"]}使用此 API 传递回应;需要预先设置 webhook。
配置格式:使用 YAML 文件设置平台选项,例如:
signal:
api_key: $SIGNAL_API_KEY
default_group: group1
telegram:
bot_token: $TELEGRAM_BOT_TOKEN
集成说明
通过设置环境变量进行身份验证,例如,导出 $SIGNAL_API_KEY 以访问 Signal。对于 API 集成,可使用 Python 中的 requests 等库:
import requests
response = requests.post('http://localhost:8080/api/v1/send', json={'from': 'tg', 'to': 'discord', 'message': 'Test'}, headers={'Authorization': f'Bearer {os.environ["TELEGRAM_BOT_TOKEN"]}'})
确保应用满足平台特定要求,例如使用 Discord webhook 实时接收更新。对于多服务设置,可通过共享会话 ID 将此技能与其他分布式通信工具串联。请先在沙盒环境中测试集成。
错误处理
检查命令/API 的响应码;例如,CLI 在失败时会返回非零退出码。常见错误:401 表示身份验证问题(请检查 $SERVICE_API_KEY),400 表示格式无效(例如,消息类型不匹配)。实现指数退避重试:在代码中,使用如下循环:
for attempt in range(3):
try:
response = requests.post(...) # API call
break
except Exception as e:
if attempt == 2:
log_error(e)
记录包含详细信息的错误(例如,“广播失败:Signal 超时”),并在 CLI 中使用 --debug 标志来输出详细信息。对于表情回应,遇到平台不匹配时,应跳过不受支持的类型。
使用示例
- 将消息从 Telegram 路由到 Signal 和 Discord:用于发送警报:
channel-bridge send --from tg --to "signal:alerts, discord:general" --message "System down" --format plain。此命令会广播消息、设置适当的格式,并记录传输 ID 以供追踪。 - 在广播场景中处理表情回应:用于反馈循环:
channel-bridge broadcast --from discord --to "tg:group1" --message "Vote now" --reactions true。如果用户在 Discord 上使用 👍 作出回应,系统会根据配置中的表情回应映射,将其转发为自定义表情符号到 Telegram。
图关系
- 集群关系:属于“distributed-comms”集群,可与其他通信技能实现互操作。
- 服务链接:与“signal”交互以发送消息,与“telegram”交互以执行机器人操作,并与“discord”交互以处理 webhook 事件。
- 标签关联:关联到标签 ["signal", "telegram", "discord", "messaging", "channel"],以便在图中链接到相关技能。