mcpField
C
channel-bridge

channel-bridge

github.com/alphaonedev生産性49 回インストール
リポジトリ

channel-bridge について

Signal、Telegram、Discord間でメッセージをルーティングするスキルです。形式変換、複数チャンネルへの配信、セッション送信、リアクション転送に対応し、失敗時の再試行も行います。

主な機能

  1. 01Signal・Telegram・Discord間のルーティング
  2. 02メッセージ形式の変換
  3. 03通常送信とセッション送信
  4. 04複数チャンネルへの一斉配信
  5. 05リアクションの転送とマッピング
  6. 06送信失敗時の再試行

活用シーン

  1. 01Telegramのアラートを別チャンネルへ転送
  2. 02複数メッセージサービスで告知を共有
  3. 03サービス間でリアクションを転送
  4. 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フラグを使用します。リアクションでは、プラットフォーム間の不一致に対応するため、サポートされていないタイプをスキップします。

使用例

  1. TelegramからSignalおよびDiscordにメッセージをルーティングする:アラートには次のコマンドを使用します。channel-bridge send --from tg --to "signal:alerts, discord:general" --message "System down" --format plain。メッセージをブロードキャストし、適切な形式に変換して、追跡用に送信IDを記録します。
  2. ブロードキャスト時のリアクションを処理する:フィードバックループには次のコマンドを使用します。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"]のタグに関連付けられ、グラフ内の関連スキルとつながります。

コメント