Страница 1 из 1

Отправка сообщений на внешний сервер

СообщениеДобавлено: Вт окт 27, 2020 10:32 am
ВладимирРябов
Добрый день!
Настраиваю отправку всех сообщений на внешний сервер. (прошу сильно не пинать, многое делаю методом "тыка")
Код такой:
Код: Выделить всё
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
  sURL, sHeaders, s: string;
begin
    sURL := 'http://webapi:[email protected]:4055/execsvcscript?name=MyChat1&startparam1=';
    s := '{}';
    JSONSetInteger(s, 'UINFrom', iUIN); 
    JSONSetInteger(s, 'UINTo', iUINTo);
    JSONSetString(s, 'Msg', mConvertMsgToPlainText(sMsg, iMsgType));
 
    sHeaders := EncodeBase64(s);
    mHTTPSendGetMessage(sURL+sHeaders, sHeaders, 1000);
 
  result := true;
end;

begin

end.


JSON отправляю в параметре "startparam1"
Сообщения то отправляются, то нет. Сообщение из одного слова отправляется всегда, более одного слова не понятно по какому алгоритму- могут отправиться, а могут и нетр.
Например, фраза "прием сообщений из чата" отправляется всегда, причем можно её вводить вручную и отправлять, можно копировать и вставлять. А вот любое сочетание двух слов из этой фразы не отправляются никогда.
Так же не отправляются ссылки.

Помогите, добры люди, пожалуйста.

Re: Отправка сообщений на вшешний сернвер

СообщениеДобавлено: Вт окт 27, 2020 12:08 pm
ВладимирРябов
Заменил все пробелы на %20, затем на удаленном сервере сделал обратную операцию- теперь отправляются сообщения любой длинны.
Но! Теперь сообщения не отправляются, если есть хоть один знак препинания или символ типа слэш.

Re: Отправка сообщений на внешний сервер

СообщениеДобавлено: Вт окт 27, 2020 1:57 pm
Андрей Раков
Добрый день.

Перед отправкой, параметр нужно закодировать с помощью EncodeURL:
https://nsoft-s.com/mcserverhelp/index. ... odeurl.htm

НО, не всю ссылку, а только значение параметра!

Re: Отправка сообщений на внешний сервер

СообщениеДобавлено: Вт окт 27, 2020 2:06 pm
ВладимирРябов
Да, я так и сделал, сейчас все работает, не успел отписаться!
Я с этого и начинал пробовать, но нет или не так использовал, поэтому сразу не получилось.
Сейчас рабочий вариант такой:
Код: Выделить всё
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
  sURL, sHeaders, s: string;
begin
    sURL := 'http://webapi:[email protected]:4055/execsvcscript?name=MyChat1&startparam1=';
    s := '{}';
    JSONSetInteger(s, 'UINFrom', iUIN); 
    JSONSetInteger(s, 'UINTo', iUINTo);
    JSONSetString(s, 'Msg', mConvertMsgToPlainText(sMsg, iMsgType));
 
    sHeaders := EncodeBase64(s);
    mHTTPSendGetMessage(sURL+EncodeURL(sHeaders), sHeaders, 1000);
 
  result := true;
end;

begin

end.


Корректно передается все. И знаки препинания и ссылки.
Огромное спасибо. Буду дальше допиливать сервис:в MyChat будут сыпаться сообщения от абонентов из ВК, Telegram и Viber, возможно WhatsApp. Операторы будут отвечать в чате MyChat, а сообщения будут уходить абонентам в нужном направлении.

Отличный сервис!

Огромное спасибо разработчикам, лично Alexey Pikurov, который удаленно подключился и сделал 99% скрипта!

Re: Отправка сообщений на внешний сервер

СообщениеДобавлено: Вт окт 27, 2020 4:34 pm
Алексей Пикуров
Ок, переношу тему в раздел "Боты, плагины, скрипты и разные дополнения".