Подія, що виникає в момент прийому сервером приватного повідомлення від одного користувача іншому. При надсиланні приватного повідомлення за допомогою функції 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    = '[email protected]';
  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) за аналогією з будь-яким поштовим клієнтом.

 

Дивитися ще

FormatDateTime

mConvertMsgToPlainText

mGetUserFullNameByPreset

mGetUserPrimaryEmail

mIsUINOnline

Now

SendEmail