Configuration
Analizowanie lokalizacji kanału
OpenClaw normalizuje udostępnione lokalizacje z kanałów czatu do postaci:
- zwięzłego tekstu ze współrzędnymi dołączanego do treści wiadomości przychodzącej oraz
- ustrukturyzowanych pól w ładunku kontekstu automatycznej odpowiedzi. Etykiety, adresy i podpisy/komentarze dostarczone przez kanał są renderowane w prompcie przez wspólny blok JSON niezaufanych metadanych, a nie bezpośrednio w treści wiadomości użytkownika.
Obecnie obsługiwane:
- LINE (wiadomości z lokalizacją zawierające tytuł/adres)
- Matrix (
m.locationzgeo_uri) - Telegram (pinezki lokalizacji, miejsca i lokalizacje na żywo)
- WhatsApp (
locationMessage+liveLocationMessage)
Formatowanie tekstu
Lokalizacje są renderowane jako czytelne wiersze bez nawiasów. Współrzędne mają sześć miejsc po przecinku, a dokładność jest zaokrąglana do pełnych metrów:
- Pinezka:
📍 48.858844, 2.294351 ±12m
- Nazwane miejsce (w tym samym wierszu; nazwa/adres trafiają wyłącznie do bloku metadanych):
📍 48.858844, 2.294351 ±12m
- Udostępnianie na żywo:
🛰 Live location: 48.858844, 2.294351 ±12m
Jeśli kanał zawiera etykietę, adres albo podpis/komentarz, element ten jest zachowywany w ładunku kontekstu i pojawia się w prompcie jako wydzielony blok niezaufanego JSON-u (nieobecne pola są pomijane):
Lokalizacja (niezaufane metadane):```json{ "latitude": 48.858844, "longitude": 2.294351, "accuracy_m": 12, "source": "place", "name": "Wieża Eiffla", "address": "Champ de Mars, Paryż", "caption": "Spotkajmy się tutaj"}```Pola kontekstu
Gdy lokalizacja jest obecna, do ctx dodawane są następujące pola:
LocationLat(liczba)LocationLon(liczba)LocationAccuracy(liczba, metry; opcjonalne)LocationName(ciąg znaków; opcjonalne)LocationAddress(ciąg znaków; opcjonalne)LocationSource(pin | place | live)LocationIsLive(wartość logiczna)LocationCaption(ciąg znaków; opcjonalne)
Gdy kanał nie ustawia jawnego źródła, OpenClaw określa je automatycznie: udostępnienia na żywo stają się live, lokalizacje z nazwą lub adresem stają się place, a wszystkie pozostałe — pin.
Mechanizm renderowania promptu traktuje LocationName, LocationAddress i LocationCaption jako niezaufane metadane i serializuje je za pomocą tej samej ograniczonej ścieżki JSON, która jest używana dla pozostałego kontekstu kanału.
Ładunki wychodzące
Narzędzie wiadomości i Plugin SDK używają tego samego formatu NormalizedLocation dla przenośnych lokalizacji wychodzących. Ładunek zawierający wyłącznie współrzędne reprezentuje pinezkę. Kanały z natywną obsługą miejsc mogą mapować name wraz z address na kartę miejsca.
Telegram obecnie udostępnia tę funkcję przez message(action="send"). Jej pierwsza implementacja jest celowo samodzielna: ładunków lokalizacji nie można łączyć z tekstem ani multimediami, a niekompletne pary danych miejsca powodują błąd zamiast cichego pominięcia nazwy lub adresu. Nieobsługiwane kanały nie udostępniają parametru lokalizacji.
Uwagi dotyczące kanałów
- LINE: pola
title/addresswiadomości z lokalizacją są mapowane naLocationName/LocationAddress; brak lokalizacji na żywo. - Matrix:
geo_urijest analizowane jako lokalizacja pinezki; parametru(niepewność) jest mapowany naLocationAccuracy, treść zdarzenia wypełniaLocationCaption, wysokość jest ignorowana, aLocationIsLivezawsze ma wartość false. - Telegram: miejsca są mapowane na
LocationName/LocationAddress; lokalizacje na żywo są wykrywane za pomocąlive_period. - WhatsApp:
locationMessage.commentiliveLocationMessage.captionwypełniająLocationCaption.