channel-bridge について
Signal、Telegram、Discord間でメッセージをルーティングするスキルです。形式変換、複数チャンネルへの配信、セッション送信、リアクション転送に対応し、失敗時の再試行も行います。
主な機能
- 01Signal・Telegram・Discord間のルーティング
- 02メッセージ形式の変換
- 03通常送信とセッション送信
- 04複数チャンネルへの一斉配信
- 05リアクションの転送とマッピング
- 06送信失敗時の再試行
活用シーン
- 01Telegramのアラートを別チャンネルへ転送
- 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(永続的なセッションベースのルーティング)を区別します。 - ブロードキャスト:複数のチャネルに同時にメッセージを送信します。たとえば、
["signal:group1", "discord:channel2"]のような JSON 配列で送信先を指定します。 - リアクション処理:プラットフォーム間でリアクション(絵文字など)を伝播します。たとえば、事前に定義した設定のマッピングを使って、Discord のリアクションを Signal のリアクションに対応付けます。
- エラー耐性:失敗した送信に対する再試行ロジックを備えており、しきい値を設定できます。
使用パターン
環境変数($SIGNAL_API_KEY、$TELEGRAM_BOT_TOKEN など)による認証で必ず初期化してください。CLI の場合は入力を直接パイプし、API の場合は JSON ペイロードを使って HTTP リクエストを送信します。パターン 1:単一チャネルのルーティング—あるプラットフォームから別のプラットフォームへメッセージを送信します。パターン 2:ブロードキャスト—1 つのコマンドで複数の送信先を指定します。パターン 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 Body:
{"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 Body:
{"source": "discord", "reaction": "👍", "targets": ["signal"]}リアクションの伝播に使用します。事前に Webhook を設定しておく必要があります。
設定形式:プラットフォームの設定には YAML ファイルを使用します。例:
signal:
api_key: $SIGNAL_API_KEY
default_group: group1
telegram:
bot_token: $TELEGRAM_BOT_TOKEN
統合に関する注意事項
認証用の環境変数を設定して統合します。例:Signal にアクセスするには $SIGNAL_API_KEY をエクスポートします。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)
エラーの詳細(例:「ブロードキャストに失敗しました:シグナルがタイムアウトしました」)を記録し、詳細な出力には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」、Webhookイベントでは「discord」と連携します。
- タグとのつながり:["signal", "telegram", "discord", "messaging", "channel"]のタグに関連付けられ、グラフ内の関連スキルとつながります。