Contents
OpenClaw のマルチチャネルアーキテクチャ概観
OpenClaw は Slack・Discord・WhatsApp など複数のメッセージングプラットフォームを 単一 API で操作できる基盤です。本節では、フレームワーク全体の構造と、統一メッセージフォーマットがもたらす効果について概観します。
OpenClaw は大きく プラグイン層 と SOUL メッセージ層 の二段階で構成されます。プラグイン層は各チャネルごとに API 呼び出しをラップし、設定ファイルだけでエンドポイントを生成します。一方 SOUL(Standardized Object for Unified Language) 層は JSON 互換の共通スキーマに変換したメッセージオブジェクトを扱うため、チャネル間でコードを書き換えることなく転送が可能です。
主なメリット
- SDK の個別実装が不要になるので開発工数が約30 %削減できる
- プラグインごとのエラーは統一ログに集約され、運用負荷が低減する
- メッセージフォーマットの統一により文字化けや添付ファイル破損を防止できる
前提条件と環境設定
この章では、OpenClaw を本番で稼働させるために最低限必要なソフトウェア・権限情報を整理します。事前に確認しておくことで、後続の手順で想定外のエラーが発生するリスクを低減できます。
必要なバージョンとシステム要件
OpenClaw の最新安定版は v2.4.1(2026‑03 リリース)です。過去のバージョンでは Discord の Intents 設定が非推奨になるなど、互換性に差異がありますので必ずこのバージョン以上を使用してください。
| 項目 | 推奨環境 |
|---|---|
| コンテナランタイム | Docker Engine 20.10 以降 |
| Node.js ランタイム | v18.x 系(プラグインは内部で Node を利用) |
| OS | Linux (Ubuntu 22.04, Amazon Linux 2 など) |
権限・API キー取得手順(共通)
以下の表は各チャネルが要求する最小権限です。最小特権の原則 に従い、実装で使用しないスコープは付与しません。
| プラットフォーム | 必要スコープ/権限 | 取得先 |
|---|---|---|
| Slack | chat:write, channels:read, app_mentions:read |
Slack App Dashboard |
| Discord | Send Messages, Manage Messages, Read Message History(Message Content Intent 必須) | Discord Developer Portal |
| WhatsApp Business API | Cloud API Token, Phone Number ID | Meta Business Suite |
手順概要
- 各開発者コンソールに管理者権限でログインし「新規アプリ/Bot」を作成。
- 必要スコープを選択して保存し、表示される Client ID / Secret(Slack)や Bot Token(Discord)、Cloud API Token(WhatsApp) を取得する。
- 取得したシークレットは平文でリポジトリに残さず、必ず暗号化された形で管理ツールへ保存する(後述の KMS 活用例を参照)。
Slack 連携手順
Slack は企業内コラボレーションの主流プラットフォームです。本節では OpenClaw の Slack プラグインを有効化し、動作確認までを順を追って説明します。
アプリ作成と OAuth スコープ設定
- Slack API の App Dashboard(https://api.slack.com/apps)にアクセス。
- 「Create New App」→「From scratch」を選択し、アプリ名と対象ワークスペースを入力。
- OAuth & Permissions タブで以下のスコープを追加する。
chat:write(メッセージ送信)channels:read(パブリックチャンネル取得)app_mentions:read(メンション検知)
Bot Token と Signing Secret の取得
- スコープ設定後に Install App to Workspace を実行し、表示された Bot User OAuth Access Token(例:
xoxb-…)をコピー。 - 同タブの Signing Secret も取得し、環境変数として保存する。
OpenClaw 側 Slack プラグイン設定例
|
1 2 3 4 5 6 7 8 |
plugins: slack: enabled: true bot_token: ${SLACK_BOT_TOKEN} signing_secret: ${SLACK_SIGNING_SECRET} default_channel: "C01ABCD2EFG" inbound_endpoint: "/webhook/slack" |
注:Docker Compose 等で環境変数を注入する際は、
docker-compose.ymlのenvironment:セクションに${SLACK_BOT_TOKEN}などを書き込みます。
動作確認
- OpenClaw コンテナを起動し、
/webhook/slackが 200 OK を返すことをcurl -v http://localhost:3000/webhook/slackで確認。 - Slack の対象チャンネルで
@your-bot helloと投稿すると、OpenClaw が「Hello!」と応答すれば接続成功です。
Discord 連携手順
Discord はリアルタイムコミュニケーションに強みがありますが、2025 年のアップデート以降 Message Content Intent が必須となります。本節では必要な設定とテスト方法を示します。
Bot 作成と Intents 有効化
- https://discord.com/developers/applications にアクセスし「New Application」を作成。
- 「Bot」タブで Add Bot をクリックし、Privileged Gateway Intents の Message Content と Guild Messages にチェックを入れる。
OAuth2 権限設定
- OAuth2 > URL Generator で
botスコープと以下の権限を選択し、生成された URL からサーバーへ Bot を招待する。 - Send Messages
- Manage Messages
- Read Message History
トークン取得と OpenClaw 設定
|
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "plugins": { "discord": { "enabled": true, "bot_token": "${DISCORD_BOT_TOKEN}", "intents": ["GUILDS", "GUILD_MESSAGES", "MESSAGE_CONTENT"], "default_guild_id": "123456789012345678", "inbound_endpoint": "/webhook/discord" } } } |
デプロイとテスト
- コンテナ再起動後、ログに
Discord plugin initializedが出力されることを確認。 - Discord の任意のテキストチャンネルで
!pingと入力し、Bot が「Pong!」と返答すれば接続完了です。
WhatsApp Business API 連携手順
WhatsApp は顧客対応チャネルとして広く採用されています。Meta の Cloud API が標準となっているため、本節では Cloud API 用の設定手順を中心に解説します。
Meta ビジネスアカウントと電話番号取得
- https://business.facebook.com にログインし、ビジネスマネージャーを作成。
- 「WhatsApp」タブから Phone Number を追加し、SMS または音声で検証コードを受信して認証完了する。
Cloud API エンドポイントと Webhook 登録
| 項目 | 設定値 |
|---|---|
| Callback URL | https://yourdomain.com/webhook/whatsapp |
| Verify Token | 任意文字列(OpenClaw 側で同一に設定) |
| Subscriptions | messages, message_template_status |
Meta の Developers コンソールで上記情報を入力し、GET リクエストで 200 OK が返ることを確認する。
OpenClaw WhatsApp プラグイン構成例
|
1 2 3 4 5 6 7 8 9 |
plugins: whatsapp: enabled: true token: ${WHATSAPP_CLOUD_TOKEN} phone_number_id: ${WHATSAPP_PHONE_ID} webhook_verify_token: ${WHATSAPP_VERIFY_TOKEN} inbound_endpoint: "/webhook/whatsapp" media_support: true |
初回メッセージのテスト
- コンテナ起動後、Webhook が正しく応答するか
curl -I https://yourdomain.com/webhook/whatsappで確認。 - Meta の Test Phone Number に対して「Hello」と送信し、OpenClaw が自動応答(例:
こんにちは!ご用件は?)すれば設定完了です。
統合設定・テストフロー
本節では 3 つのプラグインを同時に有効化するための統合設定ファイルと、基本的な動作検証手順を示します。
統合設定サンプル(YAML)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# openclaw-config.yaml version: "2.4" plugins: slack: enabled: true bot_token: "${SLACK_BOT_TOKEN}" signing_secret: "${SLACK_SIGNING_SECRET}" default_channel: "C01ABCD2EFG" inbound_endpoint: "/webhook/slack" discord: enabled: true bot_token: "${DISCORD_BOT_TOKEN}" intents: - GUILDS - GUILD_MESSAGES - MESSAGE_CONTENT default_guild_id: "123456789012345678" inbound_endpoint: "/webhook/discord" whatsapp: enabled: true token: "${WHATSAPP_CLOUD_TOKEN}" phone_number_id: "${WHATSAPP_PHONE_ID}" webhook_verify_token: "${WHATSAPP_VERIFY_TOKEN}" inbound_endpoint: "/webhook/whatsapp" media_support: true # SOUL メッセージフォーマット例(SOUL.md) |
|
1 2 3 4 5 6 7 8 9 10 11 |
# persona: SalesAssistant name: "営業アシスタントAI" tone: friendly, professional language: ja-JP max_response_length: 500 knowledge_base: - product_catalog.yaml - pricing_rules.json privacy: hide_personal_data: true |
ポイント:上記 YAML を一括でデプロイすれば、3 つのチャネルが同時に稼働し、SOUL.md に定義したペルソナが全体で共通の応答トーンを提供します。
テスト項目と期待結果
| チェック項目 | 操作例 | 期待結果 |
|---|---|---|
| Slack → OpenClaw 受信 | @bot test |
メッセージが内部キューに投入され、ログに message_received (slack) が出力 |
| Discord → 応答 | !status |
Bot がステータス情報をテキストで返信 |
| WhatsApp ← 送信 | テンプレートメッセージ送信 | 受信側が画像付きメッセージを正常に表示 |
| ログ出力確認 | docker logs openclaw |
各プラグインのイベントが統一フォーマットで記録される |
トラブルシューティングとベストプラクティス
よくある障害と対処法
| 症状 | 想定原因 | 解決策 |
|---|---|---|
| 401 認証エラー | 環境変数未設定、トークン期限切れ | 環境変数を再確認し、必要ならシークレット管理ツールでローテーション |
レートリミット超過(例:Slack の rate_limited) |
短時間に大量送信 | 指数的バックオフとキューイングを実装し、1 分間あたりの送信上限を守る |
| Discord でメッセージ取得失敗 | Message Content Intent が無効 | Developer Portal の Intents 設定を再度有効化 |
| WhatsApp メディア送信エラー | media_support: false または非対応 MIME |
media_support: true に変更し、Meta がサポートするフォーマット(JPEG, PDF 等)に変換 |
注意:障害発生時は必ず OpenClaw の
error.logと各プラットフォームの API レスポンスコードを併せて確認してください。
セキュリティ・コンプライアンス実装例(KMS 活用)
1. AWS KMS + Docker Secrets
|
1 2 3 4 5 6 |
# シークレット作成(CLI) aws kms create-key --description "OpenClaw secret key" aws secretsmanager create-secret \ --name openclaw/slack-bot-token \ --secret-string "$(aws kms encrypt --key-id alias/openclaw-key --plaintext fileb://<(echo -n $SLACK_BOT_TOKEN) --output text --query CiphertextBlob)" |
Docker Compose にシークレットをマウントする例:
|
1 2 3 4 5 6 7 8 9 |
services: openclaw: image: openclaw:2.4 secrets: - slack_bot_token secrets: slack_bot_token: external: true |
コンテナ起動時に aws secretsmanager get-secret-value を実行し、復号されたトークンを環境変数へ注入します。
2. GCP Secret Manager + Cloud Run
|
1 2 3 |
gcloud secrets create slack-bot-token --replication-policy automatic echo -n "$SLACK_BOT_TOKEN" | gcloud secrets versions add slack-bot-token --data-file=- |
Cloud Run のデプロイ時にシークレットをマウント:
|
1 2 3 4 |
gcloud run deploy openclaw \ --image=gcr.io/PROJECT/openclaw:2.4 \ --set-secrets=SLACK_BOT_TOKEN=slack-bot-token:latest |
3. ローテーションと監査
- 自動ローテーション:CI/CD パイプラインで 30 日ごとにシークレットを再生成し、古いバージョンは即座に無効化。
- アクセス監査:KMS の使用履歴(CloudTrail / Cloud Audit Logs)を週次でレビューし、不正取得の兆候がないか確認。
運用ベストプラクティス
- 最小権限 を徹底し、不要なスコープは付与しない。
- ログ保持期間 は日本の個人情報保護法に準拠し 90 日以内で自動削除する設定(
log_retention_days: 90)を有効化。 - GDPR / 個人情報保護法対応:PII が含まれるメッセージは送信前にマスク処理を行い、データ主体からの削除要求は API 経由で即時応答できるよう実装する。
- 月次レビュー:権限・トークン有効期限・KMS アクセスログの 3 点チェックリストを作成し、運用担当者が必ず確認する。
まとめ
OpenClaw はプラグインと SOUL メッセージという二層構造により、Slack・Discord・WhatsApp の複数チャネルを コード一本で統合 できるミドルウェアです。本稿で示した環境要件、権限取得手順、各プラットフォーム別設定例、および KMS を用いたシークレット管理の具体的な流れを踏むことで、セキュリティと運用性を両立しながら安全に本番導入が可能になります。
ぜひ本ガイドラインをベースに、貴社のユースケースに合わせたカスタマイズをご検討ください。