Configuration
تحليل موقع القناة
يطبّع OpenClaw المواقع المشتركة من قنوات الدردشة إلى:
- نص إحداثيات موجز يُلحق بنص الرسالة الواردة، و
- حقول منظّمة في حمولة سياق الرد التلقائي. تُعرض التسميات والعناوين والتعليقات التوضيحية/التعليقات التي توفرها القناة في الموجّه عبر كتلة JSON المشتركة للبيانات الوصفية غير الموثوق بها، وليس مضمنةً في نص المستخدم.
المدعوم حاليًا:
- LINE (رسائل الموقع التي تتضمن عنوانًا/اسمًا)
- Matrix (
m.locationمعgeo_uri) - Telegram (دبابيس المواقع + الأماكن + المواقع المباشرة)
- WhatsApp (
locationMessage+liveLocationMessage)
تنسيق النص
تُعرض المواقع في أسطر سهلة القراءة من دون أقواس. تستخدم الإحداثيات ست منازل عشرية؛ وتُقرّب الدقة إلى أمتار صحيحة:
- دبوس:
📍 48.858844, 2.294351 ±12m
- مكان مسمّى (في السطر نفسه؛ لا يُدرج الاسم/العنوان إلا في كتلة البيانات الوصفية):
📍 48.858844, 2.294351 ±12m
- مشاركة مباشرة:
🛰 Live location: 48.858844, 2.294351 ±12m
إذا تضمنت القناة تسمية أو عنوانًا أو تعليقًا توضيحيًا/تعليقًا، فسيُحتفظ به في حمولة السياق وسيظهر في الموجّه بصفته JSON غير موثوق به داخل سياج (تُحذف الحقول عند غيابها):
الموقع (بيانات وصفية غير موثوق بها):```json{ "latitude": 48.858844, "longitude": 2.294351, "accuracy_m": 12, "source": "place", "name": "برج إيفل", "address": "شان دو مارس، باريس", "caption": "لنلتقِ هنا"}```حقول السياق
عند وجود موقع، تُضاف هذه الحقول إلى ctx:
LocationLat(رقم)LocationLon(رقم)LocationAccuracy(رقم، بالأمتار؛ اختياري)LocationName(سلسلة نصية؛ اختياري)LocationAddress(سلسلة نصية؛ اختياري)LocationSource(pin | place | live)LocationIsLive(قيمة منطقية)LocationCaption(سلسلة نصية؛ اختياري)
عندما لا تعيّن القناة مصدرًا صريحًا، يستنتجه OpenClaw: تصبح المشاركات المباشرة live، وتصبح المواقع التي لها اسم أو عنوان place، وكل ما عدا ذلك يكون pin.
يتعامل عارض الموجّه مع LocationName وLocationAddress وLocationCaption بوصفها بيانات وصفية غير موثوق بها، ويسلسلها عبر مسار JSON المحدود نفسه المستخدم لسياقات القنوات الأخرى.
الحمولات الصادرة
تستخدم أداة الرسائل وSDK الخاص بالـ Plugin بنية NormalizedLocation نفسها للمواقع الصادرة القابلة للنقل. تمثل الحمولة التي لا تحتوي إلا على الإحداثيات دبوسًا. وقد تربط القنوات التي تدعم الأماكن أصليًا name مع address ببطاقة مكان.
يوفّر Telegram هذا حاليًا عبر message(action="send"). صُمم تنفيذه الأول عمدًا ليكون مستقلًا: لا يمكن مزج حمولات الموقع مع النصوص أو الوسائط، وتفشل أزواج بيانات المكان غير المكتملة بدلًا من إسقاط الاسم أو العنوان بصمت. ولا تعلن القنوات غير المدعومة عن معلَمة الموقع.
ملاحظات القنوات
- LINE: يُربط
title/addressفي رسالة الموقع بـLocationName/LocationAddress؛ ولا توجد مواقع مباشرة. - Matrix: يُحلّل
geo_uriبوصفه موقع دبوس؛ وتُربط معلَمةu(عدم اليقين) بـLocationAccuracy، ويملأ نص الحدثLocationCaption، ويُتجاهل الارتفاع، وتكونLocationIsLiveدائمًا false. - Telegram: تُربط الأماكن بـ
LocationName/LocationAddress؛ وتُكتشف المواقع المباشرة عبرlive_period. - WhatsApp: يملأ
locationMessage.commentوliveLocationMessage.captionالحقلLocationCaption.