node.invoke 経由で、写真 (jpg) または短い動画クリップ (mp4、音声は任意) をキャプチャできます。
すべてのカメラアクセスは、プラットフォームごとのユーザー制御設定によって保護されています。
iOS ノード
iOS ユーザー設定
- iOS Settings タブ → Camera → Allow Camera (
camera.enabled)。- デフォルト: オン (キーがない場合は有効として扱われます)。
- オフの場合:
camera.*コマンドはCAMERA_DISABLEDを返します。
iOS コマンド (Gateway node.invoke 経由)
-
camera.list- レスポンスペイロード:
devices—{ id, name, position, deviceType }の配列。
- レスポンスペイロード:
-
camera.snap- パラメーター:
facing:front|back(デフォルト:front)maxWidth: 数値 (任意、デフォルト1600)quality:0..1(任意、デフォルト0.9、[0.05, 1.0]にクランプ)format: 現在はjpgdelayMs: 数値 (任意、デフォルト0、内部的に10000が上限)deviceId: 文字列 (任意、camera.listから取得)
- レスポンスペイロード:
format: "jpg"、base64、width、height。 - ペイロードガード: 写真は再圧縮され、base64 エンコード済みペイロードが 5MB 未満に保たれます。
- パラメーター:
-
camera.clip- パラメーター:
facing:front|back(デフォルト:front)durationMs: 数値 (デフォルト3000、[250, 60000]にクランプ)includeAudio: ブール値 (デフォルトtrue)format: 現在はmp4deviceId: 文字列 (任意、camera.listから取得)
- レスポンスペイロード:
format: "mp4"、base64、durationMs、hasAudio。
- パラメーター:
iOS のフォアグラウンド要件
canvas.* と同様に、iOS ノードは フォアグラウンド でのみ camera.* コマンドを許可します。バックグラウンド呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します。
CLI ヘルパー
メディアファイルを取得する最も簡単な方法は CLI ヘルパーを使うことです。これはデコード済みメディアを一時ファイルに書き込み、保存先パスを出力します。nodes camera snap はデフォルトで --facing both になり、エージェントに両方の視点を提供するために前面と背面の両方をキャプチャします。単一の明示的な向きとともに --device-id を渡してください (--device-id が設定されている場合、both は拒否されます)。出力ファイルは独自のラッパーを構築しない限り、一時ファイル (OS の一時ディレクトリ内) です。
Android ノード
Android ユーザー設定
- Android Settings シート → Camera → Allow Camera (
camera.enabled)。- 新規インストールではデフォルトでオフです。 この設定より前の既存インストールは オン に移行されるため、アップグレードによって以前は動作していたカメラアクセスが黙って失われることはありません。
- オフの場合:
camera.*コマンドはCAMERA_DISABLED: enable Camera in Settingsを返します。
権限
CAMERAはcamera.snapとcamera.clipの両方で必要です。権限がない、または拒否されている場合はCAMERA_PERMISSION_REQUIREDを返します。includeAudioがtrueの場合、camera.clipにはRECORD_AUDIOが必要です。権限がない、または拒否されている場合はMIC_PERMISSION_REQUIREDを返します。
Android のフォアグラウンド要件
canvas.* と同様に、Android ノードは フォアグラウンド でのみ camera.* コマンドを許可します。バックグラウンド呼び出しは NODE_BACKGROUND_UNAVAILABLE: command requires foreground を返します。
Android コマンド (Gateway node.invoke 経由)
-
camera.list- レスポンスペイロード:
devices—{ id, name, position, deviceType }の配列。
- レスポンスペイロード:
-
camera.snap- パラメーター:
facing(front|back、デフォルトfront)、quality(デフォルト0.95、[0.1, 1.0]にクランプ)、maxWidth(デフォルト1600)、deviceId(任意、不明な ID はINVALID_REQUESTで失敗)。 - レスポンスペイロード:
format: "jpg"、base64、width、height。 - ペイロードガード: base64 を 5MB 未満に保つため再圧縮されます (iOS と同じ上限)。
- パラメーター:
-
camera.clip- パラメーター:
facing(デフォルトfront)、durationMs(デフォルト3000、[200, 60000]にクランプ)、includeAudio(デフォルトtrue)、deviceId(任意)。 - レスポンスペイロード:
format: "mp4"、base64、durationMs、hasAudio。 - ペイロードガード: 生の MP4 は base64 エンコード前に 18MB が上限です。サイズ超過のクリップは
PAYLOAD_TOO_LARGEで失敗します (durationMsを短くして再試行してください)。
- パラメーター:
macOS アプリ
macOS ユーザー設定
macOS コンパニオンアプリにはチェックボックスがあります。- Settings → General → Allow Camera (
openclaw.cameraEnabled)。- デフォルト: オフ。
- オフの場合: カメラリクエストは
CAMERA_DISABLED: enable Camera in Settingsを返します。
CLI ヘルパー (node invoke)
メインのopenclaw CLI を使用して、macOS ノード上でカメラコマンドを呼び出します。
openclaw nodes camera snapは上書きされない限り、デフォルトでmaxWidth=1600です。camera.snapはウォームアップ/露出安定の後、キャプチャ前にdelayMs(デフォルト 2000ms、[0, 10000]にクランプ) 待機します。- 写真ペイロードは再圧縮され、base64 が 5MB 未満に保たれます。
安全性 + 実用上の制限
- カメラとマイクへのアクセスは通常の OS 権限プロンプトをトリガーします (また、
Info.plistに用途説明文字列が必要です)。 - 動画クリップは、ノードペイロードが過大になるのを避けるため 60 秒に制限されています (base64 のオーバーヘッドとメッセージ制限のため)。