Configuration
Analyse de l’emplacement du canal
OpenClaw normalise les emplacements partagés provenant des canaux de discussion en :
- un texte concis contenant les coordonnées, ajouté au corps du message entrant ; et
- des champs structurés dans la charge utile de contexte de réponse automatique. Les libellés, adresses et légendes/commentaires fournis par le canal sont intégrés à l’invite par le bloc JSON partagé de métadonnées non fiables, et non directement dans le corps du message utilisateur.
Actuellement pris en charge :
- LINE (messages de localisation avec titre/adresse)
- Matrix (
m.locationavecgeo_uri) - Telegram (repères de localisation, lieux et localisations en direct)
- WhatsApp (
locationMessage+liveLocationMessage)
Mise en forme du texte
Les emplacements sont affichés sous forme de lignes lisibles sans crochets. Les coordonnées utilisent six décimales ; la précision est arrondie au mètre entier :
- Repère :
📍 48.858844, 2.294351 ±12m
- Lieu nommé (sur la même ligne ; le nom et l’adresse figurent uniquement dans le bloc de métadonnées) :
📍 48.858844, 2.294351 ±12m
- Partage en direct :
🛰 Live location: 48.858844, 2.294351 ±12m
Si le canal inclut un libellé, une adresse ou une légende/un commentaire, cet élément est conservé dans la charge utile de contexte et apparaît dans l’invite sous forme de JSON non fiable délimité (les champs sont omis lorsqu’ils sont absents) :
Localisation (métadonnées non fiables) :```json{ "latitude": 48.858844, "longitude": 2.294351, "accuracy_m": 12, "source": "place", "name": "Tour Eiffel", "address": "Champ de Mars, Paris", "caption": "Retrouvez-nous ici"}```Champs de contexte
Lorsqu’un emplacement est présent, les champs suivants sont ajoutés à ctx :
LocationLat(nombre)LocationLon(nombre)LocationAccuracy(nombre, en mètres ; facultatif)LocationName(chaîne ; facultatif)LocationAddress(chaîne ; facultatif)LocationSource(pin | place | live)LocationIsLive(booléen)LocationCaption(chaîne ; facultatif)
Lorsque le canal ne définit pas de source explicite, OpenClaw la déduit : les partages en direct deviennent live, les emplacements comportant un nom ou une adresse deviennent place, et tous les autres deviennent pin.
Le moteur de rendu de l’invite traite LocationName, LocationAddress et LocationCaption comme des métadonnées non fiables et les sérialise via le même chemin JSON à taille limitée que celui utilisé pour les autres éléments de contexte du canal.
Charges utiles sortantes
L’outil de messagerie et le SDK de Plugin utilisent la même structure NormalizedLocation pour les emplacements sortants portables. Une charge utile contenant uniquement des coordonnées représente un repère. Les canaux prenant en charge nativement les lieux peuvent convertir name et address en une fiche de lieu.
Telegram expose actuellement cette fonctionnalité par l’intermédiaire de message(action="send"). Sa première implémentation est volontairement autonome : les charges utiles de localisation ne peuvent pas être combinées avec du texte ou des médias, et les paires de données de lieu incomplètes provoquent un échec au lieu d’ignorer silencieusement un nom ou une adresse. Les canaux non pris en charge n’annoncent pas le paramètre de localisation.
Remarques sur les canaux
- LINE : les propriétés
title/addressdu message de localisation correspondent àLocationName/LocationAddress; aucune localisation en direct. - Matrix :
geo_uriest analysé comme un emplacement de type repère ; le paramètreu(incertitude) correspond àLocationAccuracy, le corps de l’événement renseigneLocationCaption, l’altitude est ignorée etLocationIsLiveest toujours faux. - Telegram : les lieux correspondent à
LocationName/LocationAddress; les localisations en direct sont détectées vialive_period. - WhatsApp :
locationMessage.commentetliveLocationMessage.captionrenseignentLocationCaption.