MSL: скриптовое событие OnPrivateMessage
Событие, возникающее в момент приёма сервером приватного сообщения от одного пользователя — другому. При отправке приватного сообщения с помощью функции mSendPrivateMessage событие не возбуждается, чтобы избежать зацикливания.
Шаблон события
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
begin
// your own code
result := true;
end;
begin
end.
Вместо комментария может быть любой ваш код.
Описание параметров
Параметр |
Тип |
Значение |
iCID |
integer |
Connection ID клиента, уникальный сеансовый идентификатор в онлайн-структуре сетевых подключений к серверу; |
iUIN |
integer |
уникальный идентификатор отправителя сообщения (число >=0); |
iUINTo |
integer |
уникальный идентификатор получателя сообщения (число >=0); |
iMsgType |
integer |
|
sMsg |
string |
текст сообщения. |
Возвращаемое значение
По умолчанию функция должна возвращать true, однако, если вы решаете "подавить" приватное сообщение, можно вернуть false, и тогда отправленное сообщение будет уничтожено и не отобразится ни у отправителя, ни у получателя.
Пример
const
sHost = 'mail.yourmailserver.com';
sLogin = 'support@yourmailserver.com';
sPassword = 'yoursecretpassword';
iPort = 25;
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
sEmailTo, sEmailFrom, sTextBody, sNameFrom, sNameTo: string;
begin
result := true;
if not mIsUINOnline(iUINTo) then begin
sEmailTo := mGetUserPrimaryEmail(iUINTo);
sEmailFrom := mGetUserPrimaryEmail(iUIN);
if (length(sEmailTo)>0) and (length(sEmailFrom)>0) then begin
sNameFrom := mGetUserFullNameByPreset(iUIN, 0);
sNameTo := mGetUserFullNameByPreset(iUINTo, 0);
sTextBody := FormatDateTime('[dd.mm.yyyy hh:nn:ss]', Now)+
' '+
sNameFrom+
'> '+
mConvertMsgToPlainText(sMsg, iMsgType);
SendEmail(sHost, iPort, sLogin, sPassword, sEmailFrom, false, sEmailTo,
'Offline MyChat message for ' + sNameTo, sTextBody, 0, '');
end;
end;
end;
begin
end.
Скрипт отслеживает, если получатель приватного сообщения находится в офлайн (отключен от сети), то производится отправка копии сообщения на email этого человека. Все необходимые данные достаются из базы данных сервера MyChat.
Для корректной работы скрипта вам нужно правильно заполнить раздел констант параметрами вашего почтового сервера (host, login, password и port) по аналогии с любым почтовым клиентом.