Mainstream messaging
Métadonnées de présentation de Matrix
OpenClaw associe des métadonnées MessagePresentation normalisées aux événements Matrix m.room.message sortants sous la clé de contenu com.openclaw.presentation.
Les clients Matrix standard continuent d’afficher le texte brut de body. Les clients compatibles avec OpenClaw peuvent lire les métadonnées structurées et afficher une interface utilisateur native, notamment des boutons, des listes de sélection, des lignes de contexte et des séparateurs.
Contenu de l’événement
{ "msgtype": "m.text", "body": "Select model\n\nChoose model:\n- DeepSeek", "com.openclaw.presentation": { "version": 1, "type": "message.presentation", "title": "Select model", "tone": "info", "blocks": [ { "type": "select", "placeholder": "Choose model", "options": [ { "label": "DeepSeek", "value": "/model deepseek/deepseek-chat" } ] } ] }}versionest la version du schéma de métadonnées ; la version actuelle est1.typeest un discriminant stable, toujours égal à"message.presentation". L’adaptateur Matrix n’émet que des charges utiles possédant exactement cette version et ce type ; de même, les clients doivent ignorer les versions inconnues qu’ils ne peuvent pas interpréter de manière sûre, les valeurs detypeinconnues et les types de blocs inconnus.titleettone(info,success,warning,danger,neutral) sont des indications facultatives.- Les boutons et les options de sélection peuvent contenir une
actiontypée ({ "type": "command", "command": "/..." }ou{ "type": "callback", "value": "..." }) en plus de l’ancienne chaînevalue. Privilégiezactionlorsque les deux sont présentes.
Comportement de repli
OpenClaw génère toujours dans body un texte brut de repli lisible. Les métadonnées structurées sont complémentaires et ne doivent pas être requises pour l’interopérabilité Matrix de base.
Règles d’affichage de repli :
- Le contenu de
title,textetcontextest affiché sous forme de lignes de texte brut. - Les boutons dotés d’une action
commandsont affichés sous la formelibellé : `/commande`afin que la commande reste copiable. Les boutons dotés d’une actioncallbackou uniquement d’une ancienne valeurvaluen’affichent que leur libellé afin que les valeurs de rappel opaques restent privées ; les boutons désactivés n’affichent toujours que leur libellé. Les boutons d’URL et d’application web sont affichés sous la formelibellé : URL. - Les blocs de sélection affichent le texte indicatif (ou
Options :) comme titre, suivi de lignes d’options ne contenant que leur libellé. - Si aucun élément n’est affiché, par exemple pour une présentation contenant uniquement un séparateur, le corps utilise
---comme contenu de repli.
Les clients non compatibles continuent d’afficher le texte de repli. Les clients compatibles avec OpenClaw peuvent privilégier les métadonnées structurées pour l’affichage tout en conservant le contenu de repli pour la copie, la recherche, les notifications et l’accessibilité.
Blocs pris en charge
L’adaptateur Matrix sortant annonce une prise en charge native des éléments suivants :
buttonsselectcontextdivider
Les blocs text sont toujours pris en charge par l’intermédiaire du corps de repli. Considérez tous les blocs comme des indications de présentation traitées dans la mesure du possible ; ignorez les champs et les types de blocs inconnus plutôt que de faire échouer l’intégralité du message.
Interactions
Ces métadonnées n’ajoutent aucune sémantique de rappel à Matrix. Les valeurs des boutons et des options de sélection sont des charges utiles d’interaction de repli, généralement des commandes préfixées par une barre oblique ou des commandes textuelles. Un client Matrix souhaitant prendre en charge l’interaction résout la valeur du contrôle (action.command, puis action.value, puis value) et la renvoie dans la salle sous forme de message normal.
Par exemple, un bouton dont la valeur est /model deepseek/deepseek-chat peut être traité en envoyant cette valeur comme message texte Matrix chiffré dans la même salle.
Relation avec les métadonnées d’approbation
com.openclaw.presentation sert à la présentation générale des messages enrichis.
Les demandes d’approbation utilisent les métadonnées dédiées com.openclaw.approval, car les approbations contiennent un état sensible pour la sécurité, des décisions ainsi que des détails sur l’exécution et les plugins. Si les deux clés de métadonnées sont présentes sur le même événement, les clients doivent privilégier le moteur d’affichage dédié aux approbations.
Messages multimédias
Lorsqu’une réponse contient plusieurs URL de médias, OpenClaw envoie un événement Matrix par URL de média. Le texte de légende et les métadonnées de présentation sont associés uniquement au premier événement, afin que les clients reçoivent une seule charge utile structurée stable, sans moteurs d’affichage en double. La même règle s’applique lorsqu’un texte long est réparti entre plusieurs événements : les métadonnées sont uniquement associées au premier événement.
Conservez des métadonnées de présentation compactes. Les longs textes visibles par l’utilisateur doivent rester dans body et emprunter le mécanisme normal de découpage du texte de Matrix.