1

Тип действия - отправить мобильное уведомление. Создание уведомления.

Тема: Тип действия - отправить мобильное уведомление. Создание уведомления.

Здравствуйте,

В проекте создается перечень уведомлений для объекта методом createNotification(obj, code).
В документации  https://sdk.wialon.com/wiki/ru/local/re … ation_data не сказано как установить  тип действия - "отправить мобильное уведомление" необходимому пользователю?

Поскажите пожалуйста.

    var obj = { ma:0, fl:1, tz:7200, la:"ru", 
                act: [  {t:"message", p:{color: "red"}}, 
                        {t:"email", p:{email_to: first_email, html: 0, img_attach: 0, subj:""}},
                        {t:"event", p:{flags: 0}}], // default values
                sch: { f1:0, f2: 0, t1: 0, t2: 0, m: 0, y: 0, w: 0}, 
                txt: "%UNIT%: НАЖАТА ТРЕВОЖНАЯ КНОПКА!",
                mmtd: 0, cdt: 0, mast: 0, mpst: 0, cp: 0, 
                n: "ТРЕВОЖНАЯ КНОПКА", un: un, ta: 0, td: 0,  
                trg: {// Notification trigger
                        t:"sensor_value",
                        p: {lower_bound: 1, merge: 1, prev_msg_diff: 0, sensor_name_mask: "Тревожная кнопка", 
                            sensor_type: "digital", type: 0, upper_bound: "1"}// trigger parameters 
        } 
    };
2

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

oberemchuk, чтобы отправить мобильное уведомление, нужно добавть в массив действий объект такого вида: {"t":"mobile_apps","p":{"apps":"{\"<app_name>\":[<user_ids>]}"}}
Чтобы получить список авторизованных мобильных приложений для пользователей, добавьте датафлаг 0x00000800 (2048) в запрос search_items или update_data_flags. В ответе будет свойство mapps.
Имя интересующего приложения нужно подать в поле <app_name>, а в поле <user_ids> массив id пользователей, кому нужно это уведомление.

Head of Wialon Local Department
Gurtam
3

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

deal,
Верно ли я Вас понимаю? В ответе мне приходит пустой ответ.

function init() {
    var sess = wialon.core.Session.getInstance(); 
    var flag_mapps=2048;
     
    sess.updateDataFlags( 
        [{type: "type", data: "mapps", flags: flag_mapps, mode: 0}], 
        function (code) { 
            if (code) { msg(wialon.core.Errors.getErrorText(code)); return; }   
        var mapss = sess.getItems("mapps");
        console.log(mapss);
    });
}
4

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

oberemchuk, не совсем верно. Флаг правильный (разве что можно добавить 1, чтобы были имена и id пользователей), но в data нужно подать "user". И в коллбэке вызвать sess.getItems("user")
И у пользователей будет свойство mapps.

Head of Wialon Local Department
Gurtam
5

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

deal,
Еще один вопрос.
В случае установки флага в 2048, получаю в ответе "wialon.item.User[8-0]" . А как запросить свойство mapps?


function init() {
    var sess = wialon.core.Session.getInstance(); 
    var flag_mapps=2048;
     
    sess.updateDataFlags( 
        [{type: "type", data: "user", flags: flag_mapps, mode: 0}], 
        function (code) { 
            if (code) { msg(wialon.core.Errors.getErrorText(code)); return; }   
        var mapss = sess.getItems("user");
        console.log(mapss);
    });
}
6

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

oberemchuk, нужно предварительно вызвать sess.loadLibrary("mobileApps"), а затем в коллбэке запроса для каждого пользователя вызывать user.getMobileApps()

Head of Wialon Local Department
Gurtam
7

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

deal,

Выполнил как Вы указываете, но .getMobileApps() отдает значение null.

function init1() {
    var sess = wialon.core.Session.getInstance(); 
    var flag_mapps=2049;
    sess.loadLibrary("mobileApps"); 
    sess.updateDataFlags( 
        [{type: "type", data: "user", flags: flag_mapps, mode: 0}], 
        function (code) { 
            if (code) { msg(wialon.core.Errors.getErrorText(code)); return; }   
        var mapps = sess.getItems("user")   ;
        for (var i = 0; i< mapps.length; i++)
        $("#mapps").append("<option value='"+ mapps[i].getId() +"'>"+ mapps[i].getMobileApps() +"</option>");
       
        var temp = $("#mapps").val();
    });
}

Проверил, если передавать его в масив действий, мобильное уведомление не создается

{t:"mobile_apps",p:{"apps":{mapps: [id_usr]}}}
8

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

oberemchuk, попробуйте сначала вывести в консоль мобильные приложения (если они есть):

        var users = sess.getItems("user");
        for (var i = 0; i< users.length; i++) {
              var user = users[i];
              console.log(user.getName(), user.getMobileApps());
        }

Кроме того функция getMobileApps возвращает массив приложений. Каждое приложение представляет из себя объект. Поэтому нельзя в таком виде добавлять приложения в селект. Нужно сначала посмотреть, что в массиве и в каждом элементе массива.
А имя брать из поля "n" объекта приложения в массиве.
Все эти имена приложений сложить в отдельный массив. И затем в цикле по этому массиву добавить элементы селекта.

Head of Wialon Local Department
Gurtam
9

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

Здравствуйте  deal,

К сожалению у мнея не выходид создать уведомление.
Как ранее Вы писали с помощью getMobileApps получаю имя приложения (app= "Wialon Local"), в idusr передаю ID необходимого пользователя
Проверьте пожалуйста, возможно я не верно передаю массив действий для мобильного уведомления?

{t:"mobile_apps", p:{app_name: app, user_ids: idusr}} 

deal пишет:

oberemchuk, чтобы отправить мобильное уведомление, нужно добавть в массив действий объект такого вида: {"t":"mobile_apps","p":{"apps":"{\"<app_name>\":[<user_ids>]}"}}
Чтобы получить список авторизованных мобильных приложений для пользователей, добавьте датафлаг 0x00000800 (2048) в запрос search_items или update_data_flags. В ответе будет свойство mapps.
Имя интересующего приложения нужно подать в поле <app_name>, а в поле <user_ids> массив id пользователей, кому нужно это уведомление.

10

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

oberemchuk, формат не верен. Должно быть:

{"t":"mobile_apps","p":{"apps":"{\"<app_name>\":[<user_ids>]}"}}

Замените

\"<app_name>\"

на значение app в экранированных кавычках, а

<user_ids> 

на значение idusr.
Должно получиться в таком виде:

{"t":"mobile_apps","p":{"apps":"{\"Wialon Local\":[12345]}"}}
Head of Wialon Local Department
Gurtam
11

Тип действия - отправить мобильное уведомление. Создание уведомления.

Re: Тип действия - отправить мобильное уведомление. Создание уведомления.

Спасибо! все вышло.