Интерактивные боты
Callback-кнопки и Mini Apps
Кнопки уже поддерживаются. Mini Apps регистрируются в Bot Console и открываются как изолированные HTTPS-приложения.
Отправка кнопок
{
"roomId": "!room:primochat.ru",
"text": "Выберите действие",
"buttons": [[
{"text":"Подтвердить","data":"order:confirm:42","style":"primary"},
{"text":"Отмена","data":"order:cancel:42","style":"danger"}
]]
}До пяти рядов по три кнопки. Нажатие приходит как update type=callback. Значение data считается недоверенным вводом; право пользователя на действие проверяется на стороне бота.
Как интерфейс обрабатывает кнопку
- Бот отправляет декларативную схемуHTML и JavaScript в сообщении не исполняются.
- primoChat рисует нативные кнопкиКлиент ограничивает количество, длину и стили.
- Нажатие становится callbackAdapter проверяет bot ID и активную установку.
- Бот повторно проверяет действиеCallback обрабатывается идемпотентно и получает обычный ответ.
Mini Apps
Зарегистрируйте appId, название, HTTPS origin, launch path и bridge capabilities в Bot Console. Сообщение бота содержит только appId; primoChat проверяет активную установку, членство пользователя в комнате и registry, затем открывает разрешённый URL в sandboxed iframe.
{
"buttons": [[
{"type":"open_app","text":"Открыть форму","appId":"support.form","style":"primary"}
]]
}При запуске Mini App получает короткоживущий launch token и список capabilities. Host принимает bridge-события только от ожидаемого origin и только с текущим token.
Mini App не получает: Matrix access token, произвольную историю комнаты, контакты, clipboard или filesystem. Следующий production-шаг — SDK и расширение capabilities под конкретные сценарии.