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همیشه نادرست است. - Telegram: مکانها به
LocationName/LocationAddressنگاشت میشوند؛ موقعیتهای زنده از طریقlive_periodشناسایی میشوند. - WhatsApp:
locationMessage.commentوliveLocationMessage.caption،LocationCaptionرا پر میکنند.