Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
ВладимирРябов
Добрый день!
Настраиваю отправку всех сообщений на внешний сервер. (прошу сильно не пинать, многое делаю методом "тыка")
Код такой:
Код: Выделить всё
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"
Сообщения то отправляются, то нет. Сообщение из одного слова отправляется всегда, более одного слова не понятно по какому алгоритму- могут отправиться, а могут и нетр.
Например, фраза "прием сообщений из чата" отправляется всегда, причем можно её вводить вручную и отправлять, можно копировать и вставлять. А вот любое сочетание двух слов из этой фразы не отправляются никогда.
Так же не отправляются ссылки.

Помогите, добры люди, пожалуйста.
ВладимирРябов
Заменил все пробелы на %20, затем на удаленном сервере сделал обратную операцию- теперь отправляются сообщения любой длинны.
Но! Теперь сообщения не отправляются, если есть хоть один знак препинания или символ типа слэш.
Аватара пользователя
Андрей Раков
Добрый день.

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

НО, не всю ссылку, а только значение параметра!
ВладимирРябов
Да, я так и сделал, сейчас все работает, не успел отписаться!
Я с этого и начинал пробовать, но нет или не так использовал, поэтому сразу не получилось.
Сейчас рабочий вариант такой:
Код: Выделить всё
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% скрипта!
Аватара пользователя
Алексей Пикуров
Ок, переношу тему в раздел "Боты, плагины, скрипты и разные дополнения".