Событие, возникающее в момент приёма сервером приватного сообщения от одного пользователя — другому. При отправке приватного сообщения с помощью функции 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) по аналогии с любым почтовым клиентом.