primoChatПервый бот
Интерактивные боты

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 считается недоверенным вводом; право пользователя на действие проверяется на стороне бота.

Как интерфейс обрабатывает кнопку

  1. Бот отправляет декларативную схемуHTML и JavaScript в сообщении не исполняются.
  2. primoChat рисует нативные кнопкиКлиент ограничивает количество, длину и стили.
  3. Нажатие становится callbackAdapter проверяет bot ID и активную установку.
  4. Бот повторно проверяет действие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 под конкретные сценарии.