1

Чтение уведомлений

Topic: Чтение уведомлений

Подскажите, как правильно пользоваться svc=resource/get_notification_data

В частности, itemId - это unit?
И где брать col?

2

Чтение уведомлений

(edited by shmi 02/06/2014 15:44:08)

Re: Чтение уведомлений

Надеюсь, речь о 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, геозон, водителей и др.

3

Чтение уведомлений

(edited by qx 03/06/2014 14:03:04)

Re: Чтение уведомлений

Не хостинг, у меня Pro.
Думаю, тут это тоже доступно. 0x400 заменил на "местное" 0x1000 и получил что-то вроде:

$ wialon-json 'svc=core/search_items&params={"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

4

Чтение уведомлений

(edited by shmi 03/06/2014 14:23:32)

Re: Чтение уведомлений

Для PRO не существует полного и краткого JSON'a, и запроса svc=resource/get_notification_data тоже нет (он используется в Wialon Hosting/Local).

В ответе core/search_items приходит JSON со всей доступной информацией об уведомлениях.