التقاط الكاميرا (للوكيل)
يدعم OpenClaw التقاط الكاميرا في مسارات عمل الوكيل:- عقدة iOS (مقترنة عبر Gateway): التقاط صورة (
jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبرnode.invoke. - عقدة Android (مقترنة عبر Gateway): التقاط صورة (
jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبرnode.invoke. - تطبيق macOS (عقدة عبر Gateway): التقاط صورة (
jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبرnode.invoke.
عقدة iOS
إعداد المستخدم (مفعّل افتراضيًا)
- علامة تبويب الإعدادات في iOS → Camera → Allow Camera (
camera.enabled)- الافتراضي: مفعّل (تُعامل القيمة المفقودة على أنها مفعّلة).
- عند التعطيل: تعيد أوامر
camera.*القيمةCAMERA_DISABLED.
الأوامر (عبر Gateway node.invoke)
-
camera.list- حمولة الاستجابة:
devices: مصفوفة من{ id, name, position, deviceType }
- حمولة الاستجابة:
-
camera.snap- المعلمات:
facing: front|back(الافتراضي:front)maxWidth: رقم (اختياري؛ الافتراضي1600على عقدة iOS)quality: 0..1(اختياري؛ الافتراضي0.9)format: حاليًاjpgdelayMs: رقم (اختياري؛ الافتراضي0)deviceId: سلسلة نصية (اختياري؛ منcamera.list)
- حمولة الاستجابة:
format: "jpg"base64: "<...>"width,height
- حماية الحمولة: يُعاد ضغط الصور للحفاظ على حمولة
base64تحت 5 MB.
- المعلمات:
-
camera.clip- المعلمات:
facing: front|back(الافتراضي:front)durationMs: رقم (الافتراضي3000، ومقيّد بحد أقصى60000)includeAudio: قيمة منطقية (الافتراضيtrue)format: حاليًاmp4deviceId: سلسلة نصية (اختياري؛ منcamera.list)
- حمولة الاستجابة:
format: "mp4"base64: "<...>"durationMshasAudio
- المعلمات:
متطلب المقدمة
مثلcanvas.*، تسمح عقدة iOS بأوامر camera.* فقط في المقدمة. وتعطي الاستدعاءات في الخلفية NODE_BACKGROUND_UNAVAILABLE.
مساعد CLI (ملفات مؤقتة + MEDIA)
أسهل طريقة للحصول على المرفقات هي عبر مساعد CLI، الذي يكتب الوسائط المفكوكة إلى ملف مؤقت ويطبعMEDIA:<path>.
أمثلة:
- يستخدم
nodes camera snapالوضع الافتراضي لكلا الوجهتين لمنح الوكيل كلا المنظورين. - تكون ملفات الإخراج مؤقتة (في دليل temp الخاص بنظام التشغيل) ما لم تنشئ wrapper خاصًا بك.
عقدة Android
إعداد المستخدم في Android (مفعّل افتراضيًا)
- ورقة إعدادات Android → Camera → Allow Camera (
camera.enabled)- الافتراضي: مفعّل (تُعامل القيمة المفقودة على أنها مفعّلة).
- عند التعطيل: تعيد أوامر
camera.*القيمةCAMERA_DISABLED.
الأذونات
- يتطلب Android أذونات وقت التشغيل:
CAMERAلكل منcamera.snapوcamera.clip.RECORD_AUDIOللأمرcamera.clipعندما تكونincludeAudio=true.
camera.* بخطأ
*_PERMISSION_REQUIRED.
متطلب المقدمة في Android
مثلcanvas.*، تسمح عقدة Android بأوامر camera.* فقط في المقدمة. وتعطي الاستدعاءات في الخلفية NODE_BACKGROUND_UNAVAILABLE.
أوامر Android (عبر Gateway node.invoke)
camera.list- حمولة الاستجابة:
devices: مصفوفة من{ id, name, position, deviceType }
- حمولة الاستجابة:
حماية الحمولة
يُعاد ضغط الصور للحفاظ على حمولةbase64 تحت 5 MB.
تطبيق macOS
إعداد المستخدم (معطّل افتراضيًا)
يعرض التطبيق المرافق على macOS مربع اختيار:- Settings → General → Allow Camera (
openclaw.cameraEnabled)- الافتراضي: معطّل
- عند التعطيل: تعيد طلبات الكاميرا “Camera disabled by user”.
مساعد CLI (node invoke)
استخدم CLI الرئيسي لـopenclaw لاستدعاء أوامر الكاميرا على عقدة macOS.
أمثلة:
- يستخدم
openclaw nodes camera snapالقيمة الافتراضيةmaxWidth=1600ما لم يتم تجاوزها. - على macOS، ينتظر
camera.snapمدةdelayMs(الافتراضي 2000ms) بعد الاستعداد/استقرار التعريض قبل الالتقاط. - يُعاد ضغط حمولات الصور للحفاظ على
base64تحت 5 MB.
السلامة والحدود العملية
- يؤدي الوصول إلى الكاميرا والميكروفون إلى إظهار مطالبات أذونات نظام التشغيل المعتادة (ويتطلب سلاسل الاستخدام في
Info.plist). - تكون مقاطع الفيديو محدودة بحد أقصى (حاليًا
<= 60s) لتجنب حمولات العقدة الكبيرة جدًا (حملbase64الزائد + حدود الرسائل).
فيديو شاشة macOS (على مستوى نظام التشغيل)
بالنسبة إلى فيديو الشاشة (وليس الكاميرا)، استخدم التطبيق المرافق على macOS:- يتطلب إذن macOS Screen Recording (TCC).