Pengambilan kamera (agen)
OpenClaw mendukung pengambilan kamera untuk alur kerja agen:- Node iOS (dipasangkan melalui Gateway): ambil foto (
jpg) atau klip video pendek (mp4, dengan audio opsional) melaluinode.invoke. - Node Android (dipasangkan melalui Gateway): ambil foto (
jpg) atau klip video pendek (mp4, dengan audio opsional) melaluinode.invoke. - App macOS (node melalui Gateway): ambil foto (
jpg) atau klip video pendek (mp4, dengan audio opsional) melaluinode.invoke.
Node iOS
Pengaturan pengguna (default aktif)
- Tab Settings iOS → Camera → Allow Camera (
camera.enabled)- Default: aktif (key yang tidak ada diperlakukan sebagai aktif).
- Saat nonaktif: command
camera.*mengembalikanCAMERA_DISABLED.
Command (melalui Gateway node.invoke)
-
camera.list- Payload respons:
devices: array dari{ id, name, position, deviceType }
- Payload respons:
-
camera.snap- Params:
facing:front|back(default:front)maxWidth: number (opsional; default1600pada node iOS)quality:0..1(opsional; default0.9)format: saat inijpgdelayMs: number (opsional; default0)deviceId: string (opsional; daricamera.list)
- Payload respons:
format: "jpg"base64: "<...>"width,height
- Guard payload: foto dikompresi ulang untuk menjaga payload base64 tetap di bawah 5 MB.
- Params:
-
camera.clip- Params:
facing:front|back(default:front)durationMs: number (default3000, dibatasi ke maksimum60000)includeAudio: boolean (defaulttrue)format: saat inimp4deviceId: string (opsional; daricamera.list)
- Payload respons:
format: "mp4"base64: "<...>"durationMshasAudio
- Params:
Persyaratan foreground
Seperticanvas.*, node iOS hanya mengizinkan command camera.* di foreground. Invocation latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE.
Helper CLI (file sementara + MEDIA)
Cara termudah untuk mendapatkan lampiran adalah melalui helper CLI, yang menulis media hasil decode ke file sementara dan mencetakMEDIA:<path>.
Contoh:
nodes camera snapsecara default menggunakan kedua arah untuk memberi agen kedua tampilan.- File output bersifat sementara (di direktori temp OS) kecuali Anda membuat wrapper sendiri.
Node Android
Pengaturan pengguna Android (default aktif)
- Lembar Android Settings → Camera → Allow Camera (
camera.enabled)- Default: aktif (key yang tidak ada diperlakukan sebagai aktif).
- Saat nonaktif: command
camera.*mengembalikanCAMERA_DISABLED.
Izin
- Android memerlukan izin runtime:
CAMERAuntukcamera.snapdancamera.clip.RECORD_AUDIOuntukcamera.clipketikaincludeAudio=true.
camera.* gagal dengan error
*_PERMISSION_REQUIRED.
Persyaratan foreground Android
Seperticanvas.*, node Android hanya mengizinkan command camera.* di foreground. Invocation latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE.
Command Android (melalui Gateway node.invoke)
camera.list- Payload respons:
devices: array dari{ id, name, position, deviceType }
- Payload respons:
Guard payload
Foto dikompresi ulang untuk menjaga payload base64 tetap di bawah 5 MB.App macOS
Pengaturan pengguna (default nonaktif)
App pendamping macOS menampilkan kotak centang:- Settings → General → Allow Camera (
openclaw.cameraEnabled)- Default: nonaktif
- Saat nonaktif: permintaan kamera mengembalikan “Kamera dinonaktifkan oleh pengguna”.
Helper CLI (node invoke)
Gunakan CLIopenclaw utama untuk memanggil command kamera pada node macOS.
Contoh:
openclaw nodes camera snapdefault kemaxWidth=1600kecuali dioverride.- Di macOS,
camera.snapmenunggudelayMs(default 2000ms) setelah warm-up/exposure settle sebelum mengambil gambar. - Payload foto dikompresi ulang agar base64 tetap di bawah 5 MB.
Keamanan + batas praktis
- Akses kamera dan mikrofon memicu prompt izin OS seperti biasa (dan memerlukan usage string di Info.plist).
- Klip video dibatasi (saat ini
<= 60s) untuk menghindari payload node yang terlalu besar (overhead base64 + batas pesan).
Video layar macOS (level OS)
Untuk video layar (bukan kamera), gunakan app pendamping macOS:- Memerlukan izin macOS Screen Recording (TCC).