Mainstream messaging
Metadati di presentazione di Matrix
OpenClaw può allegare metadati MessagePresentation normalizzati agli eventi Matrix m.room.message in uscita sotto com.openclaw.presentation.
I client Matrix standard continuano a renderizzare il testo semplice body. I client compatibili con OpenClaw possono leggere i metadati strutturati e renderizzare UI native come pulsanti, menu di selezione, righe di contesto e divisori.
Contenuto dell'evento
I metadati sono archiviati nel contenuto dell'evento Matrix:
{ "msgtype": "m.text", "body": "Select model\n\n- DeepSeek: /model deepseek/deepseek-chat", "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" } ] } ] }}version è la versione dello schema dei metadati di presentazione Matrix. type è un discriminatore stabile per i client compatibili con OpenClaw. I client dovrebbero ignorare i valori type sconosciuti, le versioni sconosciute che non possono interpretare in modo sicuro e i tipi di blocco sconosciuti.
Comportamento di fallback
OpenClaw renderizza sempre un fallback in testo semplice leggibile in body. I metadati strutturati sono aggiuntivi e non devono essere necessari per l'interoperabilità Matrix di base.
I client non supportati dovrebbero continuare a mostrare il testo di fallback. I client compatibili con OpenClaw possono preferire i metadati strutturati per la visualizzazione, preservando al contempo il testo di fallback per copia, ricerca, notifiche e accessibilità.
Blocchi supportati
L'adattatore Matrix in uscita dichiara il supporto per:
buttonsselectcontextdivider
I client dovrebbero trattare questi blocchi come suggerimenti di presentazione best-effort. I campi sconosciuti e i tipi di blocco sconosciuti dovrebbero essere ignorati invece di causare il mancato rendering dell'intero messaggio.
Interazioni
Questi metadati non aggiungono semantiche di callback Matrix. I valori dei pulsanti e delle opzioni di selezione sono payload di interazione di fallback, di solito comandi slash o comandi testuali. Un client Matrix che vuole supportare l'interazione può inviare il valore selezionato alla stanza come messaggio normale.
Ad esempio, un pulsante con valore /model deepseek/deepseek-chat può essere gestito inviando quel valore come messaggio di testo Matrix crittografato nella stessa stanza.
Relazione con i metadati di approvazione
com.openclaw.presentation serve per la presentazione generale di messaggi avanzati.
Le richieste di approvazione usano i metadati dedicati com.openclaw.approval perché le approvazioni trasportano stato, decisioni e dettagli di exec/Plugin sensibili per la sicurezza. Se entrambe le chiavi di metadati sono presenti nello stesso evento, i client dovrebbero preferire il renderer di approvazione dedicato.
Messaggi multimediali
Quando una risposta contiene più URL multimediali, OpenClaw invia un evento Matrix per ogni URL multimediale. I metadati di presentazione vengono allegati solo al primo evento multimediale, così i client hanno un payload strutturato stabile ed evitano renderer duplicati.
Mantieni compatti i metadati di presentazione. Il testo esteso visibile all'utente dovrebbe rimanere in body e usare il normale percorso di suddivisione del testo di Matrix.