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 محصور و نامطمئن ظاهر می‌شود (فیلدها در صورت نبودن حذف می‌شوند):

text
موقعیت مکانی (فراداده نامطمئن):```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 را پر می‌کنند.

مرتبط

Was this useful?
On this page

On this page