SMeetMini Apps

SMeet Mini Apps

Обзор

Мини-приложение представляет собой веб-страницу автора бота, которая открывается внутри SMeet, в окне поверх чата с ботом. Человек входит через SMeet одним касанием, а то, что он заполнил, доходит до бота после его подтверждения.

Что такое мини-приложение#

У бота может быть одно мини-приложение. Это обычная веб-страница на собственном HTTPS-сервере автора: анкета, служба заявок, экран записи, небольшой инструмент. SMeet показывает её в окне поверх чата с ботом, сообщает человеку, чья это страница и что она получит, и связывает страницу с SMeet через небольшой скрипт, SDK.

  • Страница и её сервер принадлежат автору. SMeet их не размещает и их код не исполняет.
  • Человек входит своим аккаунтом SMeet без пароля и без cookie: страница просит у SMeet одноразовый код входа, а сервер автора обменивает его на сессию (Вход).
  • Страница может отправить результат боту. SMeet сначала показывает человеку, что уходит, и бот получает это событием mini_app_submission в той же очереди, что и сообщения (Мини-приложения в Bot API).
  • Мини-приложения ничего не продают и не принимают платежей (Правила для авторов).

Как связаны части#

ЧастьЧьяЧто делает
Страницаавтораинтерфейс; подключает SDK на каждой странице
SDKSMeet, внутри страницысвязывается с окном SMeet, получает коды входа, отправляет результаты боту (SDK)
Окно SMeetSMeetпоказывает экран согласия, домен страницы, подтверждение каждого результата; загружает страницу во фрейме
Сервер автораавтораобменивает коды входа на сессии и проверяет их в SMeet (Ваш сервер)
Ботавтораполучает результаты и отвечает в чате (Bot API)

Запуск идёт так:

  1. Человек нажимает кнопку mini_app в чате с ботом или открывает ссылку https://messenger.scrile.com/u/<bot>?startapp=<param>.
  2. SMeet показывает экран согласия: кто сделал приложение, что оно получит о человеке и что загрузка приложения показывает серверу автора его IP-адрес и сведения об устройстве. Пока человек не нажмёт Открыть, автору ничего не передаётся.
  3. SMeet открывает окно и загружает страницу опубликованной версии.
  4. Страница подключается через SMeetMiniApp.connect() и вызывает ready(), когда нарисован её первый экран.
  5. Страница выполняет вход: её сервер выдаёт одноразовую попытку входа, authorize() даёт код, сервер обменивает код через exchangeLaunchCode.
  6. Страница работает со своим сервером. Перед каждой защищённой операцией сервер проверяет сессию через checkSession, без кеша.
  7. Когда человек отправляет форму, submitToBot() показывает подтверждение SMeet, и бот получает форму.
  8. Бот отвечает в чате, с ревизией разговора в качестве условия.

Где открываются мини-приложения#

В web-версии SMeet и в SMeet для iOS, iPadOS и macOS. На широком экране окно стоит посередине, и его можно развернуть; на телефоне оно занимает весь экран.

Другие приложения и старые версии мини-приложения не открывают: SMeet для Android, приложение для компьютера и старые версии web-версии и SMeet для iOS показывают кнопку mini_app недоступной и ничего не объясняют. Пишите в тексте сообщения, где открывается форма (Кнопка mini_app).

Две среды#

У каждого мини-приложения две версии, каждая на своём origin и со своими ключами:

РабочаяТестовая
Что открываетсяопубликованная конфигурация, прошедшая проверкучерновик, если он есть (в том числе на проверке и после отказа), иначе опубликованная конфигурация
Кто открываетвсе, кому виден ботвладелец, тестировщики, принявшие приглашение, проверяющие открытой заявки
Пометка«Тестовая версия, SMeet её не проверял» на экране согласия и в окне
Ссылкаhttps://messenger.scrile.com/u/<bot>?startapp=та же с &env=test

Две среды никогда не делят ни сессию, ни результат. Подробности в разделе Публикация.

За что отвечает SMeet#

  • Доверенные экраны: согласие перед каждым запуском, домен в верхней панели окна, подтверждение каждого результата и каждой внешней ссылки. Страница не может нарисовать что-то поверх них или нажать их.
  • Кто этот человек: код входа получает только страница, которую SMeet загрузил и проверил, а обменять его может только сервер автора с ключом этого приложения и этой среды.
  • Окончание доступа: когда человек останавливает или блокирует бота, отзывает доступ приложения, выходит из организации или из SMeet, SMeet закрывает окно, а checkSession сразу отвечает active: false.

SMeet проверяет приложение публичного пространства до публикации, но не каждое последующее изменение сайта автора. За приложение, его данные и его сервер отвечает автор (Правила для авторов).

Версии#

  • SDK 1.0.0, мост версии 1 и его bridge.schema.json.
  • API автора 1.0.0 по адресу https://messenger.scrile.com/mini-app-api/v1, описанный в openapi.json.
  • Кнопка mini_app и событие mini_app_submission входят в Bot API 1.2.0.

Каждое изменение записано в журнале изменений.

С чего начать#