- iOS Node (Gateway के जरिए पेयर किया गया):
node.invokeके जरिए फ़ोटो (jpg) या छोटी वीडियो क्लिप (mp4, वैकल्पिक ऑडियो के साथ) कैप्चर करें। - Android Node (Gateway के जरिए पेयर किया गया):
node.invokeके जरिए फ़ोटो (jpg) या छोटी वीडियो क्लिप (mp4, वैकल्पिक ऑडियो के साथ) कैप्चर करें। - macOS ऐप (Gateway के जरिए Node):
node.invokeके जरिए फ़ोटो (jpg) या छोटी वीडियो क्लिप (mp4, वैकल्पिक ऑडियो के साथ) कैप्चर करें।
iOS Node
उपयोगकर्ता सेटिंग (डिफ़ॉल्ट रूप से चालू)
- iOS Settings टैब → Camera → Allow Camera (
camera.enabled)- डिफ़ॉल्ट: चालू (अनुपस्थित कुंजी को सक्षम माना जाता है)।
- बंद होने पर:
camera.*कमांडCAMERA_DISABLEDलौटाते हैं।
कमांड (Gateway node.invoke के जरिए)
-
camera.list- प्रतिक्रिया payload:
devices:{ id, name, position, deviceType }की array
- प्रतिक्रिया payload:
-
camera.snap- Params:
facing:front|back(डिफ़ॉल्ट:front)maxWidth: number (वैकल्पिक; iOS Node पर डिफ़ॉल्ट1600)quality:0..1(वैकल्पिक; डिफ़ॉल्ट0.9)format: वर्तमान मेंjpgdelayMs: number (वैकल्पिक; डिफ़ॉल्ट0)deviceId: string (वैकल्पिक;camera.listसे)
- प्रतिक्रिया payload:
format: "jpg"base64: "<...>"width,height
- Payload guard: base64 payload को 5 MB से कम रखने के लिए फ़ोटो को फिर से compress किया जाता है।
- Params:
-
camera.clip- Params:
facing:front|back(डिफ़ॉल्ट:front)durationMs: number (डिफ़ॉल्ट3000, अधिकतम60000तक सीमित)includeAudio: boolean (डिफ़ॉल्टtrue)format: वर्तमान मेंmp4deviceId: string (वैकल्पिक;camera.listसे)
- प्रतिक्रिया payload:
format: "mp4"base64: "<...>"durationMshasAudio
- Params:
Foreground आवश्यकता
canvas.* की तरह, iOS Node केवल foreground में camera.* कमांड की अनुमति देता है। Background invocations NODE_BACKGROUND_UNAVAILABLE लौटाते हैं।
CLI helper
मीडिया फ़ाइलें पाने का सबसे आसान तरीका CLI helper है, जो decoded media को temp file में लिखता है और saved path print करता है। उदाहरण:nodes camera snapagent को दोनों views देने के लिए डिफ़ॉल्ट रूप से दोनों facings का उपयोग करता है।- Output files अस्थायी होती हैं (OS temp directory में), जब तक आप अपना wrapper नहीं बनाते।
Android Node
Android उपयोगकर्ता सेटिंग (डिफ़ॉल्ट रूप से चालू)
- Android Settings sheet → Camera → Allow Camera (
camera.enabled)- डिफ़ॉल्ट: चालू (अनुपस्थित कुंजी को सक्षम माना जाता है)।
- बंद होने पर:
camera.*कमांडCAMERA_DISABLEDलौटाते हैं।
अनुमतियां
- Android को runtime permissions चाहिए:
camera.snapऔरcamera.clipदोनों के लिएCAMERA।includeAudio=trueहोने परcamera.clipके लिएRECORD_AUDIO।
camera.* requests
*_PERMISSION_REQUIRED error के साथ fail होती हैं।
Android foreground आवश्यकता
canvas.* की तरह, Android Node केवल foreground में camera.* कमांड की अनुमति देता है। Background invocations NODE_BACKGROUND_UNAVAILABLE लौटाते हैं।
Android कमांड (Gateway node.invoke के जरिए)
camera.list- प्रतिक्रिया payload:
devices:{ id, name, position, deviceType }की array
- प्रतिक्रिया payload:
Payload guard
base64 payload को 5 MB से कम रखने के लिए फ़ोटो को फिर से compress किया जाता है।macOS ऐप
उपयोगकर्ता सेटिंग (डिफ़ॉल्ट रूप से बंद)
macOS companion ऐप एक checkbox दिखाता है:- Settings → General → Allow Camera (
openclaw.cameraEnabled)- डिफ़ॉल्ट: बंद
- बंद होने पर: camera requests “Camera disabled by user” लौटाती हैं।
CLI helper (Node invoke)
macOS Node पर camera commands invoke करने के लिए मुख्यopenclaw CLI का उपयोग करें।
उदाहरण:
openclaw nodes camera snapoverride न होने पर डिफ़ॉल्ट रूप सेmaxWidth=1600का उपयोग करता है।- macOS पर,
camera.snapcapture करने से पहले warm-up/exposure settle के बादdelayMs(डिफ़ॉल्ट 2000ms) प्रतीक्षा करता है। - base64 को 5 MB से कम रखने के लिए photo payloads को फिर से compress किया जाता है।
सुरक्षा + व्यावहारिक सीमाएं
- Camera और microphone access सामान्य OS permission prompts trigger करते हैं (और Info.plist में usage strings की आवश्यकता होती है)।
- Video clips को oversized Node payloads (base64 overhead + message limits) से बचने के लिए सीमित किया जाता है (वर्तमान में
<= 60s)।
macOS screen video (OS-level)
camera नहीं, बल्कि screen video के लिए macOS companion का उपयोग करें:- macOS Screen Recording permission (TCC) आवश्यक है।