SMeet Mini Apps
Обзор
Мини-приложение представляет собой веб-страницу автора бота, которая открывается внутри SMeet, в окне поверх чата с ботом. Человек входит через SMeet одним касанием, а то, что он заполнил, доходит до бота после его подтверждения.
Что такое мини-приложение#
У бота может быть одно мини-приложение. Это обычная веб-страница на собственном HTTPS-сервере автора: анкета, служба заявок, экран записи, небольшой инструмент. SMeet показывает её в окне поверх чата с ботом, сообщает человеку, чья это страница и что она получит, и связывает страницу с SMeet через небольшой скрипт, SDK.
- Страница и её сервер принадлежат автору. SMeet их не размещает и их код не исполняет.
- Человек входит своим аккаунтом SMeet без пароля и без cookie: страница просит у SMeet одноразовый код входа, а сервер автора обменивает его на сессию (Вход).
- Страница может отправить результат боту. SMeet сначала показывает человеку, что уходит, и бот получает это событием
mini_app_submissionв той же очереди, что и сообщения (Мини-приложения в Bot API). - Мини-приложения ничего не продают и не принимают платежей (Правила для авторов).
Как связаны части#
| Часть | Чья | Что делает |
|---|---|---|
| Страница | автора | интерфейс; подключает SDK на каждой странице |
| SDK | SMeet, внутри страницы | связывается с окном SMeet, получает коды входа, отправляет результаты боту (SDK) |
| Окно SMeet | SMeet | показывает экран согласия, домен страницы, подтверждение каждого результата; загружает страницу во фрейме |
| Сервер автора | автора | обменивает коды входа на сессии и проверяет их в SMeet (Ваш сервер) |
| Бот | автора | получает результаты и отвечает в чате (Bot API) |
Запуск идёт так:
- Человек нажимает кнопку
mini_appв чате с ботом или открывает ссылкуhttps://messenger.scrile.com/u/<bot>?startapp=<param>. - SMeet показывает экран согласия: кто сделал приложение, что оно получит о человеке и что загрузка приложения показывает серверу автора его IP-адрес и сведения об устройстве. Пока человек не нажмёт Открыть, автору ничего не передаётся.
- SMeet открывает окно и загружает страницу опубликованной версии.
- Страница подключается через
SMeetMiniApp.connect()и вызываетready(), когда нарисован её первый экран. - Страница выполняет вход: её сервер выдаёт одноразовую попытку входа,
authorize()даёт код, сервер обменивает код черезexchangeLaunchCode. - Страница работает со своим сервером. Перед каждой защищённой операцией сервер проверяет сессию через
checkSession, без кеша. - Когда человек отправляет форму,
submitToBot()показывает подтверждение SMeet, и бот получает форму. - Бот отвечает в чате, с ревизией разговора в качестве условия.
Где открываются мини-приложения#
В 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.
Каждое изменение записано в журнале изменений.
С чего начать#
- Быстрый старт: создайте мини-приложение и откройте тестовую версию с примером.
- Примеры: анкета, служба заявок с файлами и минимальный сервер на Python, готовые к запуску.
- SDK, Вход и Ваш сервер: то, что делает каждое мини-приложение.
- Публикация и Правила для авторов: что нужно для проверки.