- Nút iOS (ghép đôi qua Gateway): chụp ảnh (
jpg) hoặc quay đoạn video ngắn (mp4, có âm thanh tùy chọn) quanode.invoke. - Nút Android (ghép đôi qua Gateway): chụp ảnh (
jpg) hoặc quay đoạn video ngắn (mp4, có âm thanh tùy chọn) quanode.invoke. - Ứng dụng macOS (nút qua Gateway): chụp ảnh (
jpg) hoặc quay đoạn video ngắn (mp4, có âm thanh tùy chọn) quanode.invoke.
Nút iOS
Cài đặt người dùng (bật theo mặc định)
- Thẻ Cài đặt iOS → Camera → Cho phép Camera (
camera.enabled)- Mặc định: bật (khóa bị thiếu được xem là đã bật).
- Khi tắt: các lệnh
camera.*trả vềCAMERA_DISABLED.
Lệnh (qua Gateway node.invoke)
-
camera.list- Tải trọng phản hồi:
devices: mảng{ id, name, position, deviceType }
- Tải trọng phản hồi:
-
camera.snap- Tham số:
facing:front|back(mặc định:front)maxWidth: số (tùy chọn; mặc định1600trên nút iOS)quality:0..1(tùy chọn; mặc định0.9)format: hiện làjpgdelayMs: số (tùy chọn; mặc định0)deviceId: chuỗi (tùy chọn; từcamera.list)
- Tải trọng phản hồi:
format: "jpg"base64: "<...>"width,height
- Bảo vệ tải trọng: ảnh được nén lại để giữ tải trọng base64 dưới 5 MB.
- Tham số:
-
camera.clip- Tham số:
facing:front|back(mặc định:front)durationMs: số (mặc định3000, bị giới hạn tối đa60000)includeAudio: boolean (mặc địnhtrue)format: hiện làmp4deviceId: chuỗi (tùy chọn; từcamera.list)
- Tải trọng phản hồi:
format: "mp4"base64: "<...>"durationMshasAudio
- Tham số:
Yêu cầu chạy ở tiền cảnh
Giống nhưcanvas.*, nút iOS chỉ cho phép các lệnh camera.* ở tiền cảnh. Lệnh gọi nền trả về NODE_BACKGROUND_UNAVAILABLE.
Trình trợ giúp CLI
Cách dễ nhất để lấy tệp media là dùng trình trợ giúp CLI, công cụ này ghi media đã giải mã vào tệp tạm và in đường dẫn đã lưu. Ví dụ:nodes camera snapmặc định dùng cả hai hướng camera để cung cấp cho agent cả hai góc nhìn.- Tệp đầu ra là tệp tạm thời (trong thư mục tạm của HĐH) trừ khi bạn tự xây dựng wrapper riêng.
Nút Android
Cài đặt người dùng Android (bật theo mặc định)
- Trang Cài đặt Android → Camera → Cho phép Camera (
camera.enabled)- Mặc định: bật (khóa bị thiếu được xem là đã bật).
- Khi tắt: các lệnh
camera.*trả vềCAMERA_DISABLED.
Quyền
- Android yêu cầu quyền khi chạy:
CAMERAcho cảcamera.snapvàcamera.clip.RECORD_AUDIOchocamera.clipkhiincludeAudio=true.
camera.* sẽ thất bại với lỗi
*_PERMISSION_REQUIRED.
Yêu cầu chạy ở tiền cảnh trên Android
Giống nhưcanvas.*, nút Android chỉ cho phép các lệnh camera.* ở tiền cảnh. Lệnh gọi nền trả về NODE_BACKGROUND_UNAVAILABLE.
Lệnh Android (qua Gateway node.invoke)
camera.list- Tải trọng phản hồi:
devices: mảng{ id, name, position, deviceType }
- Tải trọng phản hồi:
Bảo vệ tải trọng
Ảnh được nén lại để giữ tải trọng base64 dưới 5 MB.Ứng dụng macOS
Cài đặt người dùng (tắt theo mặc định)
Ứng dụng đồng hành macOS hiển thị một hộp kiểm:- Cài đặt → Chung → Cho phép Camera (
openclaw.cameraEnabled)- Mặc định: tắt
- Khi tắt: yêu cầu camera trả về “Camera disabled by user”.
Trình trợ giúp CLI (node invoke)
Dùng CLIopenclaw chính để gọi các lệnh camera trên nút macOS.
Ví dụ:
openclaw nodes camera snapmặc định làmaxWidth=1600trừ khi bị ghi đè.- Trên macOS,
camera.snapchờdelayMs(mặc định 2000ms) sau khi khởi động/lấy phơi sáng ổn định rồi mới chụp. - Tải trọng ảnh được nén lại để giữ base64 dưới 5 MB.
An toàn + giới hạn thực tế
- Quyền truy cập camera và microphone kích hoạt lời nhắc cấp quyền thông thường của HĐH (và yêu cầu chuỗi mô tả sử dụng trong Info.plist).
- Đoạn video bị giới hạn (hiện là
<= 60s) để tránh tải trọng nút quá lớn (chi phí base64 + giới hạn tin nhắn).
Video màn hình macOS (cấp HĐH)
Đối với video màn hình (không phải camera), hãy dùng ứng dụng đồng hành macOS:- Yêu cầu quyền Ghi màn hình của macOS (TCC).