Skip to main content
/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 оформление

Вторая половина того, что делает установку выглядящей и читающейся как своя.

Панель администратора

Роли, права и журнал аудита за этим экраном.