Parsing de localização em canais

O OpenClaw normaliza localizações compartilhadas de canais de chat em:

  • texto legível anexado ao corpo da mensagem recebida, e
  • campos estruturados no payload de contexto de auto-resposta.

Atualmente suportado:

  • Telegram (pins de localização + estabelecimentos + localização ao vivo)
  • WhatsApp (locationMessage + liveLocationMessage)
  • Matrix (m.location com geo_uri)

Formatação de texto

As localizações são renderizadas como linhas amigáveis sem colchetes:

  • Pin:
    • 📍 48.858844, 2.294351 ±12m
  • Local nomeado:
    • 📍 Torre Eiffel — Champ de Mars, Paris (48.858844, 2.294351 ±12m)
  • Compartilhamento ao vivo:
    • 🛰 Localização ao vivo: 48.858844, 2.294351 ±12m

Se o canal inclui legenda/comentário, ele é anexado na linha seguinte:

📍 48.858844, 2.294351 ±12m
Encontre-me aqui

Campos de contexto

Quando uma localização está presente, estes campos são adicionados ao ctx:

  • LocationLat (number)
  • LocationLon (number)
  • LocationAccuracy (number, metros; opcional)
  • LocationName (string; opcional)
  • LocationAddress (string; opcional)
  • LocationSource (pin | place | live)
  • LocationIsLive (boolean)

Notas por canal

  • Telegram: estabelecimentos mapeiam para LocationName/LocationAddress; localizações ao vivo usam live_period.
  • WhatsApp: locationMessage.comment e liveLocationMessage.caption são anexados como linha de legenda.
  • Matrix: geo_uri é interpretado como localização de pin; altitude é ignorada e LocationIsLive é sempre false.