Страница 1 из 1
Прием сообщений через API

Добавлено:
Чт май 07, 2020 3:17 pm
ВладимирШаблий
Драсьте всем!
Извиняюсь за то, что еще не успел перелопатить форум в поисках ответа на свой вопрос. Подскажите плиз - имеется ли возможность приема сообщений через апишник? (В документации не нашел такого, но вдруг недокументировано))
Если есть такое - ткните сопаткой пжлст...
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 3:21 pm
Алексей Пикуров
Добрый день.
Документация,
скриптовое событие OnRequestByREST.
Ловите запрос и делаете скриптом дальше то, что вам нужно. Переношу тему в раздел скриптов.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 3:35 pm
ВладимирШаблий
Ниче се... Это получается - пишем "свой" апи? Круто...
Спасибо за подсказку, пошел курить мануалы))
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 4:20 pm
ВладимирШаблий
А подскажите плиз, каким методом можно получить в скрипт список сообщений определенного чата?
И можно ли установить таймаут ответа клиенту?
Вообще глобальная задача - внешней программой зависнуть в режиме long-polling на сервере и при появлении новых сообщений в определенном чате - их, соотстветственно программой забирать. Возможно такое?
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 4:23 pm
Алексей Пикуров
каким методом можно получить в скрипт список сообщений определенного чата?
Загрузки сообщений из истории в скриптах ещё нет.
Может, логичнее, сбрасывать интересующие сообщения в файл, например, а вы внешней программой просто будете их подбирать? Или перехватчик сообщений в скрипте, а MyChat сервер REST запросом сбросит сообщение, куда вам надо.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 4:28 pm
ВладимирШаблий
Алексей Пикуров писал(а):Может, логичнее, сбрасывать интересующие сообщения в файл, например, а вы внешней программой просто будете их подбирать?
Хотелось бы без костылей по феншую и крайне желательно - в реалтайме. То есть в принципе даже не обязательна история, если б был метод "подхватывания" сообщений в реальном времени...
Алексей Пикуров писал(а):Или перехватчик сообщений в скрипте, а MyChat сервер REST запросом сбросит сообщение, куда вам надо.
Пока не понял о чем это
(только начал разбираться с начинкой))
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 4:31 pm
Алексей Пикуров
Перехват приватного сообщения:
OnPrivateMessage.
Отправка данных через REST:
HTTP(s) Get/Post запросы.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 4:36 pm
ВладимирШаблий
Алексей Пикуров писал(а):Перехват приватного сообщения: OnPrivateMessage.
Ага... Этим значт забираю сообщение и добавляю к примеру в массив...
Алексей Пикуров писал(а):Отправка данных через REST: HTTP(s) Get/Post запросы.
А этим
(если я правильно понял) - "вебхучу" собранные данные к себе? Если так, то не очень подходит. т.к. поднять вебхук на стороне проги - проблематично...
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 4:39 pm
Алексей Пикуров
Не надо никуда добавлять. Схватили — и отправили сразу. В общем, сами решайте, я не знаю детально вашей задачи, что ваша программа может, а что — нет.
Можно даже
email отправить 
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 5:35 pm
ВладимирШаблий
Вот такая схема возможна?
tQeYL83.png
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 6:02 pm
Алексей Пикуров
Это плохая схема, медленная и тормозящая будет. Правильно не спрашивать сервер периодически, а отправлять сообщение с самого сервера.
Можете на OnPrivateMessage отловить сообщение, сделать JSON и положить его в файл, например. А на RequestByRest смотреть, есть файл, и, если да — отдавать его и удалять файл на сервере.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 6:55 pm
Алексей Пикуров
P.S. Можете для временного хранения использовать
mDBStorageGetData/mDBStorageSetData. Не забудьте только удалять данные из базы. Ключ для доступа придумайте сами.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 7:49 pm
ВладимирШаблий
Алексей Пикуров писал(а):Это плохая схема, медленная и тормозящая будет. Правильно не спрашивать сервер периодически, а отправлять сообщение с самого сервера.
Дык вроде ж привел классическую схему петли лонгполинга, по которой работает множество чатов/мессенждеров... Сервер вешает клиента в "безответное" соединение в отдельном потоке на таймаут 20-100 секунд. При появлении сообщений - сервер [мгновенно] отдает клиенту контент и сбрасывает соединение (клиент в свою очередь его забирает и выполняет новый аналогичный запрос для "следующей порции"). Если на сервере ничего не появилось - просто выполняется сброс коннекта, клиент переподрубается и далее по кругу.
А через какую-то глобальную переменную нет возможности..? Если честно - не очень по душе затея с обменом через файл или базу... Давеча костылил нечто подобное на Pascal Script - в нем правда был объект TStringList и я обрабатывал его событие OnChange и перечитывал.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 7:50 pm
Алексей Пикуров
Глобальных переменных в скриптах пока нет. Я подумаю на будущие версии про это, но пока только так.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 9:23 pm
ВладимирШаблий
Что не так делаю..?
Код: Выделить всёfunction OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
begin
mDBStorageSetData('NewMessage123','Test message'); // не создается
result := true;
end;
begin
// mDBStorageSetData('NewMessage123','Test message'); {так работает}
end.
Код: Выделить всёfunction OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
var s:string;
begin
if mDBStorageKeyExists('NewMessage123') then
s:='true' else s:= 'false';
result := '{"msg":"'+s+'"}'; // {"msg":"false"}
end;
begin
end.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 9:30 pm
Алексей Пикуров
Я не знаю, что именно вы не так делаете

Событие срабатывает? Скрипт на событие OnPrivateMessage этот в дереве вы включили? Приватное сообщение оправляете в чате?
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 9:37 pm
ВладимирШаблий
Ха-ха,
ZQjSJe4.png
а я думал - это "просто белый квадратик"
![crazy [smilie=crazy.gif]](./images/smilies/crazy.gif)
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 9:41 pm
Алексей Пикуров
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 9:51 pm
ВладимирШаблий
Оффтоп: насчет картинок - видел, но (проверено на практике на свем форуме) - imgur - вечный сервис.
Re: Прием сообщений через API

Добавлено:
Чт май 07, 2020 9:56 pm
Алексей Пикуров
Это не важно. Мы просим вставлять картинки как приложения к сообщению, без ссылок на внешние сервисы. Спасибо за понимание.