Nodes and media
คำสั่งตำแหน่งที่ตั้ง
สรุปย่อ
location.getเป็นคำสั่งของ Node ซึ่งเรียกใช้ผ่านnode.invokeหรือopenclaw nodes location get- ปิดไว้โดยค่าเริ่มต้น
- บิลด์ Android จากภายนอกใช้ตัวเลือก: ปิด / ขณะใช้งาน / ตลอดเวลา ส่วนบิลด์ Play ยังคงมีเฉพาะ ปิด / ขณะใช้งาน
- ตำแหน่งที่แม่นยำเป็นตัวเลือกเปิด/ปิดแยกต่างหาก
เหตุใดจึงใช้ตัวเลือก (ไม่ใช่เพียงสวิตช์)
สิทธิ์เข้าถึงตำแหน่งของระบบปฏิบัติการมีหลายระดับ ตำแหน่งที่แม่นยำก็เป็นสิทธิ์จากระบบปฏิบัติการที่แยกต่างหากเช่นกัน (iOS 14+ ใช้ "Precise" ส่วน Android แยก "fine" กับ "coarse") ตัวเลือกภายในแอปกำหนดโหมดที่ร้องขอ แต่ระบบปฏิบัติการยังคงเป็นผู้ตัดสินใจว่าจะให้สิทธิ์จริงในระดับใด
โมเดลการตั้งค่า
สำหรับอุปกรณ์ Node แต่ละเครื่อง:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
พฤติกรรมของ UI:
- การเลือก
whileUsingจะร้องขอสิทธิ์การใช้งานขณะอยู่เบื้องหน้า - เมื่อเลือก
alwaysในบิลด์ Android จากภายนอก แอปจะร้องขอสิทธิ์ขณะอยู่เบื้องหน้าก่อน อธิบายการเข้าถึงในเบื้องหลัง แล้วเปิดการตั้งค่าแอปของ Android เพื่อขอสิทธิ์ Allow all the time แยกต่างหาก - บิลด์ Android Play จะไม่ประกาศสิทธิ์เข้าถึงตำแหน่งในเบื้องหลังหรือแสดง
always - หากระบบปฏิบัติการปฏิเสธระดับที่ร้องขอ แอปจะย้อนกลับไปใช้ระดับสูงสุดที่ได้รับอนุญาตและแสดงสถานะ
การจับคู่สิทธิ์ (node.permissions)
เป็นทางเลือก Node บน macOS จะรายงาน location ผ่านแมป permissions ใน node.list/node.describe ส่วน iOS/Android อาจไม่รายงานข้อมูลนี้
คำสั่ง: location.get
เรียกใช้ผ่าน node.invoke หรือตัวช่วย CLI:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000พารามิเตอร์:
{ "timeoutMs": 10000, "maxAgeMs": 15000, "desiredAccuracy": "coarse|balanced|precise"}แฟล็ก CLI จับคู่โดยตรงดังนี้: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy
เพย์โหลดการตอบกลับ:
{ "lat": 48.20849, "lon": 16.37208, "accuracyMeters": 12.5, "altitudeMeters": 182.0, "speedMps": 0.0, "headingDeg": 270.0, "timestamp": "2026-01-03T12:34:56.000Z", "isPrecise": true, "source": "gps|wifi|cell|unknown"}ข้อผิดพลาด (รหัสคงที่):
LOCATION_DISABLED: ตัวเลือกถูกตั้งเป็นปิดLOCATION_PERMISSION_REQUIRED: ไม่มีสิทธิ์สำหรับโหมดที่ร้องขอLOCATION_BACKGROUND_UNAVAILABLE: แอปอยู่ในเบื้องหลัง แต่ได้รับอนุญาตเฉพาะขณะใช้งานLOCATION_TIMEOUT: ไม่สามารถระบุตำแหน่งได้ภายในเวลาที่กำหนดLOCATION_UNAVAILABLE: ระบบล้มเหลวหรือไม่มีผู้ให้บริการตำแหน่ง
พฤติกรรมในเบื้องหลัง
- บิลด์ Android จากภายนอกจะยอมรับ
location.getในเบื้องหลังเฉพาะเมื่อผู้ใช้เลือกAlwaysและ Android อนุญาตตำแหน่งในเบื้องหลังแล้วเท่านั้น บริการ Node แบบทำงานต่อเนื่องที่มีอยู่จะเพิ่มประเภทบริการlocationและแสดงLocation: Alwaysขณะทำงาน - บิลด์ Android Play และโหมด
While Usingจะปฏิเสธlocation.getขณะอยู่ในเบื้องหลัง - แพลตฟอร์ม Node อื่นอาจมีพฤติกรรมแตกต่างกัน
การผสานรวมโมเดล/เครื่องมือ
- เครื่องมือของเอเจนต์: การดำเนินการ
location_getของเครื่องมือnodes(ต้องระบุ Node) - CLI:
openclaw nodes location get --node <id> - แนวทางสำหรับเอเจนต์: เรียกใช้เฉพาะเมื่อผู้ใช้เปิดใช้งานตำแหน่งและเข้าใจขอบเขตแล้ว
ข้อความ UX (แนะนำ)
- ปิด: "ปิดใช้งานการแชร์ตำแหน่งแล้ว"
- ขณะใช้งาน: "เฉพาะเมื่อเปิด OpenClaw อยู่เท่านั้น"
- ตลอดเวลา: "อนุญาตให้ตรวจสอบตำแหน่งตามคำขอขณะที่ OpenClaw อยู่ในเบื้องหลัง"
- แม่นยำ: "ใช้ตำแหน่ง GPS ที่แม่นยำ ปิดตัวเลือกนี้เพื่อแชร์ตำแหน่งโดยประมาณ"
เนื้อหาที่เกี่ยวข้อง
Was this useful?