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.