OpenFang 多渠道適配器配置指南:讓你的 Agent 無處不在
Slug: openfang-channel-setup-guide
分類: usage-guides (使用指南)
目標關鍵詞: OpenFang 渠道配置, OpenFang 適配器, OpenFang WhatsApp Telegram
搜尋意圖: 資訊型(用戶想將 Agent 接入不同平台)
目標字數: ~1800 字
語言: tw
什麼是渠道適配器?
渠道適配器(Channel Adapter)是 OpenFang 與外部平台之間的橋樑。每個適配器負責將外部平台的消息轉換為 OpenFang 可理解的統一格式,並將 Agent 的回應轉回平台的原生格式。
OpenFang 的設計哲學是"一次編寫 Agent 邏輯,在 40+ 個平台上運行"。你不需要為每個平台重寫 Agent——只需配置對應的渠道適配器即可。
目前 OpenFang 支援 40 餘種渠道適配器,覆蓋即時通訊、社群媒體、協作工具、郵件和自定義 API 等類別。
渠道適配器的核心概念
所有渠道適配器共享以下設計原則:
- 統一消息格式:無論從哪個渠道來的消息,都被轉換為標準的 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)和私訊兩種模式:
[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 適配器
在你的網站上嵌入一個 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 = "輸入你的問題..."配置完成後,在你的網頁中添加:
<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 trait 即可建立自定義適配器:``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 部署