Тема: Чтение уведомлений
Подскажите, как правильно пользоваться svc=resource/get_notification_data
В частности, itemId - это unit?
И где брать col?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Подскажите, как правильно пользоваться svc=resource/get_notification_data
В частности, itemId - это unit?
И где брать col?
Надеюсь, речь о Wialon Hosting.
Из описания команды resource/get_notification_data, для её использования необходимо 2 параметра:
itemId ID ресурса
col массив идентификаторов уведомлений
Стандартная процедура работы с элементами ресурсов:
1. Ищем ресурсы с помощью, например, core/search_items. Во флагах указываем какая информация нас интересует (базовые свойства - 0x1, уведомления - 0x400, подробнее на странице format/resource )
2. В ответе приходит массив items, каждый элемент которого имеет вид
{
"nm":<text>, /* название */
"cls":<uint>, /* ID базового класса "avl_resource" */
"id":<uint>, /* ID ресурса */
"uacl":<uint>, /* уровень доступа к ресурсу у текущего пользователя */
"unf":{
<text>:{ /* порядковый номер уведомления */
"id":<long>, /* ID */
"n":<text>, /* название */
"ta":<uint>, /* время активации */
"td":<uint>, /* время деактивации */
"ma":<uint>, /* максимальное количество срабатываний */
"fl":<uint>, /* флаги уведомлений */
"ac":<uint>, /* количество срабатываний */
"un":[<long>], /* массив идентификаторов объектов */
"act":[<text>], /* список действий */
"trg":<text>, /* тип контроля */
"crc":<long> /* контрольная сумма бинарного представления уведомления */
}, ...
},
"unfmax":<long>, /* максимальное количество уведомлений, разрешенное тарифным планом */
}
Объект unf содержит базовую информацию об уведомлениях. Для получения полной информации и используется resource/get_notification_data
3. Все данные для resource/get_notification_data в пришедших данных есть.
В качестве itemId используется `"id":<uint>, /* ID ресурса */`
Пробежавшись по объекту unf собираем массив из интересующих уведомлений, добавляя туда `"id":<long> /* ID */`.
Описанный принцип работы подходит для всех элементов ресурсов: POI, геозон, водителей и др.
Не хостинг, у меня Pro.
Думаю, тут это тоже доступно. 0x400 заменил на "местное" 0x1000 и получил что-то вроде:
$ wialon-json 'svc=core/search_items¶ms={"spec":{ "itemsType":"avl_resource", "propName":"notifications", "propValueMask":"*", "sortType":"sys_unique_id" }, "force":"0", "flags":"0x1001", "from":"0", "to":"0xffffffff" }'| jq '.items[1].unf' | jq '.["1"]'
{
"nm": "Внезапно",
"un": [
2514,
2513,
2512,
2511,
...
654
],
"ac": 310,
"ma": 0,
"trg": {
"p": {
"upper_bound": 1,
"lower_bound": -1,
"min_speed": 0,
"sensor_name_mask": "Свет",
"sensor_type": "",
"max_speed": 100,
"merge": 1,
"reversed": 1
},
"t": "speed"
},
"id": 1,
"ta": 1396296000,
"mast": 30,
"td": 1428695999,
"tz": 134232128,
"cdt": 0,
"la": "ru",
"txt": "%UNIT% Превысил ограничение скорости. В %POS_TIME% двигался со скоростью %SPEED% около %LOCATION%\n\nПосмотреть на карте: %GOOGLE_LINK%",
"mpst": 0,
"act": [
{
"p": {
"email_to": "nobody@example.corp",
"html": 0,
"img_attach": 0,
"subj": "Внезапно"
},
"t": "email"
},
{
"p": {
"name": "Внезапно"
},
"t": "message"
},
{
"p": {
"flags": 1
},
"t": "event"
}
],
"mmtd": 0,
"sch": {
"wdm": 0,
"t2": 0,
"f1": 0,
"ymm": 0,
"f2": 0,
"mdm": 0,
"t1": 0
},
"fl": 1,
"cp": 60
}
Что из этого мне надо? Напишу наглядно, пусть и не очень правильно, с точки зрения jpath (jq):
{
ItemId: .items[1].id,
col: .Items[1].unf."1".id
}
Так правильно?
Или так:
{
ItemId: .items[1].id,
col: .Items[1].unf."1".un[1] /* 2514 */
}
У меня никак не работает, ни с 1, ни с 2514
Для PRO не существует полного и краткого JSON'a, и запроса svc=resource/get_notification_data тоже нет (он используется в Wialon Hosting/Local).
В ответе core/search_items приходит JSON со всей доступной информацией об уведомлениях.