Skip to main content
OpenClaw normalizza le posizioni condivise dai canali di chat in:
  • testo conciso con le coordinate aggiunto al corpo in entrata e
  • campi strutturati nel payload di contesto della risposta automatica. Le etichette, gli indirizzi e le didascalie/i commenti forniti dal canale vengono inseriti nel prompt tramite il blocco JSON condiviso dei metadati non attendibili, non direttamente nel corpo dell’utente.
Attualmente supportati:
  • LINE (messaggi di posizione con titolo/indirizzo)
  • Matrix (m.location con geo_uri)
  • Telegram (segnaposto di posizione + luoghi + posizioni in tempo reale)
  • WhatsApp (locationMessage + liveLocationMessage)

Formattazione del testo

Le posizioni vengono visualizzate come righe leggibili senza parentesi. Le coordinate usano sei cifre decimali; la precisione viene arrotondata al metro intero:
  • Segnaposto:
    • 📍 48.858844, 2.294351 ±12m
  • Luogo denominato (sulla stessa riga; il nome/indirizzo viene inserito solo nel blocco dei metadati):
    • 📍 48.858844, 2.294351 ±12m
  • Condivisione in tempo reale:
    • 🛰 Live location: 48.858844, 2.294351 ±12m
Se il canale include un’etichetta, un indirizzo o una didascalia/un commento, questi vengono conservati nel payload di contesto e appaiono nel prompt come JSON non attendibile delimitato (i campi vengono omessi quando assenti):

Campi del contesto

Quando è presente una posizione, questi campi vengono aggiunti a ctx:
  • LocationLat (numero)
  • LocationLon (numero)
  • LocationAccuracy (numero, metri; facoltativo)
  • LocationName (stringa; facoltativo)
  • LocationAddress (stringa; facoltativo)
  • LocationSource (pin | place | live)
  • LocationIsLive (booleano)
  • LocationCaption (stringa; facoltativo)
Quando il canale non imposta una sorgente esplicita, OpenClaw la deduce: le condivisioni in tempo reale diventano live, le posizioni con un nome o un indirizzo diventano place, tutte le altre sono pin. Il renderer del prompt tratta LocationName, LocationAddress e LocationCaption come metadati non attendibili e li serializza tramite lo stesso percorso JSON con limiti usato per gli altri dati di contesto del canale.

Payload in uscita

Lo strumento per i messaggi e l’SDK del Plugin usano la stessa struttura NormalizedLocation per le posizioni portabili in uscita. Un payload contenente solo le coordinate rappresenta un segnaposto. I canali con supporto nativo per i luoghi possono associare name più address a una scheda del luogo. Attualmente Telegram espone questa funzionalità tramite message(action="send"). La sua prima implementazione è volutamente autonoma: i payload di posizione non possono essere combinati con testo o contenuti multimediali e le coppie di dati del luogo incomplete generano un errore anziché eliminare silenziosamente un nome o un indirizzo. I canali non supportati non dichiarano il parametro di posizione.

Note sui canali

  • LINE: i campi title/address del messaggio di posizione vengono associati a LocationName/LocationAddress; le posizioni in tempo reale non sono supportate.
  • Matrix: geo_uri viene analizzato come posizione di un segnaposto; il parametro u (incertezza) viene associato a LocationAccuracy, il corpo dell’evento popola LocationCaption, l’altitudine viene ignorata e LocationIsLive è sempre falso.
  • Telegram: i luoghi vengono associati a LocationName/LocationAddress; le posizioni in tempo reale vengono rilevate tramite live_period.
  • WhatsApp: locationMessage.comment e liveLocationMessage.caption popolano LocationCaption.

Argomenti correlati