はじめに
OpenClaw の最も強力な特徴の一つは、複数のチャットプラットフォームに同時に接続できることです。同一の AI アシスタントを WhatsApp、Telegram、Discord、Slack、Matrix などのプラットフォームに同時に展開し、各チャンネルに異なるモデル、ペルソナ、動作方式を設定できます。
本チュートリアルでは、マルチチャンネル設定の方法とベストプラクティスを包括的にご紹介します。
マルチチャンネルアーキテクチャの概要
OpenClaw のマルチチャンネルアーキテクチャは以下の通りです:
┌─────────────┐
│ OpenClaw │
│ Gateway │
│ :18789 │
└──────┬──────┘
│
┌────────────────┼────────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ WhatsApp │ │ Telegram │ │ Discord │
│ Channel │ │ Channel │ │ Channel │
└───────────┘ └───────────┘ └───────────┘
各チャンネルは独立して動作し、同一の Gateway サービスを共有しますが、個別の設定を持つことができます。
基本的なマルチチャンネル設定
~/.config/openclaw/openclaw.json5 を編集し、channels に複数のチャンネルを追加します:
{
// グローバルモデル設定(各チャンネルのデフォルト値として使用)
model: {
provider: "claude",
name: "claude-sonnet-4-20250514",
apiKey: "sk-ant-xxxxx"
},
channels: {
// WhatsApp チャンネル
whatsapp: {
enabled: true,
phoneNumber: "+8613800138000",
responseMode: "all"
},
// Telegram チャンネル
telegram: {
enabled: true,
botToken: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
responseMode: "mention"
},
// Discord チャンネル
discord: {
enabled: true,
botToken: "MTIzNDU2Nzg5MDEy.xxxxx.xxxxx",
responseMode: "mention",
allowedServers: ["1234567890"]
},
// Matrix チャンネル
matrix: {
enabled: true,
homeserverUrl: "https://matrix.org",
userId: "@openclaw-bot:matrix.org",
accessToken: "syt_xxxxx",
responseMode: "mention"
},
// Slack チャンネル
slack: {
enabled: true,
botToken: "xoxb-xxxxx",
appToken: "xapp-xxxxx",
responseMode: "mention"
}
}
}
チャンネル独立設定
各チャンネルはグローバル設定をオーバーライドして、独立したモデル、ペルソナ、言語設定を実現できます。
チャンネルごとに異なるモデルを指定
{
// グローバルデフォルトモデル
model: {
provider: "claude",
name: "claude-sonnet-4-20250514",
apiKey: "sk-ant-xxxxx"
},
channels: {
// Telegram はデフォルトの Claude モデルを使用
telegram: {
enabled: true,
botToken: "your-telegram-token"
},
// Discord は Ollama ローカルモデルを使用(コスト削減)
discord: {
enabled: true,
botToken: "your-discord-token",
model: {
provider: "ollama",
name: "llama3.1:70b",
baseUrl: "http://localhost:11434"
}
},
// WhatsApp は OpenAI GPT-4o を使用
whatsapp: {
enabled: true,
phoneNumber: "+8613800138000",
model: {
provider: "openai",
name: "gpt-4o",
apiKey: "sk-xxxxx"
}
}
}
}
チャンネルごとに異なるペルソナを設定
{
channels: {
telegram: {
enabled: true,
botToken: "your-telegram-token",
persona: {
name: "小助手",
systemPrompt: "你是一个友好的中文AI助手,语气轻松活泼,适当使用表情符号。"
}
},
slack: {
enabled: true,
botToken: "your-slack-token",
appToken: "your-app-token",
persona: {
name: "TechBot",
systemPrompt: "You are a professional technical assistant. Respond in English. Be concise and precise. Focus on code and technical solutions."
}
},
discord: {
enabled: true,
botToken: "your-discord-token",
persona: {
name: "游戏顾問",
systemPrompt: "你是一个游戏领域的专家,熟悉各种游戏攻略和资讯。回答时可以用轻松幽默的语气。"
}
}
}
}
チャンネル設定項目一覧
各チャンネルで独立して設定できる項目は以下の通りです:
| 設定項目 | 説明 | 例 |
|---|---|---|
model |
AI モデル設定 | グローバルモデルのオーバーライド |
persona |
ペルソナとシステムプロンプト | チャンネルごとに異なるキャラクター |
responseMode |
応答モード | all / mention |
language |
デフォルト言語 | zh-CN / en / ja |
maxTokens |
最大応答 Token 数 | 2048 |
temperature |
モデル温度 | 0.7 |
skills |
有効なスキルリスト | ["weather", "reminder"] |
rateLimit |
レート制限 | { maxPerMinute: 10 } |
メッセージルーティング戦略
コンテキスト共有 vs コンテキスト分離
デフォルトでは、異なるチャンネル間の会話コンテキストは相互に分離されています。設定を通じてコンテキスト共有を有効にできます:
{
context: {
// コンテキスト分離戦略
// "channel":チャンネルごとに分離(デフォルト)
// "user":ユーザーごとに分離(同一ユーザーがチャンネルをまたいでコンテキストを共有)
// "global":グローバル共有
isolation: "channel",
// コンテキストウィンドウサイズ
maxMessages: 50,
// コンテキスト有効期限(秒)
ttl: 3600
}
}
ユーザーごとの分離シナリオ
isolation: "user" を設定すると、同一ユーザーが異なるチャンネルでの会話を継続できます。例えば、Telegram で議論していたトピックを、Discord に切り替えた後も続けられます。
ユーザーは以下の方法でアイデンティティを関連付けます:
{
context: {
isolation: "user",
// ユーザーアイデンティティマッピング(オプション、クロスプラットフォームで同一ユーザーを識別)
userMapping: {
"telegram:12345678": "user-alice",
"discord:98765432": "user-alice",
"whatsapp:+8613800138000": "user-alice"
}
}
}
チャンネル固有のスキル設定
チャンネルごとに異なるスキルを有効にできます:
{
channels: {
telegram: {
enabled: true,
botToken: "your-token",
// これらのスキルのみ有効化
skills: ["weather", "translate", "reminder"],
},
slack: {
enabled: true,
botToken: "your-token",
appToken: "your-app-token",
// ワークシーン向けのスキル
skills: ["jira", "github", "code-review"],
},
discord: {
enabled: true,
botToken: "your-token",
// エンターテインメントシーン向けのスキル
skills: ["trivia", "music-recommend", "game-wiki"],
}
}
}
ステータス監視
Dashboardによる監視
OpenClaw Dashboard を起動してすべてのチャンネルのリアルタイムステータスを確認します:
openclaw dashboard
Dashboard はブラウザで開かれ、以下を表示します:
- 各チャンネルの接続状態(オンライン/オフライン/エラー)
- メッセージ送受信統計
- モデル呼び出し回数と Token 消費量
- リアルタイムログストリーム
コマンドラインでのステータス確認
# すべてのチャンネルのステータスを確認
openclaw doctor
# リアルタイムログの表示(すべてのチャンネル)
openclaw logs
# 特定チャンネルのログを表示
openclaw logs --channel telegram
典型的な正常出力:
OpenClaw Doctor Report
======================
Gateway: ✓ Running on port 18789
Node.js: ✓ v22.12.0
Channels:
whatsapp: ✓ Connected (uptime: 3d 14h)
telegram: ✓ Connected (uptime: 3d 14h)
discord: ✓ Connected (uptime: 3d 14h)
matrix: ✓ Connected (uptime: 2d 8h)
slack: ✗ Error: Invalid bot token
Models:
claude: ✓ API reachable
ollama: ✓ Running locally
レート制限と負荷分散
複数のチャンネルが同時にアクティブな場合、API クォータの枯渇を防ぐためにレート制限を設定することをお勧めします:
{
// グローバルレート制限
rateLimit: {
// 1分あたりの最大リクエスト数(全チャンネル合計)
globalMaxPerMinute: 60,
// ユーザーあたり1分間の最大リクエスト数
userMaxPerMinute: 10
},
channels: {
telegram: {
enabled: true,
botToken: "your-token",
// チャンネルレベルのレート制限
rateLimit: {
maxPerMinute: 30
}
},
discord: {
enabled: true,
botToken: "your-token",
rateLimit: {
maxPerMinute: 20
}
}
}
}
チャンネルの有効化と無効化
enabled フィールドを使用して、設定を削除せずにチャンネルを素早く有効化または無効化できます:
{
channels: {
whatsapp: {
enabled: true, // 稼働中
// ...
},
telegram: {
enabled: false, // 無効化済み、設定は保持
// ...
}
}
}
設定を変更した後、OpenClaw を再起動して反映させます:
openclaw restart
実践:チームのマルチチャンネルデプロイ方案
以下は、チームが実際に使用しているマルチチャンネル設定の方案です:
{
model: {
provider: "claude",
name: "claude-sonnet-4-20250514",
apiKey: "sk-ant-xxxxx"
},
channels: {
// チーム内部の Slack ワークチャンネル
slack: {
enabled: true,
botToken: "xoxb-xxxxx",
appToken: "xapp-xxxxx",
responseMode: "mention",
persona: {
name: "チームアシスタント",
systemPrompt: "你是团队的技术助手,帮助回答技术问题、review代码、查找文档。"
},
skills: ["github", "jira", "code-review", "docs-search"],
language: "zh-CN"
},
// カスタマーサポート Telegram チャンネル
telegram: {
enabled: true,
botToken: "your-token",
responseMode: "all",
persona: {
name: "カスタマーサポート",
systemPrompt: "你是产品客服助手,礼貌地回答用户关于产品的问题。遇到无法解决的问题,建议用户联系人工客服。"
},
skills: ["faq", "product-docs"],
model: {
provider: "openai",
name: "gpt-4o-mini",
apiKey: "sk-xxxxx"
}
},
// CEO のプライベート WhatsApp アシスタント
whatsapp: {
enabled: true,
phoneNumber: "+8613800138000",
responseMode: "all",
persona: {
name: "スマートバトラー",
systemPrompt: "你是CEO的私人智能助手,帮助处理日程、提醒、信息汇总等任务。"
},
skills: ["calendar", "reminder", "news-summary", "weather"]
}
}
}
よくある質問
あるチャンネルが切断されると他のチャンネルに影響しますか?
影響しません。各チャンネルは独立して動作しており、1つのチャンネルの異常が他のチャンネルに影響を与えることはありません。OpenClaw には自動再接続メカニズムも組み込まれています。
マルチチャンネルではより多くのメモリを消費しますか?
追加のチャンネルごとに約 20-50MB のメモリ使用量が増加します。5つのチャンネルを同時に稼働させた場合、合計メモリは通常 200-400MB の範囲です。
チャンネルの問題を素早く調査するには?
# 診断を実行
openclaw doctor
# 特定チャンネルのログを確認
openclaw logs --channel discord
# Gateway のステータスを確認
curl http://localhost:18789/health
まとめ
マルチチャンネル設定により、OpenClaw はあらゆるプラットフォームの AI ハブとなります。各チャンネルのモデル、ペルソナ、スキルを独立して設定できる機能により、さまざまなシナリオのニーズに柔軟に対応できます。ステータス監視とレート制限を組み合わせることで、本番環境でも安心してマルチチャンネルサービスをデプロイできます。