update_items
Для добавления, удаления или очистки элементов, отслеживаемых в сессии, используйте метод events/update_items. Элементами могут быть объекты или ресурсы. Список доступных детекторов см. в разделе Детекторы.
Обновления событий доставляются в данных units_update метода avl_evts или через events/check_updates, в зависимости от флагов событий.
Если вы отслеживаете только объекты, можно также использовать events/update_units, но для новых интеграций используйте events/update_items.
Конечная точка
Формат запроса зависит от режима работы.
Для добавления элементов в сессию и установки детекторов для отслеживания каждого из них:
svc=events/update_items¶ms={
"mode": "add",
"items": [
{
"id": <long>,
"detect": {
"<detector_name>": <long>
}
},
...
],
"evt_flags": <uint> /* необязательный */
}
Для прекращения отслеживания событий для определённых элементов:
svc=events/update_items¶ms={
"mode": "remove",
"items": [
<long>
]
}
Для прекращения отслеживания событий для всех элементов в сессии:
svc=events/update_items¶ms={
"mode": "clear"
}
Для получения списка элементов в сессии и их настроек детекторов:
svc=events/update_items¶ms={
"mode": "list"
}
Параметры
Запрос может содержать следующие параметры:
| Параметр | Описание |
|---|---|
mode |
Обязательный параметр. Режим работы: add, remove, clear или list. |
items |
Обязательный параметр для add и remove. Элементы для добавления или удаления. |
id |
Обязательный для add. ID элемента: ID объекта или ID ресурса. |
detect |
Обязательный для add. Детекторы для отслеживания и их фильтры. См. раздел Детекторы. |
evt_flags |
Необязательный. Флаги событий. См. раздел Флаги событий. |
В режиме add добавляются только те элементы, на которые текущий пользователь имеет права доступа на просмотр. Если указанный элемент уже отслеживается, его конфигурация детекторов заменяется. Недопустимые значения отдельных фильтров детекторов игнорируются.
Детекторы
Параметр detect определяет, какие детекторы отслеживаются в сессии. Для каждого детектора укажите значение фильтра, которое выбирает события для отслеживания. Доступные детекторы зависят от типа элемента.
| Тип элемента | Детекторы |
|---|---|
| Объект | Все детекторы событий объектов. Полный список и значения фильтров см. в разделе Типы детекторов событий на странице events/update_units. Используйте значение фильтра для выбора событий:
|
| Ресурс | Детектор resource_drivers, который регистрирует события назначения водителей. Укажите ID водителя для отслеживания назначений этого водителя или 0 для отслеживания назначений всех водителей ресурса. |
В Wialon Local детектор
resource_driversдоступен начиная с версии 2604; детекторeco_drivingнедоступен.
Для отслеживания нескольких детекторов с одинаковым фильтром перечислите их через запятую:
"detect":{"sensors,lls,ignition":0}
Для отслеживания всех детекторов, доступных для элемента, используйте значение *. Для объекта это включает все детекторы объектов; для ресурса — все детекторы, доступные для ресурсов, в настоящее время это resource_drivers.
"detect":{"*":0}
Флаги событий
Значение evt_flags сохраняется в сессии, поэтому достаточно установить его один раз. Значение по умолчанию — 0, что означает, что обновления извлекаются с помощью events/check_updates.
Чтобы получать обновления событий в данных units_update метода avl_evts, установите флаг доставки 0x200 (512). Вы можете комбинировать его с флагами детализации в битах от 0x1 до 0x100. Если флаги детализации не указаны, используется значение 0x7, которое возвращает основные данные события, данные, зависящие от детектора, и параметры сообщения, связанного с событием.
Если установлен флаг
0x200, events/check_updates возвращает пустой объект. Чтобы получать обновления с помощьюevents/check_updates, не устанавливайте этот флаг.
Ответ
При успешном выполнении запроса формат ответа зависит от режима работы. В противном случае возвращается код ошибки.
Для режимов add, remove и clear возвращается общее количество отслеживаемых элементов:
{
"items": <uint> /* общее количество элементов, отслеживаемых в сессии; 0 после режима clear */
}
Для режима list возвращаются отслеживаемые элементы и их настройки детекторов. Поле evt_flags возвращается только в том случае, если в сессии установлены флаги событий.
{
"items": [
{
"id": <long>, /* ID элемента */
"detect": {
"<detector_name>": <long> /* фильтр детектора */
}
},
...
],
"evt_flags": <uint>
}
Коды ошибок
| Код | Описание |
|---|---|
| 1 | Неправильный или устаревший SID запроса. |
| 4 | Ошибка валидации параметров. |
| 7 | Сервис событий недоступен. |
Примеры
В следующих примерах показаны наиболее распространённые операции с методом.
Подписка на события назначения водителей
Для отслеживания назначений всех водителей ресурса с ID 1003 используйте следующий запрос:
svc=events/update_items¶ms={
"mode": "add",
"items": [
{
"id": 1003,
"detect": {
"resource_drivers": 0
}
}
]
}
Ответ:
{
"items": 1
}
Для получения обновлений вызовите events/check_updates.
Получение обновлений в avl_evts
В следующем запросе значение evt_flags 0x222 (546) включает флаг доставки 0x200 с флагами детализации 0x2 (данные, зависящие от детектора) и 0x20 (отформатированные значения детектора).
svc=events/update_items¶ms={
"mode": "add",
"items": [
{
"id": 1003,
"detect": {
"resource_drivers": 0
}
}
],
"evt_flags": 546
}
Обновления возвращаются в данных units_update метода avl_evts, сгруппированные по ID элемента, детектору и ID водителя. Структуру объектов событий см. в events/check_updates.
Получение списка отслеживаемых элементов
Чтобы проверить, какие элементы отслеживаются в сессии, используйте следующий запрос:
svc=events/update_items¶ms={
"mode": "list"
}
Ответ показывает, что отслеживаются два объекта и все водители ресурса с ID 1003:
{
"items": [
{
"id": 1026,
"detect": {
"sensors,lls,ignition,ev,health_check": 0
}
},
{
"id": 1082,
"detect": {
"sensors,lls,ignition,ev,health_check": 0
}
},
{
"id": 1003,
"detect": {
"resource_drivers": 0
}
}
],
"evt_flags": 546
}