1

Получение телефона объекта по API

(edited by DREIZER 22/02/2023 23:52:26)

Topic: Получение телефона объекта по API

Добрый вечер уважаемые! Вопрос связан с JAVA-SDK официальный пакет для работы в Java приложениях, пример(github.com/wialon/java_wialon_sdk/blob/master/JavaWialonSdkExamples/src/com/wialon/java/test/UnitsSearchExample.java):

При попытке обратится к поиску с помощью API с запросом "дай мне пожалуйста ВСЕ объекты(units)"(запрос из примера в документации) с флагами:

      SearchSpec searchSpec = new SearchSpec();
        //Set items type to search avl_units
        searchSpec.setItemsType(Item.ItemType.avl_unit);
        //Set property name to search
        searchSpec.setPropName("sys_name");
        //Set property value mask to search all units
        searchSpec.setPropValueMask("*");
        //Set sort type by units name
        searchSpec.setSortType("sys_name");

и собственно самим запросом:

 session.searchItems(searchSpec, 1, Item.dataFlag.base.getValue(), 0, 10, new SearchResponseHandler() -> ...);

Мы получаем 10 первых объектов, с информацией по базовому флагу. В него входит необходимый для расшифровки JSON атрибут cls. Пока все в порядке, и хорошо работает с SDK на Java предоставленным Wialon в документации. Однако, нам необходимо получить номера телефонов данного объекта, для этого мы используем флаг DEC 256 (sdk.wialon.com/wiki/ru/sidebar/remoteapi/apiref/format/unit#osnovnye_svojstva) в котором указано, что эти телефоны есть.

 session.searchItems(searchSpec, 1, 256L, 0, 10, new SearchResponseHandler() -> ...);

(да, в вашей библиотеке отсутствует данный флаг, нужно добавить, а то придется делать форк)

В этом случае:
1. мы теряем необходимый атрибут cls(его просто не отсылается, из-за другого флага, и ответ падает с Null, т.к. это поле обязательно).
2. Номера телефонов нам там в ответе и не дают.

Окей, тогда мы пробуем флаг 4611686018427387903 DEC а-ля дай нам пожалуйста всю информацию по объекту.

 session.searchItems(searchSpec, 1, 4611686018427387903L, 0, 10, new SearchResponseHandler() -> ...);

(да, этого флага в библиотеке тоже нет) Как и телефонов.

Главный вопрос:
1. Как достать номера телефонов и имя объекта одним запросом? А если нельзя одним, тогда несколькими?

Заранее спасибо за ответы.

2

Получение телефона объекта по API

Re: Получение телефона объекта по API

DREIZER здравствуйте, библиотека Java уже не дорабатывается, с нашей стороны рекомендуется использовать Remote API
В целом, касательно использования флагов. Чтобы получить информацию сразу по нескольким свойствам элемента, нужно использовать сумму значений флагов (в DEC). В вашем случае, если нужна базовая информация и дополнительные свойства (тип устройства, IMEI, телефон), то значение флага 257 (1+256).

Пример http запроса: https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items&params={"spec":{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"*","sortType":"sys_name"},"force":1,"flags":257,"from":0,"to":0}&sid=

Anton Zinovyev
Technical Care Engineer (L2)
Wialon
3

Получение телефона объекта по API

(edited by DREIZER 23/02/2023 17:45:43)

Re: Получение телефона объекта по API

Спасибо за ответ! Однако 257 флаг не дает номера телефона ни на один объект, уточните пожалуйста, как можно его получить.

Запрос из Postman'a

hst-api.wialon.com/wialon/ajax.html?svc=core/search_items&params={"spec":{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"*","sortType":"sys_name"},"force":1,"flags":257,"from":0,"to":5}&sid=

Пример, ответ с флагом 257:

   ...
{
            "nm": " р319су790 серый",
            "cls": 2,
            "id": какой-то id,
            "mu": 0,
            "act": 1,
            "dactt": 0,
            "vp": null,
            "retr": null,
            "uacl": какие-то цифры
        },
...

Этот же элемент внутри CSM скриншотом во вложении

  • Получение телефона объекта по API
4

Получение телефона объекта по API

Re: Получение телефона объекта по API

DREIZER возможно используется токен с базовым флагом 256, а для просмотра настроек подключения нужен флаг (access_type) 512. Попробуйте создать токен с комбинированными правами 768 или с полными -1 и повторите выполнение запроса.
Если результат не изменится, направьте запрос на support@gurtam.com с указанием полного текста запроса и токена.
Описание возможных флагов прав токена -- https://sdk.wialon.com/wiki/ru/sidebar/ … rmat/token

Anton Zinovyev
Technical Care Engineer (L2)
Wialon
5

Получение телефона объекта по API

Re: Получение телефона объекта по API

zant wrote:

DREIZER возможно используется токен с базовым флагом 256, а для просмотра настроек подключения нужен флаг (access_type) 512. Попробуйте создать токен с комбинированными правами 768 или с полными -1 и повторите выполнение запроса.
Если результат не изменится, направьте запрос на support@gurtam.com с указанием полного текста запроса и токена.
Описание возможных флагов прав токена -- https://sdk.wialon.com/wiki/ru/sidebar/ … rmat/token

И вы абсолютно правы! Токен с флагом 512 решает данный вопрос. Спасибо, закрыто.