Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
sertak
Приведите, пжлста, тестовый пример отправки из браузера, что типа такого:
Код: Выделить всё
http://192.168.1.123:8081/API/?data={"cmd":"0011","UserName":"3","Message":"Hello","Subject":"Hello","APIStype":"phpbb","ServerKey":"PHbL-****"}
Мой пример не работает.
Аватара пользователя
Георгий Лысенко
Здравствуйте!

Пример работы приведен в справке.

Покажите ошибку, которую вам возвращает сервер.
Из того, что вижу сразу, вы должны провести urlencode для JSON, который отправляете.
sertak
Да, я оттуда и пытался сделать простой пример, убрав параметры типа Link, но у меня возвращает следующее:
Код: Выделить всё
{"Cmd":1,"Error":15,"hash":"ikOTyO0VkVj5GHD","Name":"phpbb","CMD":"6"}


В параметр UserName я передаю UIN, возможно так нельзя делать.
Аватара пользователя
Георгий Лысенко
Чего вы хотите добиться этой командой?

Приведенная в примере отправляет сообщение из форума phpBBна сервер.
sertak
Я хочу отправить тестовое сообщение пользователю с UIN = 3. Я не знаю назначение параметра Name, поэтому оставил его как есть. Было бы неплохо какое-то описание параметров и их возможных значений, может, я его не нашел просто.
sertak
Это парамеры для MyChat Integration API, для REST они такие же? Не нашел того же UserName, к примеру.
Аватара пользователя
Георгий Лысенко
Это парамеры для MyChat Integration API, для REST они такие же?

Да.

Вам нужно указать только UIN отправителя и получателя, остальная информация про пользователей уже есть на сервере.
sertak
Отправляю вот такой запрос:
Код: Выделить всё
http://192.168.1.223:8081/API/?data={"cmd":"0011","UserName":"3","Message":"Hello","Subject":"Hello","APIStype":"phpbb","ServerKey":"*****"}, декодированный он выглядит так: http://192.168.1.223:8081/API/?data={%22UserFrom%22:%221%22,%22UserTo%22:%223%22,%22Msg%22:%22Hellomsg%22,%22APIStype%22:%22mydata%22,%22***%22})


Сервер ничего не отвечает в браузере, но в логах сервера появляется такая строка:
Код: Выделить всё
[err  28:01:2019 13:35:49]: Hash not found:


Намекните, куда копать.
sertak
Прошу прощения, такой:
Код: Выделить всё
192.168.1.223:8081/API/?data={"UserFrom":"1","UserTo":"3","Msg":"Hellomsg","APIStype":"mydata","ServerKey":"*****"}
Аватара пользователя
Георгий Лысенко
Эта строка:
Код: Выделить всё
http://192.168.1.223:8081/API/?data={"cmd":"0011","UserName":"3","Message":"Hello","Subject":"Hello","APIStype":"phpbb","ServerKey":"*****"}

Отличается от этой:
Код: Выделить всё
http://192.168.1.223:8081/API/?data={%22UserFrom%22:%221%22,%22UserTo%22:%223%22,%22Msg%22:%22Hellomsg%22,%22APIStype%22:%22mydata%22,%22***%22}


Пожалуйста, внимательно читайте справку и примеры в ней:
Код: Выделить всё
$host = '192.168.10.100';
$portWEB = '80';
$typeOfConnection = 'http';
$integrationAPIKey = 'iddqd';

$cmd = '0002';
$userTo = '1';
$userFrom = '0';
$msg = 'hello';
$toolName = 'php';

$json = json_encode(array('cmd'=>$cmd, 'UserTo' =>$userTo, 'UserFrom' =>$userFrom, 'Msg'=>$msg, 'APIStype'=>$toolName, 'ServerKey'=>$integrationAPIKey));
$json = urlencode($json);

$URL = $typeOfConnection.'://'.$host.':'.$portWEB.'/API/?data=' . $json;

file_get_contents($URL);


Конкретно в вашем случае вы совсем не указали номер команды, который для отправки приватного сообщения должен быть '0002', не указали пароль IntegrationAPI сервера.
sertak
Да, Георгий, извините, неправильно скопировал.
Передаю 5 параметров:
UserFrom
UserTo
Msg
APIStype
ServerKey
sertak
Да, не хватало параметра cmd.

Вот рабочий пример:
192.168.1.223:8081/API/?data={"cmd":"0002","UserFrom":"1","UserTo":"3","Msg":"Hellomsg","APIStype":"mydata","ServerKey":"****"}

Спасибо за помощь!