Parseo de Ubicación
Parseo de ubicación entrante (Telegram + WhatsApp + Matrix) y los campos de contexto involucrados.
OpenClaw normaliza ubicaciones compartidas en canales de chat en:
- Un texto legible por humanos añadido al final del texto entrante, y
- Campos estructurados en el payload de contexto de auto-respuesta.
Actualmente soportado:
- Telegram (pin de ubicación + venue/POI + ubicación en vivo)
- WhatsApp (locationMessage + liveLocationMessage)
- Matrix (m.location usando geo_uri)
Formato de Texto
Las ubicaciones se renderizan como texto de línea legible (sin corchetes):
- Pin de ubicación:
- 📍 48.858844, 2.294351 ±12m
- Lugar nombrado:
- 📍 Torre Eiffel — Champ de Mars, París (48.858844, 2.294351 ±12m)
- Compartir en vivo:
- 🛰 Ubicación en vivo: 48.858844, 2.294351 ±12m
Si el canal también lleva un caption/comentario, se añade en la siguiente línea:
📍 48.858844, 2.294351 ±12m Nos vemos aquí
Campos de Contexto
Cuando un mensaje contiene una ubicación, se añaden lo siguiente a ctx:
- LocationLat (número)
- LocationLon (número)
- LocationAccuracy (número, en metros; opcional)
- LocationName (string; opcional)
- LocationAddress (string; opcional)
- LocationSource (pin | place | live)
- LocationIsLive (booleano)
Notas por Canal
- Telegram: Los venues mapean a LocationName/LocationAddress; las ubicaciones en vivo usan live_period.
- WhatsApp: locationMessage.comment y liveLocationMessage.caption se añaden como líneas de caption.
- Matrix: geo_uri se parsea como "pin de ubicación (pin)"; la altitud se ignora; LocationIsLive siempre es false.