Configuration
Análisis de la ubicación del canal
OpenClaw normaliza las ubicaciones compartidas desde los canales de chat en:
- texto conciso de coordenadas añadido al cuerpo entrante, y
- campos estructurados en la carga útil de contexto de respuesta automática. Las etiquetas, direcciones y leyendas/comentarios proporcionados por el canal se representan en el prompt mediante el bloque JSON compartido de metadatos no fiables, no en línea en el cuerpo del usuario.
Compatibilidad actual:
- LINE (mensajes de ubicación con título/dirección)
- Matrix (
m.locationcongeo_uri) - Telegram (marcadores de ubicación + lugares + ubicaciones en directo)
- WhatsApp (
locationMessage+liveLocationMessage)
Formato del texto
Las ubicaciones se representan como líneas legibles sin corchetes. Las coordenadas usan seis decimales; la precisión se redondea a metros enteros:
- Marcador:
📍 48.858844, 2.294351 ±12m
- Lugar con nombre (en la misma línea; el nombre y la dirección solo se incluyen en el bloque de metadatos):
📍 48.858844, 2.294351 ±12m
- Ubicación compartida en directo:
🛰 Live location: 48.858844, 2.294351 ±12m
Si el canal incluye una etiqueta, una dirección o una leyenda/comentario, se conserva en la carga útil de contexto y aparece en el prompt como JSON no fiable delimitado (los campos se omiten cuando no están presentes):
Ubicación (metadatos no fiables):```json{ "latitude": 48.858844, "longitude": 2.294351, "accuracy_m": 12, "source": "place", "name": "Torre Eiffel", "address": "Campo de Marte, París", "caption": "Nos vemos aquí"}```Campos de contexto
Cuando hay una ubicación, estos campos se añaden a ctx:
LocationLat(número)LocationLon(número)LocationAccuracy(número, metros; opcional)LocationName(cadena; opcional)LocationAddress(cadena; opcional)LocationSource(pin | place | live)LocationIsLive(booleano)LocationCaption(cadena; opcional)
Cuando el canal no establece un origen explícito, OpenClaw lo infiere: las ubicaciones compartidas en directo se convierten en live, las ubicaciones con nombre o dirección se convierten en place y todas las demás son pin.
El renderizador de prompts trata LocationName, LocationAddress y LocationCaption como metadatos no fiables y los serializa mediante la misma ruta JSON acotada que se utiliza para otros contextos de canal.
Cargas útiles salientes
La herramienta de mensajes y el SDK de Plugin utilizan la misma estructura NormalizedLocation para ubicaciones salientes portátiles. Una carga útil que solo contiene coordenadas representa un marcador. Los canales con compatibilidad nativa con lugares pueden asignar name más address a una tarjeta de lugar.
Actualmente, Telegram expone esta funcionalidad mediante message(action="send"). Su primera implementación es deliberadamente independiente: las cargas útiles de ubicación no pueden combinarse con texto ni contenido multimedia, y los pares de lugar incompletos generan un error en lugar de descartar silenciosamente un nombre o una dirección. Los canales no compatibles no anuncian el parámetro de ubicación.
Notas sobre los canales
- LINE: los campos
title/addressdel mensaje de ubicación se asignan aLocationName/LocationAddress; no admite ubicaciones en directo. - Matrix:
geo_urise analiza como una ubicación de marcador; el parámetrou(incertidumbre) se asigna aLocationAccuracy, el cuerpo del evento rellenaLocationCaption, la altitud se ignora yLocationIsLivesiempre es falso. - Telegram: los lugares se asignan a
LocationName/LocationAddress; las ubicaciones en directo se detectan mediantelive_period. - WhatsApp:
locationMessage.commentyliveLocationMessage.captionrellenanLocationCaption.