OpenClaw รองรับ การถ่ายภาพจากกล้อง สำหรับเวิร์กโฟลว์ของเอเจนต์:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- iOS Node (จับคู่ผ่าน Gateway): ถ่าย ภาพถ่าย (
jpg) หรือ คลิปวิดีโอสั้น (mp4พร้อมเสียงหรือไม่ก็ได้) ผ่านnode.invoke - Android Node (จับคู่ผ่าน Gateway): ถ่าย ภาพถ่าย (
jpg) หรือ คลิปวิดีโอสั้น (mp4พร้อมเสียงหรือไม่ก็ได้) ผ่านnode.invoke - แอป macOS (Node ผ่าน Gateway): ถ่าย ภาพถ่าย (
jpg) หรือ คลิปวิดีโอสั้น (mp4พร้อมเสียงหรือไม่ก็ได้) ผ่านnode.invoke
iOS Node
การตั้งค่าของผู้ใช้ (เปิดโดยค่าเริ่มต้น)
- แท็บการตั้งค่า iOS → กล้อง → อนุญาตกล้อง (
camera.enabled)- ค่าเริ่มต้น: เปิด (หากไม่มีคีย์นี้ จะถือว่าเปิดใช้งาน)
- เมื่อปิด: คำสั่ง
camera.*จะส่งคืนCAMERA_DISABLED
คำสั่ง (ผ่าน Gateway node.invoke)
-
camera.list- เพย์โหลดการตอบกลับ:
devices: อาร์เรย์ของ{ id, name, position, deviceType }
- เพย์โหลดการตอบกลับ:
-
camera.snap- พารามิเตอร์:
facing:front|back(ค่าเริ่มต้น:front)maxWidth: ตัวเลข (ไม่บังคับ; ค่าเริ่มต้น1600บน iOS Node)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 Node อนุญาตคำสั่ง camera.* เฉพาะเมื่ออยู่ใน เบื้องหน้า เท่านั้น การเรียกใช้เบื้องหลังจะส่งคืน NODE_BACKGROUND_UNAVAILABLE
ตัวช่วย CLI (ไฟล์ชั่วคราว + MEDIA)
วิธีที่ง่ายที่สุดในการรับไฟล์แนบคือผ่านตัวช่วย CLI ซึ่งจะเขียนสื่อที่ถอดรหัสแล้วลงในไฟล์ชั่วคราวและพิมพ์MEDIA:<path>
ตัวอย่าง:
nodes camera snapใช้ทั้ง สอง ทิศทางกล้องเป็นค่าเริ่มต้น เพื่อให้เอเจนต์มีภาพจากทั้งสองมุมมอง- ไฟล์ผลลัพธ์เป็นไฟล์ชั่วคราว (ในไดเรกทอรีชั่วคราวของ OS) เว้นแต่คุณจะสร้าง wrapper ของคุณเอง
Android Node
การตั้งค่าของผู้ใช้ Android (เปิดโดยค่าเริ่มต้น)
- แผ่นการตั้งค่า Android → กล้อง → อนุญาตกล้อง (
camera.enabled)- ค่าเริ่มต้น: เปิด (หากไม่มีคีย์นี้ จะถือว่าเปิดใช้งาน)
- เมื่อปิด: คำสั่ง
camera.*จะส่งคืนCAMERA_DISABLED
สิทธิ์
- Android ต้องใช้สิทธิ์ขณะรันไทม์:
CAMERAสำหรับทั้งcamera.snapและcamera.clipRECORD_AUDIOสำหรับcamera.clipเมื่อincludeAudio=true
camera.* จะล้มเหลวพร้อมข้อผิดพลาด
*_PERMISSION_REQUIRED
ข้อกำหนดเรื่องการอยู่เบื้องหน้าบน Android
เช่นเดียวกับcanvas.* Android Node อนุญาตคำสั่ง camera.* เฉพาะเมื่ออยู่ใน เบื้องหน้า เท่านั้น การเรียกใช้เบื้องหลังจะส่งคืน NODE_BACKGROUND_UNAVAILABLE
คำสั่ง Android (ผ่าน Gateway node.invoke)
camera.list- เพย์โหลดการตอบกลับ:
devices: อาร์เรย์ของ{ id, name, position, deviceType }
- เพย์โหลดการตอบกลับ:
การป้องกันขนาดเพย์โหลด
ภาพถ่ายจะถูกบีบอัดใหม่เพื่อให้เพย์โหลด base64 มีขนาดต่ำกว่า 5 MBแอป macOS
การตั้งค่าของผู้ใช้ (ปิดโดยค่าเริ่มต้น)
แอปคู่ขนานบน macOS แสดงช่องทำเครื่องหมาย:- การตั้งค่า → ทั่วไป → อนุญาตกล้อง (
openclaw.cameraEnabled)- ค่าเริ่มต้น: ปิด
- เมื่อปิด: คำขอกล้องจะส่งคืน “กล้องถูกปิดใช้งานโดยผู้ใช้”
ตัวช่วย CLI (การเรียกใช้ Node)
ใช้ CLI หลักของopenclaw เพื่อเรียกใช้คำสั่งกล้องบน macOS Node
ตัวอย่าง:
openclaw nodes camera snapใช้ค่าเริ่มต้นเป็นmaxWidth=1600เว้นแต่จะถูกแทนที่- บน macOS,
camera.snapจะรอdelayMs(ค่าเริ่มต้น 2000ms) หลังจากการวอร์มอัป/การปรับแสงนิ่งแล้วก่อนถ่ายภาพ - เพย์โหลดภาพถ่ายจะถูกบีบอัดใหม่เพื่อให้ base64 มีขนาดต่ำกว่า 5 MB
ความปลอดภัย + ขีดจำกัดเชิงปฏิบัติ
- การเข้าถึงกล้องและไมโครโฟนจะเรียกพรอมป์สิทธิ์ตามปกติของ OS (และต้องมีสตริงการใช้งานใน Info.plist)
- คลิปวิดีโอถูกจำกัดความยาว (ปัจจุบัน
<= 60s) เพื่อหลีกเลี่ยงเพย์โหลด Node ที่มีขนาดใหญ่เกินไป (โอเวอร์เฮด base64 + ขีดจำกัดข้อความ)
วิดีโอหน้าจอ macOS (ระดับ OS)
สำหรับวิดีโอ หน้าจอ (ไม่ใช่กล้อง) ให้ใช้แอปคู่ขนานบน macOS:- ต้องใช้สิทธิ์ การบันทึกหน้าจอ ของ macOS (TCC)