OpenFang マルチチャネルアダプター設定ガイド:Agentをどこへでも
Slug: openfang-channel-setup-guide
カテゴリー: usage-guides (使用ガイド)
ターゲットキーワード: OpenFang チャネル設定, OpenFang アダプター, OpenFang WhatsApp Telegram
検索意図: 情報収集(Agentを各プラットフォームに統合したいユーザー向け)
目標文字数: 約1800文字
言語: ja
チャネルアダプターとは?
チャネルアダプター(Channel Adapter)は、OpenFangと外部プラットフォームを繋ぐ架け橋です。各アダプターは、外部プラットフォームからのメッセージをOpenFangが理解できる統一フォーマットに変換し、Agentの応答を各プラットフォームのネイティブフォーマットに戻す役割を担います。
OpenFangの設計哲学は「Agentロジックを一度書けば、40以上のプラットフォームで動作する」というものです。プラットフォームごとにAgentを書き直す必要はありません。対応するチャネルアダプターを設定するだけです。
現在、OpenFangはインスタントメッセンジャー、ソーシャルメディア、コラボレーションツール、メール、カスタムAPIなど、40種類以上のチャネルアダプターをサポートしています。
チャネルアダプターの核心概念
すべてのチャネルアダプターは、以下の設計原則を共有しています:
- 統一メッセージフォーマット:どのチャネルからのメッセージであっても、標準のOpenFang Messageフォーマットに変換されます。
- 独立したサンドボックス:各チャネルアダプターは独立したサンドボックスで実行されるため、一つのチャネルの障害が他に影響を与えることはありません。
- ホットリロード:チャネル設定の追加や変更時に、Agentを再起動する必要はありません。
- レート制限:プラットフォーム側のAPI制限に抵触しないよう、レート制限機能が組み込まれています。
主要なチャネルアダプターの設定
CLI アダプター
CLIは最も基本的なアダプターで、開発やデバッグ、ローカルでの使用に適しています:
[channels.cli]enabled = truehistory_size = 1000 # 会話履歴の保持件数prompt_style = "rich" # plain / rich / minimalCLIアダプターは設定不要ですぐに使用可能です。複数行入力、コマンド補完、構文ハイライトをサポートしています。
WhatsApp アダプター
WhatsAppは世界で最も広く利用されているメッセンジャーの一つです。WhatsApp Business APIを通じて、あなたのAgentはユーザーとWhatsApp上で直接やり取りできます:
[channels.whatsapp]enabled = trueapi_version = "v18.0"phone_number_id = "${WA_PHONE_NUMBER_ID}"access_token = "${WA_ACCESS_TOKEN}"verify_token = "${WA_VERIFY_TOKEN}"[channels.whatsapp.features]media_support = true # 画像/ファイルの送信をサポートreply_buttons = true # インタラクティブボタンをサポートmax_message_length = 4096typing_indicator = true # 「入力中...」を表示設定手順:
- Meta for Developers でWhatsAppアプリを作成
- Phone Number IDとAccess Tokenを取得
- Webhook URLを設定(OpenFangサーバーアドレス +
/webhook/whatsapp) - OpenFangの設定ファイルに上記情報を入力
Telegram アダプター
Telegramは技術コミュニティで最も人気のあるプラットフォームの一つで、設定が簡単でAPIも使いやすいのが特徴です:
[channels.telegram]enabled = truebot_token = "${TELEGRAM_BOT_TOKEN}"allowed_users = [] # 空の場合は全ユーザーがアクセス可能admin_users = ["@your_username"][channels.telegram.features]inline_queries = true # インラインクエリをサポートmarkdown_support = truefile_upload = truemax_file_size_mb = 50設定手順:
- Telegramで @BotFather にメッセージを送り、Botを作成
- Bot Tokenを取得
- 設定ファイルにTokenを入力
Discord アダプター
Discordアダプターは、サーバー(Guild)とダイレクトメッセージ(DM)の両方のモードをサポートしています:
[channels.discord]enabled = truebot_token = "${DISCORD_BOT_TOKEN}"application_id = "${DISCORD_APP_ID}"[channels.discord.guilds]server_ids = ["1234567890"] # 許可するサーバーID[channels.discord.features]slash_commands = true # スラッシュコマンドをサポートthread_support = true # スレッドをサポートembed_messages = true # リッチテキスト埋め込みメッセージSlack アダプター
企業でのチームコラボレーションに適しています:
[channels.slack]enabled = truebot_token = "${SLACK_BOT_TOKEN}"signing_secret = "${SLACK_SIGNING_SECRET}"app_token = "${SLACK_APP_TOKEN}"[channels.slack.features]socket_mode = true # Socket Modeを使用(推奨、公開URL不要)thread_replies = truereaction_feedback = trueSlackではSocket Modeの使用を推奨します。公開Webhook URLの設定が不要なため、イントラネット環境でのデプロイに適しています。
Web Chat アダプター
あなたのWebサイトにOpenFangのチャットウィンドウを埋め込みます:
[channels.webchat]enabled = trueport = 3000cors_origins = ["https://your-site.com"][channels.webchat.ui]theme = "auto" # light / dark / autologo_url = "/assets/agent-logo.png"welcome_message = "こんにちは!OpenFang Agentです。何かお手伝いしましょうか?"placeholder = "質問を入力してください..."設定完了後、Webページに以下を追加してください:
<script src="https://your-server:3000/widget.js"></script><script>OpenFangWidget.init({ position: 'bottom-right' })</script>マルチチャネルの同時実行
OpenFangのアーキテクチャは、マルチチャネルの並行処理をネイティブでサポートしています。Agentのコアは統一された会話状態を維持し、すべてのチャネルでコンテキストを共有します:
# 複数のチャネルを同時に有効化[channels]cli.enabled = truewhatsapp.enabled = truetelegram.enabled = truediscord.enabled = truewebchat.enabled = true[channels.routing]strategy = "context_aware" # round_robin / context_aware / prioritypreserve_context = true # ユーザーのチャネル横断的なコンテキスト維持context_aware ルーティング戦略を使用すると、ユーザーがWhatsAppで会話を開始し、その後Telegramに切り替えても、Agentは以前のコンテキストを自動的に読み込みます。
チャネルのセキュリティ設定
マルチチャネル化は攻撃対象領域の拡大を意味します。OpenFangはきめ細かなチャネルセキュリティ制御を提供します:
[channels.security]per_user_rate_limit = 30 # ユーザーあたり毎分最大30メッセージper_channel_rate_limit = 100 # チャネルあたり毎分最大100メッセージrequire_auth = ["discord", "slack"]public_channels = ["webchat"]authenticated_channels = ["whatsapp", "telegram", "discord", "slack"][channels.security.content_filter]block_urls = falseblock_attachments = falsemax_prompt_length = 4000重要なセキュリティアドバイス:
- 公開アクセス可能なチャネル(Web Chat)には厳格なレート制限を適用する
- 本番環境では、CLI以外のチャネルにはユーザー認証を必須とする
- チャネルのアクセスログを定期的に監査する
チャネルの状態監視
# すべてのチャネルの状態を確認openfang channels list# 出力例:# Channel Status Messages/24h Errors Latency# cli ✅ active 0 0 -# telegram ✅ active 156 2 120ms# whatsapp ✅ active 89 0 250ms# discord ⚠️ degraded 43 5 500ms# webchat ✅ active 12 0 45ms# 指定したチャネルを再起動openfang channels restart discord# チャネルの詳細ログを確認openfang channels logs telegram --level debugよくある質問
新しいチャネルを追加するたびにAgentを再起動する必要がありますか?
``bash``
openfang channels reload
異なるチャネル間での会話履歴は共有されますか?
preserve_context = false を設定してください。WhatsAppアダプターにはWhatsApp Businessアカウントが必要ですか?
カスタムチャネルアダプターを追加するにはどうすればよいですか?
ChannelAdapter トレイトを実装することで、カスタムアダプターを作成できます:``rust
use openfang::channels::{ChannelAdapter, Message};
struct MyCustomChannel;``
impl ChannelAdapter for MyCustomChannel {
async fn receive(&self) -> Vec<Message> { /* ... */ }
async fn send(&self, msg: Message) -> Result<()> { /* ... */ }
}
次のステップ
- OpenFang 自動化ワークフロー構築ガイド:マルチチャネルAgentを自動化プロセスに組み込む
- OpenFang セキュリティベストプラクティス:マルチチャネルAgentのデプロイを保護する