Mainstream messaging
Метаданные представления Matrix
OpenClaw может прикреплять нормализованные метаданные MessagePresentation к исходящим событиям Matrix m.room.message в com.openclaw.presentation.
Стандартные клиенты Matrix продолжают отображать обычный текст body. Клиенты, поддерживающие OpenClaw, могут читать структурированные метаданные и отображать нативный UI, например кнопки, списки выбора, строки контекста и разделители.
Содержимое события
Метаданные хранятся в содержимом события 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 — это версия схемы метаданных представления Matrix. type — стабильный дискриминатор для клиентов, поддерживающих OpenClaw. Клиенты должны игнорировать неизвестные значения type, неизвестные версии, которые они не могут безопасно интерпретировать, и неизвестные типы блоков.
Резервное поведение
OpenClaw всегда формирует читаемый резервный обычный текст в body. Структурированные метаданные являются дополнительными и не должны требоваться для базовой совместимости с Matrix.
Неподдерживаемые клиенты должны продолжать показывать резервный текст. Клиенты, поддерживающие OpenClaw, могут предпочитать структурированные метаданные для отображения, сохраняя при этом резервный текст для копирования, поиска, уведомлений и доступности.
Поддерживаемые блоки
Исходящий адаптер Matrix объявляет поддержку:
buttonsselectcontextdivider
Клиенты должны рассматривать эти блоки как рекомендательные подсказки представления, выполняемые по мере возможности. Неизвестные поля и неизвестные типы блоков следует игнорировать, а не приводить к сбою отображения всего сообщения.
Взаимодействия
Эти метаданные не добавляют семантику callback Matrix. Значения кнопок и вариантов выбора являются резервными полезными нагрузками взаимодействия, обычно slash-командами или текстовыми командами. Клиент Matrix, который хочет поддерживать взаимодействие, может отправить выбранное значение обратно в комнату как обычное сообщение.
Например, кнопку со значением /model deepseek/deepseek-chat можно обработать, отправив это значение как зашифрованное текстовое сообщение Matrix в той же комнате.
Связь с метаданными подтверждений
com.openclaw.presentation предназначен для общего представления форматированных сообщений.
Запросы подтверждения используют специализированные метаданные com.openclaw.approval, потому что подтверждения содержат чувствительные к безопасности состояние, решения и сведения об exec/plugin. Если в одном событии присутствуют оба ключа метаданных, клиентам следует предпочитать специализированный рендерер подтверждений.
Медиа-сообщения
Когда ответ содержит несколько URL медиа, OpenClaw отправляет по одному событию Matrix для каждого URL медиа. Метаданные представления прикрепляются только к первому медиа-событию, чтобы у клиентов была одна стабильная структурированная полезная нагрузка и не возникало дублирующих рендереров.
Держите метаданные представления компактными. Большой видимый пользователю текст должен оставаться в body и использовать обычный путь разбиения текста Matrix на фрагменты.