API для получения триггерных событий плеером
Содержание раздела:
Общее описание запроса
Запрос направляется на встроенный HTTP сервер плеера для запуска воспроизведения определенного объявления.
Встроенный HTTP сервер плеера работает на интерфейсе 127.0.0.1
и не требует авторизации.
Base URL: http://127.0.0.1:9036/
GET current-playlist?frameId=<frameId>
Текущий плейлист для фрейма
{
"playlist": [1, 2, 13],
"playlistEndTime: "12:12:45 09.05.2019", //optional
"currentIndex": 0,
"currentAdvertisement": 13, //optional
"lastTime": 3000
}
playlist
- список id объявлений текущего плейлиста
playlistEndTime
- время, до которого плейлист актуален (HH:mm:ss dd.MM.yyyy
)
currentIndex
- текущая позиция в списке объявлений
lastTime
- оставшееся время в миллисекундах для текущего объявления
GET advertisements
Текущий плейлист для фрейма
[
{
"frameId": 7922,
"items": [
{
"advertisementId": 33428,
"filePath": "C:\\Users\\admin\\AppData\\Local\\CityScreen\\CSPlayer\\screen\\files\\metro_stat_ScreenShots\\index.html",
"type": "interactive",
"name": "metro_stat_ScreenShots.zip"
},
{
"advertisementId": 32045,
"url": "https://google.com",
"filePath": "",
"type": "web_site",
"name": "https://google.com"
},
{
"advertisementId": 33526,
"filePath": "C:\\Users\\admin\\AppData\\Local\\CityScreen\\CSPlayer\\screen\\files\\1_Taksi_Uber_Yandex_5siek_Diekabr_600_300.mp4",
"type": "video",
"name": "1_Такси_Uber(Yandex)_5сек_Декабрь"
},
{
"advertisementId": 33916,
"filePath": "C:\\Users\\admin\\AppData\\Local\\CityScreen\\CSPlayer\\screen\\files\\3_Taksi_Uber_Yandex_5siek_Diekabr_600_300.mp4",
"type": "video",
"name": "3_Taksi_Uber_Yandex_5siek_Diekabr_.mp4"
},
{
"advertisementId": 33763,
"filePath": "C:\\Users\\admin\\AppData\\Local\\CityScreen\\CSPlayer\\screen\\files\\VIRA_STROY_Svoboda_5s_1.jpeg",
"type": "picture",
"name": "VIRA_STROY_Svoboda_5s"
}
]
}
]
frameId
- Id фрейма
items
- список доступных объявлений для текущего фрейма
advertisementId
- Id объявления
filePath
- Путь до файла объявления
type
- Тип объявления
name
- Название объявления
POST media-metering
OTS
{
period: 30000, // presence validity period in ms
count: 10, // может не совпадать с числом маков/людей
macAddresses:
[ //optional
{
class: "WIFI",
signal: "-89", //optional
address: "A3FFD0897214"
},
{
class: "BT",
signal: "-89", //optional
address: "1234567890AB"
},
],
people:
[ //optional
{
gender: "MALE",
age: 21, //optional
ageSegment: "20-30",
uuid: null //optional
},
{
gender: "FEMALE",
age: 69, //optional
ageSegment: "60-70",
uuid: null //optional
}
]
}
POST execute-trigger/<frameId>
Триггеры
Тело запроса:
{
"trigger": "18",
"type": "interrupt",
"timeout": 1
}
-
trigger
— название триггера объявления, обязательное поле; -
type
— тип триггера, обязательное поле; -
timeout
— время в миллисекундах, обязательное для некоторых типов.
Типы триггеров
тип | описание |
---|---|
interrupt | показать немедленно |
queue-or-interrupt | показать в течение n сек, если время до конца объявления меньше времени таймаута. Или показать после таймаута |
queue-or-discard | показать в течение n сек, если время до конца объявления меньше времени таймаута. Или отменить триггер |
queue | поставить в очередь следующим |
Поле timeout
обязательно для типов:
-
queue-or-interrupt
-
queue-or-discard
Ответы сервера
200 OK
{
"trigger": "18",
"timeout": 2000
}
timeout
— время в мс до момента, когда плеер начнет показ объявления по триггеру.
404 Not found
Если такого фрейма или триггерного события не найдено на плеере.
{
"error": 404,
"reason": "Frame %d not found",
"trigger": "18",
}
400 Bad request
Ошибка в запросе или теле запроса.
{
"error": 400,
"reason": "Error message",
"trigger": "18",
}
412 Precondition Failed
В случае, если невозможно показать объявление по триггеру с типом queue-or-discard
(условие по времени не может быть выполнено).
{
"error": 412,
"reason": "Error message",
"trigger": "18",
"possible-timeout": 7000
}