メディアとデバイス

画像とメディアサポート

WhatsApp チャネルは Baileys Web 経由で動作します。このドキュメントは、送信、ゲートウェイ、およびエージェント返信に関する現在のメディア処理ルールを記録しています。

目標

  • openclaw message send --media 経由でオプションのキャプション付きメディアを送信する。
  • Web インボックスからの自動返信がテキストと一緒にメディアを含めることを許可する。
  • タイプごとの制限を適切かつ予測可能に保つ。

CLI インターフェース

  • openclaw message send --media <path-or-url> [--message <caption>]
    • --media はオプション。メディアのみの送信の場合、キャプションは空でも可。
    • --dry-run は解決されたペイロードを表示; --json{ channel, to, messageId, mediaUrl, caption } を出力。

WhatsApp Web チャネルの動作

  • 入力: ローカルファイルパス または HTTP(S) URL。
  • フロー: Buffer に読み込み、メディア種別を検出し、正しいペイロードを構築:
    • 画像: JPEG にリサイズ&再圧縮(最大辺 2048px)、agents.defaults.mediaMaxMb(デフォルト 5 MB)を目標とし、6 MB に制限。
    • 音声/ボイス/動画: 最大 16 MB までパススルー;音声はボイスノートとして送信 (ptt: true)。
    • ドキュメント: その他すべて、最大 100 MB、利用可能な場合はファイル名を保持。
  • WhatsApp GIF スタイル再生: MP4 を gifPlayback: true (CLI: --gif-playback) で送信し、モバイルクライアントでインラインループさせる。
  • MIME 検出はマジックバイト、次にヘッダー、次にファイル拡張子を優先。
  • キャプションは --message または reply.text から取得;空のキャプションも許可。
  • ロギング: 非詳細モードでは ↩️/ を表示;詳細モードではサイズとソースパス/URLを含む。

自動返信パイプライン

  • getReplyFromConfig{ text?, mediaUrl?, mediaUrls? } を返す。
  • メディアが存在する場合、Web 送信者は openclaw message send と同じパイプラインを使用してローカルパスまたは URL を解決する。
  • 複数のメディアエントリが提供された場合、順次送信される。

コマンドへのインバウンドメディア (Pi)

  • インバウンド Web メッセージにメディアが含まれる場合、OpenClaw は一時ファイルにダウンロードし、テンプレート変数を公開:
    • {{MediaUrl}} インバウンドメディアの疑似 URL。
    • {{MediaPath}} コマンド実行前に書き込まれたローカル一時パス。
  • セッションごとの Docker サンドボックスが有効な場合、インバウンドメディアはサンドボックスのワークスペースにコピーされ、MediaPath/MediaUrlmedia/inbound/<filename> のような相対パスに書き換えられる。
  • メディア理解(tools.media.* または共有 tools.media.models 経由で設定されている場合)はテンプレート処理の前に実行され、Body[Image][Audio][Video] ブロックを挿入できる。
    • 音声は {{Transcript}} を設定し、スラッシュコマンドが機能するようにコマンド解析に文字起こしを使用する。
    • 動画と画像の説明は、コマンド解析用にキャプションテキストがあれば保持する。
  • デフォルトでは、最初に一致する画像/音声/動画添付ファイルのみが処理される;複数の添付ファイルを処理するには tools.media.<cap>.attachments を設定する。

制限とエラー

アウトバウンド送信上限 (WhatsApp web 送信)

  • 画像: 再圧縮後、約 6 MB 制限。
  • 音声/ボイス/動画: 16 MB 制限;ドキュメント: 100 MB 制限。
  • サイズ超過または読み取り不能なメディア → ログに明確なエラーが表示され、返信はスキップされる。

メディア理解の上限 (文字起こし/説明)

  • 画像デフォルト: 10 MB (tools.media.image.maxBytes)。
  • 音声デフォルト: 20 MB (tools.media.audio.maxBytes)。
  • 動画デフォルト: 50 MB (tools.media.video.maxBytes)。
  • サイズ超過メディアは理解処理をスキップするが、返信は元の本文で実行される。

テストに関する注意点

  • 画像/音声/ドキュメントのケースについて、送信 + 返信フローをカバーする。
  • 画像の再圧縮(サイズ制限)および音声のボイスノートフラグを検証する。
  • 複数メディア返信が順次送信として展開されることを確認する。

メディア理解音声とボイスノート