/admin/settings/connect — место, где установка решает, что предлагать
устанавливать своим клиентам: какие платформы показывать, какое приложение
рекомендовать первым на каждой, где его взять и что говорят шаги настройки.
Раньше это была таблица, вкомпилированная в бинарник Go. Свойство, ради которого
это делалось, — единственное, что нельзя потерять: Telegram-бот и веб-кабинет
читают одни и те же рекомендации, поэтому никого нельзя попросить установить одно
приложение в чате и другое в браузере. Теперь это свойство держится на том, что
обе поверхности читают один запрос, а не на том, что обе слинкованы с одной
константой, — и добавление приложения больше не требует релиза.
Обновление ничего не меняет. Миграция засевает ровно те пять платформ и
одиннадцать записей, которые были вкомпилированы, в том же порядке
рекомендации и с теми названиями, которые использовал собственный каталог
сообщений бота. Установка, которая никогда не откроет этот экран, рекомендует
сегодня то же, что рекомендовала вчера.
Платформы
Платформа — то, из чего клиент выбирает первым делом. У каждой есть ключ, название на английском и русском, порядок и переключатель. Названия хранятся, а не разрешаются из каталога сообщений, потому что оператор, добавляющий платформу, никак не может добавить ключ перевода в скомпилированный каталог. Отсутствующее русское название сохраняется как английское, а не оставляется отрисовываться пробелом. Выключение платформы убирает её с обеих поверхностей, в том числе по ссылке, называющей её напрямую, — поэтому устаревшая закладка откатывается к первой предлагаемой платформе, а не добирается до отозванных рекомендаций. На собственном экране оператора она остаётся: включить её обратно — то, ради чего эту страницу открывают. Удаление платформы удаляет все описанные под ней приложения. Именно поэтому удаление подтверждается, а переключатель рядом — нет.Приложения
Каждая запись называет приложение, схему, импортирующую в него подписку, и необязательно адрес загрузки и инструкции по настройке.
Deep-ссылка — это схема с приписанным URL подписки и ничем больше:
happ://add/https://panel.example.com/sub/…. Никакого редиректа между ними нет.
Инструкции заменяют общие три шага, а не добавляются к ним. Тот, кто описал
собственную настройку, знает что-то, чего не знает общий текст, а показ обоих
оставил бы клиента выбирать между двумя рассказами об одном и том же.
Схема импорта — граница безопасности
Это значение склеивается со ссылкой подписки и попадает вhref якоря в
веб-кабинете клиента — на тот же источник, где живёт сессионный cookie. Это
единственное поле на этом экране, ошибка в котором не косметическая.
Схема должна совпадать с шаблоном «имя схемы, ://, консервативный алфавит
пути» и никогда не может называть javascript, data, vbscript или file.
javascript: в href исполняется; остальные три — соседи, с которыми он ходит.
Оба правила применяются дважды: в Go, чтобы оператор получил сообщение с именем
поля, и как ограничение таблицы, чтобы скрипт, пишущий напрямую в базу, тоже
получил отказ. Адрес загрузки принимается только по https по смежной причине —
это ссылка, которую вручают человеку, собирающемуся установить программу на
собственное устройство.
Что видит клиент
В браузере. Ряд кнопок платформ с названиями оператора, шаги настройки или инструкции оператора, по кнопке на приложение, вторая кнопка поменьше там, где есть адрес загрузки, затем QR-код и копируемая ссылка. В боте. Те же платформы инлайн-кнопками, те же шаги или инструкции, по одной кнопке копирования на приложение — инлайн-кнопки Telegram принимают толькоhttp, https и tg, поэтому схема импорта путешествует копируемым текстом, —
и обычная кнопка-ссылка для адреса загрузки, который является https и потому ею
быть может.
Когда не настроено ничего. Обе поверхности сообщают об этом и всё равно
предлагают ссылку подписки: скопировать её в любой совместимый клиент — то, что
обязано работать.
Права и журнал
Чтение требуетsettings.read, любое изменение — settings.write. Сохранения и
удаления попадают в журнал как connect.platform.saved,
connect.platform.deleted, connect.client.saved и connect.client.deleted в
категории configuration.
Смежные страницы
Подключение устройства
Что клиент делает с этими рекомендациями и как путешествует ссылка.
Настройки установки
Остальные области настроек и то, как сохраняется раздел.
White-label оформление
Вторая половина того, что делает установку выглядящей и читающейся как своя.
Панель администратора
Роли, права и журнал аудита за этим экраном.