クイックセットアップ
OpenClaw では、可能な場合は別の番号で WhatsApp を実行することをお勧めします。 (チャネルのメタデータとオンボーディング フローはそのセットアップ用に最適化されていますが、個人番号のセットアップもサポートされています。)
導入パターン
専用番号(推奨)
専用番号(推奨)
これは最もクリーンな動作モードです。
- OpenClaw 用に別の WhatsApp ID
- より明確な DM ホワイトリストとルーティング境界
- セルフチャットの混乱の可能性が低くなります
個人番号フォールバック
個人番号フォールバック
オンボーディングは個人番号モードをサポートし、セルフチャットに適したベースラインを書き込みます。
dmPolicy: "allowlist"allowFromには個人番号が含まれますselfChatMode: true
allowFrom がキーオフされます。WhatsApp Web のみのチャネル範囲
WhatsApp Web のみのチャネル範囲
メッセージング プラットフォーム チャネルは、現在の OpenClaw チャネル アーキテクチャでは WhatsApp Web ベース (
Baileys) です。組み込みのチャット チャネル レジストリには、個別の Twilio WhatsApp メッセージング チャネルはありません。ランタイムモデル
- ゲートウェイは WhatsApp ソケットと再接続ループを所有します。
- アウトバウンド送信には、ターゲット アカウントのアクティブな WhatsApp リスナーが必要です。
- ステータス チャットとブロードキャスト チャットは無視されます (
@status、@broadcast)。 - ダイレクト チャットは DM セッション ルールを使用します (
session.dmScope、デフォルトのmainはエージェントのメイン セッションへの DM を折りたたみます)。 - グループ セッションは分離されています (
agent:<agentId>:whatsapp:group:<jid>)。
アクセス制御とアクティベーション
- DMポリシー
- グループポリシー + ホワイトリスト
- Mentions + /activation
channels.whatsapp.dmPolicy は、直接チャット アクセスを制御します。pairing(デフォルト)allowlistopen("*"を含めるにはallowFromが必要です)disabled
allowFrom は、E.164 形式の数値 (内部で正規化されたもの) を受け入れます。マルチアカウントオーバーライド: channels.whatsapp.accounts.<id>.dmPolicy (および allowFrom) は、そのアカウントのチャネルレベルのデフォルトよりも優先されます。実行時の動作の詳細:- ペアリングはチャネルの許可ストアに保持され、構成された
allowFromとマージされます。 - ホワイトリストが設定されていない場合、リンクされた自己番号はデフォルトで許可されます
- 送信
fromMeDM は自動ペアリングされません
個人番号とセルフチャットの動作
リンクされた自己番号がallowFrom にも存在する場合、WhatsApp セルフチャットの保護機能が有効になります。
- セルフチャットターンの開封確認をスキップします
- 自分自身に ping を実行するメンション JID 自動トリガー動作を無視します
messages.responsePrefixが設定されていない場合、セルフチャットの返信はデフォルトで[{identity.name}]または[openclaw]になります。
メッセージの正規化とコンテキスト
受信エンベロープ + 返信コンテキスト
受信エンベロープ + 返信コンテキスト
受信 WhatsApp メッセージは、共有受信エンベロープでラップされます。引用された返信が存在する場合、コンテキストが次の形式で追加されます。アカウントごとの上書き:セルフチャットは、グローバルに有効になっている場合でも開封確認をスキップします。
配信、チャンキング、およびメディア
テキストのチャンク化
テキストのチャンク化
- デフォルトのチャンク制限:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"newlineモードは段落境界 (空白行) を優先し、その後長さ安全なチャンクに戻ります。
アウトバウンドメディアの動作
アウトバウンドメディアの動作
- 画像、ビデオ、オーディオ (PTT 音声メモ)、およびドキュメントのペイロードをサポート
- ボイスノートの互換性のために、
audio/oggはaudio/ogg; codecs=opusに書き換えられます - アニメーション GIF の再生は、ビデオ送信の
gifPlayback: true経由でサポートされます。 - マルチメディア応答ペイロードを送信するときに、キャプションが最初のメディア アイテムに適用されます。
- メディア ソースは HTTP(S)、
file://、またはローカル パスにすることができます。
メディア サイズの制限とフォールバック動作
メディア サイズの制限とフォールバック動作
- インバウンドメディア保存キャップ:
channels.whatsapp.mediaMaxMb(デフォルト50) - 送信メディア送信上限:
channels.whatsapp.mediaMaxMb(デフォルト50) - アカウントごとの上書きには
channels.whatsapp.accounts.<accountId>.mediaMaxMbを使用します - 画像は制限に合わせて自動的に最適化されます (サイズ変更/品質スイープ)。
- メディア送信失敗時、最初のアイテムのフォールバックは応答をサイレントにドロップする代わりにテキスト警告を送信します。
肯定応答
WhatsApp は、channels.whatsapp.ackReaction 経由の受信受信に対する即時確認応答をサポートしています。
- 受信が受け入れられた後すぐに送信されます (事前応答)
- 失敗はログに記録されますが、通常の応答配信はブロックされません
- グループモード
mentionsは言及によって引き起こされたターンに反応します。グループのアクティブ化alwaysは、このチェックのバイパスとして機能します - WhatsApp は
channels.whatsapp.ackReactionを使用します (従来のmessages.ackReactionはここでは使用されません)
マルチアカウントと認証情報
アカウントの選択とデフォルト
アカウントの選択とデフォルト
- アカウント ID は
channels.whatsapp.accountsから取得されます - デフォルトのアカウント選択:
default(存在する場合)、それ以外の場合は最初に設定されたアカウント ID (ソート済み) - アカウント ID は検索用に内部的に正規化されます
認証情報のパスと従来の互換性
認証情報のパスと従来の互換性
- 現在の認証パス:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - バックアップ ファイル:
creds.json.bak ~/.openclaw/credentials/の従来のデフォルト認証は引き続きデフォルト アカウント フローで認識/移行されます
ログアウト動作
ログアウト動作
openclaw channels logout --channel whatsapp [--account <id>] は、そのアカウントの WhatsApp 認証状態をクリアします。従来の認証ディレクトリでは、oauth.json は保持されますが、Baileys 認証ファイルは削除されます。ツール、アクション、構成の書き込み
- エージェント ツールのサポートには、WhatsApp 反応アクション (
react) が含まれます。 - アクションゲート:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- チャネル開始の設定書き込みはデフォルトで有効になっています (
channels.whatsapp.configWrites=falseで無効にします)。
トラブルシューティング
リンクされていません(QRが必要です)
リンクされていません(QRが必要です)
症状: チャネルステータスレポートがリンクされていません。修正:
Linked but disconnected / reconnect loop
Linked but disconnected / reconnect loop
症状: リンクされたアカウントで、切断または再接続が繰り返し試行されます。修正:必要に応じて、
channels login と再リンクします。送信時にアクティブなリスナーが存在しない
送信時にアクティブなリスナーが存在しない
ターゲット アカウントにアクティブなゲートウェイ リスナーが存在しない場合、アウトバウンド送信は失敗します。ゲートウェイが実行中であり、アカウントがリンクされていることを確認してください。
グループメッセージが予期せず無視されました
グループメッセージが予期せず無視されました
次の順序で確認してください。
groupPolicygroupAllowFrom/allowFromgroupsホワイトリスト エントリ- メンションゲート (
requireMention+ メンションパターン) openclaw.json(JSON5) の重複キー: 後のエントリは前のエントリをオーバーライドするため、スコープごとに 1 つのgroupPolicyを保持します。
Bun ランタイム警告
Bun ランタイム警告
WhatsApp ゲートウェイ ランタイムは Node を使用する必要があります。 Bun は、WhatsApp/Telegram ゲートウェイの安定した動作には互換性がないとしてフラグが立てられています。
構成参照ポインタ
主な参考文献: シグナルの高い WhatsApp フィールド:- アクセス:
dmPolicy、allowFrom、groupPolicy、groupAllowFrom、groups - 配送:
textChunkLimit、chunkMode、mediaMaxMb、sendReadReceipts、ackReaction - マルチアカウント:
accounts.<id>.enabled、accounts.<id>.authDir、アカウントレベルの上書き - 操作:
configWrites、debounceMs、web.enabled、web.heartbeatSeconds、web.reconnect.* - セッションの動作:
session.dmScope、historyLimit、dmHistoryLimit、dms.<id>.historyLimit