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-путь, который используется для другого контекста канала.
Исходящие полезные нагрузки
Инструмент сообщений и Plugin SDK используют одну и ту же структуру 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.