Синхронизация

У CityScreen Context нет собственного каталога. Он многократно копирует каталог из системы управления контентом (CMS) оператора и сверяет результат с тем, что у него уже есть.

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

Устройство запуска

Запуск синхронизации — это один полный проход по каталогу источника. В конце запуска всё, что проход не нашёл, — это то, о чём источник перестал сообщать.

Запуск выполняет три шага по порядку.

  1. Запрашивает у источника страницу экранов, каждый со своими рекламными поверхностями.

  2. Создаёт, обновляет или оставляет без изменений каждый экран и каждую поверхность на этой странице и повторяет, пока источник не сообщит, что страниц больше нет.

  3. Если все страницы пришли без ошибок и запуск не отменён, деактивирует каждую поверхность организации, которую запуск не нашёл.

Запуск, который сорвался на полпути, всё равно сохранил всё, что прочитал до этого момента.

sync-run

Когда он выполняется

Плановый забор данных выполняется ежечасно. Он охватывает каждую организацию, у которой настройки синхронизации сохранены и включены, и пропускает организации, чья интеграция передаёт инвентарь файлом.

Владелец или администратор также может в любой момент запустить синхронизацию из настроек синхронизации инвентаря организации и отменить запуск, который идёт. Отменённый запуск сохраняет уже зафиксированные страницы и пропускает проход деактивации, точно так же, как неудачный запуск.

Что запрашивается

Для интеграции с CMS, работающей по протоколу CityScreen, платформа запрашивает каталог, используя идентификатор и учётные данные оператора. В ответе перечислены экраны, каждый со вложенными в него поверхностями.

Как сопоставляются записи

Входящие записи сопоставляются с существующими экранами и поверхностями по идентификаторам, которые использует система-источник, а поверхность дополнительно сопоставляется по GID. Это сохраняет историю поверхности, когда система-источник меняет собственные идентификаторы, но оставляет GID стабильным. Поверхность, чей GID уже занят другой поверхностью той же организации, пропускается в этом запуске, а в журнале названы GID и поверхность, которая его занимает.

Что перезаписывает запуск

Практически всё. Название поверхности, разрешение, положение на экране, расписание работы, фотографии, конфигурация слотов и большая часть метаданных заменяются из источника при каждом запуске, где они различаются. Название экрана, адрес, координаты, разрешения, физический размер, размещение, вид инсталляции, описание и фотографии также заменяются.

Четыре настройки уровня поверхности принадлежат оператору и сохраняются. Прежде чем планировать любую работу вокруг изменённых значений, прочитайте Что можно редактировать.

Инвентарь, о котором источник перестаёт сообщать

Ничего не удаляется. Поверхность, о которой источник перестал сообщать, переводится в неактивное состояние в конце следующего запуска, завершившегося без неудачных страниц, и остаётся в каталоге со своими идентификаторами, историей и отчётами.

Обратное тоже происходит автоматически. Поверхность, присутствующая в запуске, становится активной. Для большинства интеграций это делает активацию свойством источника — см. Активация и архивация.

Частичные сбои

Страница, запрос которой возвращает статус неуспеха или пустое тело, отбрасывается. Сбой записывается в журнал запуска вместе с ответом источника, и запуск помечается как неудачный.

Из неудачной страницы следуют два последствия.

  • Каждая страница, которая уже прошла успешно, остаётся зафиксированной. Каталог остаётся обновлённым частично.

  • Проход деактивации пропускается для всего запуска.

Второй пункт — главный: источник, который ненадолго становится недоступен посреди запуска, не может привести к деактивации поверхностей, потому что проход, который их деактивировал бы, не выполняется.

Записи, не прошедшие проверку, — более мягкий случай. Экран, чья входящая запись некорректна, пропускается отдельно, проблемы записываются в журнал с названием экрана, а остальная страница обрабатывается дальше. Если экран остаётся некорректным в ходе чистого запуска, его поверхности деактивируются по обычному правилу для инвентаря, о котором источник перестаёт сообщать.

Лимит лицензии

Если развёртывание лицензировано на максимальное число дисплеев, а источник сообщает больше, пакет пропускается, организации направляется уведомление, и запуск продолжается, не помечаясь как неудачный. В журнале записано, что число лицензированных дисплеев меньше полученного числа.

Импорт из файла

Некоторые интеграции с CMS не публикуют живой каталог. Для них оператор вместо этого загружает таблицу, и та же сверка выполняется по её строкам: создать, обновить и деактивировать всё, чего в файле не было.

  • Кнопка импорта и шаблон таблицы доступны в списке инвентаря владельцам, администраторам и менеджерам и только для организаций, чья интеграция работает через файл.

  • Некорректные строки пропускаются и фиксируются в журнале, точно так же, как некорректные записи при заборе данных.

  • Для организации одновременно выполняется один импорт; вторая загрузка, начатая во время выполняющейся, отклоняется.

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

Настройки

Настройки синхронизации инвентаря хранятся для каждой организации, и редактировать их могут только владельцы и администраторы.

Базовый URL

Адрес программного интерфейса CMS.

Токен доступа

Учётные данные, отправляемые с каждым запросом синхронизации.

Идентификатор оператора

Идентификатор, который ограничивает каждое обращение инвентарём этого оператора внутри системы-источника.

Дополнительные поля

Некоторым интеграциям нужны дополнительные параметры. Набор дополнительных полей — свойство интеграции, поэтому форма показывает те поля, которые требует эта интеграция.

Удаление настроек прекращает синхронизацию организации. Уже импортированный инвентарь оно не удаляет.

Чтение результата

Информацию о синхронизации дают два места в интерфейсе.

Статус

Пока запуск идёт, платформа показывает идентификатор запуска и текущие итоги по запрошенным, созданным и обновлённым записям.

Журнал

После завершения запуска — успешного или нет — для организации сохраняется читаемый журнал, который можно прочитать на странице настроек синхронизации.

Журнал хранит один запуск: каждый новый запуск заменяет предыдущий журнал. Завершённый запуск заканчивается своими счётчиками:

Inventory synchronisation started at 2026-08-11T09:03:00. Id: 8f2c1b04-...

Synchronization completed
Number of created frames: 4
Number of updated frames: 112
Number frames without changes: 1380
Number of disabled frames: 2

У запуска, столкнувшегося с проблемой, над счётчиками записана сама проблема:

Synchronization failed.
Invalid server response code 502
Response text: Bad Gateway
Если запуск сообщает ноль деактивированных поверхностей в организации, где поверхности явно удалены в источнике, сначала проверьте в журнале неудачную страницу. Если какая-либо страница не прошла, поверхности в этом запуске не деактивируются, поэтому деактивация ещё не произошла, и её выполнит следующий чистый запуск.

Другие пути интеграции

Описанный выше забор данных — это путь по протоколу CityScreen, который используют организации, чьими экранами управляет CS Play, и универсальные источники, реализующие тот же интерфейс. Другие интеграции доходят до того же каталога собственными путями.

  • SpinetiX — интеграция с CMS, которая сохраняет то же правило для инвентаря, о котором источник перестаёт сообщать.

  • CubicVision — интеграция с CMS со своим путём инвентаря и единственная интеграция, в которой активация остаётся под контролем оператора между запусками.

  • KIS — интеграция с CMS, каталог которой приходит импортом файла.

  • Интеграции с внешними SSP — инвентарь, получаемый от другой биржи, а не из CMS, по собственному ежечасному расписанию.

Поддерживаемые партнёры классифицирует каждую из них по типу интеграции и направлению обмена.