Парсинг геолокации в каналах

OpenClaw нормализует передаваемую из каналов геолокацию в:

  • читаемый текст, добавляемый к телу входящего сообщения, и
  • структурированные поля в payload контекста авто-ответа.

На данный момент поддерживаются:

  • Telegram (геометки + заведения + трансляция геолокации)
  • WhatsApp (locationMessage + liveLocationMessage)
  • Matrix (m.location с geo_uri)

Форматирование текста

Геолокация отображается в виде понятных строк без скобок:

  • Метка:
    • 📍 48.858844, 2.294351 ±12m
  • Именованное место:
    • 📍 Eiffel Tower — Champ de Mars, Paris (48.858844, 2.294351 ±12m)
  • Трансляция:
    • 🛰 Live location: 48.858844, 2.294351 ±12m

Если канал передаёт подпись/комментарий, он добавляется на следующей строке:

📍 48.858844, 2.294351 ±12m
Meet here

Поля контекста

При наличии геолокации в ctx добавляются следующие поля:

  • LocationLat (number)
  • LocationLon (number)
  • LocationAccuracy (number, метры; опционально)
  • LocationName (string; опционально)
  • LocationAddress (string; опционально)
  • LocationSource (pin | place | live)
  • LocationIsLive (boolean)

Особенности каналов

  • Telegram: заведения преобразуются в LocationName/LocationAddress; трансляция геолокации использует live_period.
  • WhatsApp: locationMessage.comment и liveLocationMessage.caption добавляются как строка подписи.
  • Matrix: geo_uri разбирается как геометка; высота игнорируется, LocationIsLive всегда false.