1

Импорт сообщений

Topic: Импорт сообщений

Приветствую всех!  Потребовалось импортировать сообщения, но как правильно реализовать это не знаю...
Сейчас делаю так:

1 шаг
- Авторизуюсь http://domen.my/login.html
- Получаю access_token=84215e640db51fa126c53f78387767ccF9D4CE6A3ERW6512848F10EBA70C2C23BF9E4B4B

2 шаг

        $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, 'http://domen.my/wialon/ajax.html?svc=token/login');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt ($ch, CURLOPT_POST, true);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, '&params=  {"token":84215e640db51fa126c53f78387767ccF9D4CE6A3ERW6512848F10EBA70C2C23BF9E4B4B}');
    $out = curl_exec($ch);    
    curl_close($ch);  
    echo $out;

- Получаю eid = 63fb3674d4064f27bd165234cbb4f6be

3 шаг

$ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, 'http://domen.my/wialon/ajax.html?svc=exchange/import_messages&sid= 63fb3674d4064f27bd165234cbb4f6be');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt ($ch, CURLOPT_POST, true);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, '&params={"itemId":352848024765386}&messages_filter_import_file{"filename":"http://domen.my/wialon/352848026333233.wln"}');
         $out = curl_exec($ch);
      curl_close($ch);   

         echo $out;

В ответ получаю сообщение {"error":7} т.е. "Доступ запрещен"

Что делаю не так? Или curl не стоит использовать? А что тогда стоит?
P.S. Учетная запись с полным доступом.

ТОО "Мониторинг плюс"
www.m-plus.kz
2

Импорт сообщений

Re: Импорт сообщений

Добрый день

P.S. Учетная запись с полным доступом.

Наиболее вероятная причина ошибки 7 - это всё же нехватка прав.
Проверьте, пожалуйста, наличие права "Импорт сообщений" для объекта

3

Импорт сообщений

(edited by mplus 24/12/2015 12:01:07)

Re: Импорт сообщений

Наиболее вероятная причина ошибки 7 - это всё же нехватка прав.
Проверьте, пожалуйста, наличие права "Импорт сообщений" для объекта

Токен получаю от самой главной учетной записи.

ТОО "Мониторинг плюс"
www.m-plus.kz
4

Импорт сообщений

Re: Импорт сообщений

Токен получаю от самой главной учетной записи.

Возможно, токен не обладает достаточными правами.
Попробуйте получить токен по ссылке http://domen.my/login.html?access_type=-1 (подробнее об access_type в документации)

5

Импорт сообщений

Re: Импорт сообщений

Попробуйте получить токен по ссылке http://domen.my/login.html?access_type=-1 (подробнее об access_type в документации)

Все тщетно...
Неужели никто не делал такой механизм?

ТОО "Мониторинг плюс"
www.m-plus.kz
6

Импорт сообщений

Re: Импорт сообщений

Рабочий код, необходимо заменить сверху 4 переменные

    $url = 'http://domen.my';
    $token = '84215e640db51fa126c53f78387767ccF9D4CE6A3ERW6512848F10EBA70C2C23BF9E4B4B';
    $unitId = 352848024765386;
    $filename = 'msgs.wln';

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url.'/wialon/ajax.html?svc=token/login');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt ($ch, CURLOPT_POST, true);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, 'params={"token":'.$token.'}');
    $out = curl_exec($ch);
    curl_close($ch);
    $out = json_decode($out, true);

    $sid = $out['eid'];
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url.'/wialon/ajax.html?svc=exchange/import_messages&sid='.$sid);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($ch, CURLOPT_POST, true);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, array(
        'file' => '@' . realpath('msgs.wln'),
        'params' => '{"itemId":'.$unitId.'}'
    ));
    $out = curl_exec($ch);
    curl_close($ch);

    echo $out;

Ещё раз уточню, что в случае ошибки 7 - Доступ запрещен - проблема именно в правах (неполный токен или нет прав на объект)

7

Импорт сообщений

Re: Импорт сообщений

Ещё раз уточню, что в случае ошибки 7 - Доступ запрещен - проблема именно в правах (неполный токен или нет прав на объект)

Вот настройки доступа

  • Импорт сообщений
ТОО "Мониторинг плюс"
www.m-plus.kz
8

Импорт сообщений

Re: Импорт сообщений

Попробуйте перед импортом выполнить запрос core/search_item
с параметрами id - идентификатор объекта, в который хотите импортировать сообщения (в вашем примере 352848024765386) и flags = 1.
В полученном результате интересует поле item['uacl'] - уровень доступа к объекту

9

Импорт сообщений

Re: Импорт сообщений

shmi wrote:

Попробуйте перед импортом выполнить запрос core/search_item
с параметрами id - идентификатор объекта, в который хотите импортировать сообщения (в вашем примере 352848024765386) и flags = 1.
В полученном результате интересует поле item['uacl'] - уровень доступа к объекту

7 - Доступ запрещен
Может и правда я не правильно токен получаю?
Открываю браузер -> ввожу в адресную строку http://domen.my/login.html?access_type=-1 -> Ввожу логин и пароль -> Получаю в адресной строке access_token -> присваиваю переменной $token -> получаю ошибку доступа....

ТОО "Мониторинг плюс"
www.m-plus.kz
10

Импорт сообщений

Re: Импорт сообщений

Скорее всего, вы просто указываете неверный itemId.
itemId - уникальный системный идентификатор, который в интерфейсе не отображается. Чтобы узнать id объекта, найдите все объекты с помощью запроса core/search_items с параметрами

spec:{
    itemsType:"avl_unit",
    propName:"sys_name",
    propValueMask:"*",
    sortType:"sys_name"
},
flags:0x1
force:1,            
from:0,            
to:0

В ответ придёт массив объектов, поле id в каждом и есть системный идентификатор, который надо использовать при импорте