Функционал моделей событий для видео аналитики: различия между версиями
| Строка 124: | Строка 124: | ||
== '''Изменения серверной логики''' == | == '''Изменения серверной логики''' == | ||
Новая реализация подразумевала также и переделку серверного приложения. На данный момент серверное приложение принимает вебхуки (webhook) через POST-запрос по API, которая позволяет серверу клиента обращаться к серверу SmartPlayer. Для формирования POST-запроса на вебхук (webhook) пользователю необходимо передать объект в котором есть event_id и value для корректной работы событий, а также те параметры которые были выбраны в качестве ключа события. Также необходимо добавить API-ключ, который генерируется в личном кабинете SmartPlayer. Токен API-ключа добавляется в post-запрос параметром "token".<br> | Новая реализация подразумевала также и переделку серверного приложения. На данный момент серверное приложение принимает вебхуки (webhook) через POST-запрос по API, которая позволяет серверу клиента обращаться к серверу SmartPlayer. Для формирования POST-запроса на вебхук (webhook) пользователю необходимо передать объект в котором есть event_id и value для корректной работы событий, а также те параметры которые были выбраны в качестве ключа события. Также необходимо добавить API-ключ, который генерируется в личном кабинете SmartPlayer. Токен API-ключа добавляется в post-запрос параметром "token".<br> | ||
Например: <code>api/v2/broadcast-event?token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab</code> | Например: <code>api/v2/broadcast-event?token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab</code><br> | ||
Запрос по адресу состоит из следующих частей: | |||
* адрес сервера: https://develop.smartplayer.org/ | * адрес сервера: https://develop.smartplayer.org/ | ||
* путь вебхука: api/v2/broadcast-event | * путь вебхука: api/v2/broadcast-event | ||
* параметр токена: token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab | * параметр токена: token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab | ||
Из описанных выше частей собирается полноценные запрос описанный в примере. | Из описанных выше частей собирается полноценные запрос описанный в примере.<br> | ||
'''Пример (отправка POST-запроса)''': https://develop.smartplayer.org/api/v2/broadcast-event?token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab | '''Пример (отправка POST-запроса)''': https://develop.smartplayer.org/api/v2/broadcast-event?token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab<br> | ||
В личном кабинете можно получить следующие данные: | В личном кабинете можно получить следующие данные: | ||
* ключ события (процесс создания описан в создании события выше) | * ключ события (процесс создания описан в создании события выше) | ||
Версия от 15:14, 15 октября 2025
Описание ситуации
В рамках реализации проекта видеоаналитики для велотрека была переработана логика работы событий на платформе SmartPlyer. Ранее логика работы событий привязывалась к одной конкретной трансляции. То есть, для каждой трансляции нужно создавать своё, отдельное событие и переиспользовать его в других трансляциях возможности не было. После переработки появился полноценная категория в разделе «Трансляции» («События трансляций»), в которой можно создавать события и впоследствии привязывать их к нужным трансляциям. Таким образом появлялся логируемый список событий, который можно создавать, настраивать, хранить и привязывать к нужным трансляциям.
Сценарий использования
Для правильной работы с событиями рекомендуется придерживаться следующего сценария использования функциональности:
- Подготовить для деальнейших (идентификатор события, API-ключ, json-файл, событие, трансляцию).
- Создать событие в категории «События трансляции» (добавить json-файл в качестве ключа и взять из события идентификатор).
- Подготовить API-ключ из личного кабинета SmartPlayer.
- Подготовить POST-запрос по API с идентификатором события.
- Создать трансляции с привязкой к событиям.
- Привязать созданные трансляции к нужным устройствам.
Важная информация
Приоритеты событий
В личном кабинете SmartPlayer реализована три вида приоритетов:
- Низкий;
- Средний;
- Высокий.

Логика работы приоритетов следующая:
- если текущее событие ниже по приоритету, чем то, которое произошло, то произойдет переключение на событие с более высоким приоритетом.
- если текущее событие имеет приоритет выше, чем то, которое произошло, то переключения события не произойдет.
- если текущее событие и следующее событие то они проиграются по очереди.
Доработка платформы SmartPlayer
Для реализации данного проекта разработчикам команды SmartPlayer понадобилось изменить реализацию на стороне:
- личного кабинета;
- серверного приложения.
Категория «События трансляций»
Категория «События трансляций» располагается в личном кабинете в разделе «Трансляция».

Перейдя категорию «События трансляции» пользователю откроется главная страница раздела, которая разделена на два блока:
- События трансляции — включает в себя все созданные события.
- Журнал событий трансляций — список с подробным описанием использования событий.


Для выделенных событий доступна два действия:
- Отменить выбор — снимает чекбокс (галочку) выделения со всех устройств.
- Удалить — удаляет сущность выделенных события из списка событий, а также записи о событиях с сервера.

События трансляции
Блок «События трансляции» включает в себя следующую информацию и возможности:
- кнопка «Создать» — позволяет создать событие и в последствии прикрепить его к трансляции;
- чекбокс для выделения — выделяет нужное событие;
- название — отображается текстовое название события;
- тип события — отображается тип имеющегося события;
- ключ — отображается ключ используемый для события;
- значение — численное значение для события;
- приоритет — отображается текстом приоритет события;
- кнопка «Отправить» — кнопка которая позволяет протестировать привязанное к трансляции и устройству событие (эмулирует это событие виртуально) и отобразит контент события на экране. При корректной настройки трансляции и события кнопка «Отправить» переключит событие, если его приоритет выше чем у текущего события.

Кнопка «Создать»
Кнопка «Создать» открывает модальное окно в котором пользователю необходимо заполнить поля для создания события. Доступны следующие основные поля:
- название — прописать текстовое название события;
- приоритет — выставить приоритет события. Доступно три вида: низкий, средний, высокий;
- тип события — выбрать из раскрывающегося списка нужный тип события (в данном случае «Серверное приложение»)

После выбора в качестве типа события значения «Серверное приложение» появится еще один параметр — «Ключ». Это параметр отвечает за то, на какое будет смотреть сервер для поиска события. В текущей реализации необходимо выбрать в качестве ключа «Внешний источник».

Выбрав «Внешний источник» в качестве ключа пользователь увидит что модальное окно увеличилось еще больше и появились новые параметры.

Это параметры:
- модель выходящих данных — позволяет перенести с помощью drag-n-drop (перетаскивания файла) json-файл, который будет расшифрован и выбрать (с помощью клика по значению) в этом файле нужное поле. Это поле будет ориентиром для сервера и с него он будет получать данные. Клик по значению автоматически заполнит поле «Значение».
- целевой путь к значению в json — отображает «путь» до значения в добавленном json-файле. Выставляется автоматически по клику на любом значении из подгруженного json-файла. Это поле нельзя изменить.
- значение — поле в котором необходимо указать значении вручную или с помощью клика по значению в json-файле.

Выбор события
Выбор события осуществляется по клику. При клике на событие оно подсвечивается серым цветом, а в правой части экрана появляется панель с настройками события.

Панель включает в себя следующие настройки:
- информация — по клику открывает модальное окно с данными о: названии, типе, целевом пути, ключе и значении события.

- параметры запроса — по клику открывает модальное окно с данными о: имени сервера, методе для запроса, идентификаторе события.

- редактировать — по клику открывает модальное окно с параметрами, которые настраивались при создании события

- удалить — удаляет выбранное событие.
Журнал событий
Блок «Журнал событий» включает в себя все созданные и передает о них следующую информацию:
- название —
- тип события —
- ключ —
- значение —
- приоритет —
- дата и время —
- статус —

В правой части экрана есть оповещение для пользователей, которое передаёт информацию о длительности хранения записей в журнале - 30 дней.

Количество отображаемых событий в личном кабинете
Если пользователю необходимо подготовить и добавить множество событий, можно столкнутся с неудобствами их отображения на странице «Журнал событий». Чтобы этого избежать пользователю необходимо перейти в раздел «Настройки» личного кабинета и найти пункт «События трансляции».

Развернув этот пункт отобразится поле «Отображение меню в правой панели», в котором необходимо установить числовое значение. Какое значение пользователь выставит в поле, столько записей в журнале события будет отображаться.

Создание трансляции
Пользователь в личном кабинете переходит в раздел «Трансляция» и выбирает категорию «Создать».

Дальше необходимо создать нужное количество страниц и на каждой выбрать зону с помощью функционала «Добавить зону».

Настроив количество страниц и зон пользователь должен открыть «Настройки страницы» кликом по иконке.

В правой части экрана откроется список настроек, в котором необходимо обратить внимание на два параметра:
- события — позволяет добавить события к трансляции (в данном случае событие уже было подготовлено ранее в шагах выше);
- следующая страница — позволяет выбрать на какую страницу будет происходить переключение или зациклить страницу саму в себе при наличии события.

Добавление события в трансляцию
Чтобы добавить готовое событие пользователю необходимо кликнуть на иконку «+».

После клика по иконке откроется новое модальное окно в котором необходимо перейти в блок «Выбор события из списка» и кликнуть на нужное событие.

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

Для применения настроек необходимо нажать на кнопку «Сохранить» в нижней части экрана. Если выбранные настройки применять не нужно кликнуть на кнопку «Отменить» слева.

Изменение настроек личного кабинета SmartPlayer
Для корректной работы событий пользователям необходимо будет зайти в раздел «Настройки» личного кабинета в двух случаях:
- Создания и получения API-ключа для POST-запроса к серверу SmartPlayer.
- Настроить количество отображаемых событий в категории «События трансляции».
Изменения серверной логики
Новая реализация подразумевала также и переделку серверного приложения. На данный момент серверное приложение принимает вебхуки (webhook) через POST-запрос по API, которая позволяет серверу клиента обращаться к серверу SmartPlayer. Для формирования POST-запроса на вебхук (webhook) пользователю необходимо передать объект в котором есть event_id и value для корректной работы событий, а также те параметры которые были выбраны в качестве ключа события. Также необходимо добавить API-ключ, который генерируется в личном кабинете SmartPlayer. Токен API-ключа добавляется в post-запрос параметром "token".
Например: api/v2/broadcast-event?token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab
Запрос по адресу состоит из следующих частей:
- адрес сервера: https://develop.smartplayer.org/
- путь вебхука: api/v2/broadcast-event
- параметр токена: token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab
Из описанных выше частей собирается полноценные запрос описанный в примере.
Пример (отправка POST-запроса): https://develop.smartplayer.org/api/v2/broadcast-event?token=smartuser-d86f05c6-2e3a-4c15-931f-2b8f5ec249ab
В личном кабинете можно получить следующие данные:
- ключ события (процесс создания описан в создании события выше)
- идентификатор события (процесс описан в параметрах события выше)
- получение API-ключа в личном кабинете SmartPlayer (с процессом создания API-ключа можно ознакомиться здесь.
Дополнительная информация
Если данная статья не помогает использовать функционал по назначению или после ее прочтения остаются вопросы, их можно озвучить в разделе "Обсуждения" вверху страницы.

Также дополнительную информацию можно узнать на странице Как взаимодействовать пользователю с разделом "Обсуждения"