MyChat Scripts Engine: mSendPrivateMessage

MyChat Scripts Engine: mSendPrivateMessage

Отправить приватное сообщение от имени одного пользователя — другому.

 

Синтаксис

function mSendPrivateMessage(iUINFrom, iUINTo: integer; sMsg: string; iMsgType: integer; bSaveToHistory: boolean): integer;

 

Параметры и возвращаемые значения

Параметр

Тип

Значение

iUINFrom

integer

идентификатор отправителя. Можно использовать встроенного робота (UIN 0) или любого другого зарегистрированного на сервере пользователя;

iUINTo

integer

идентификатор получателя сообщения (UIN);

sMsg

string

текст сообщения. Можно использовать переносы строк (CRLF);

iMsgType

integer

тип приватного сообщения;

bSaveToHistory

boolean

сохранять сообщение в истории сообщений или нет. Если = false, то сообщение нигде не будет зафиксировано, ни в истории сообщений клиентов, ни на сервере.

 

Результат функции

Результат

Значение

0

всё Ок, сообщение успешно отправлено;

-1

UIN отправителя не существует;

-2

UIN получателя не существует;

-3

сообщение успешно отправлено в офлайн, получатель не подключен к серверу;

-5

сообщение не может быть пустым.

 

Пример

Функция "повешена" на обработчик OnPrivateRequest. При попытке открытия приватного разговора скрипт определяет, что пользователь пришёл с сайта, из чата WEB-поддержки.

 

Если это так — скрипт отправляет приватное сообщение с информацией, с какого IP адреса пришёл этот человек, а также User Agent браузера, язык локали, операционную систему и реферальную страницу, с которой был переход.

 

Код скрипта реально используется в чате поддержки компании Network Software Solutions.

function OnPrivateRequest(iCID, iUIN, iUINTo, iRole, iRoleReciever, iTask: integer): boolean;
var
  s,
  sIP,                            // IP адрес пользователя WEB-поддержки
  sWEBSupportBrowserInfo,         // информация о веб-браузере
  sWEBSupportRefLink,             // рефлинк
  sWEBSupportsSysLanguage,        // язык локали браузера
  sWEBSupportsPlatformOS: string; // операционная система юзера
  
  iCIDTo: integer;
begin
  if mGetRoleNameByID(iRole) = 'WEB guests' then begin
    sIP                     := mGetUserAttribute(iUIN, 'IP_Address');
    sWEBSupportBrowserInfo  := mGetUserAttribute(iUIN, 'WEBSupportBrowserInfo');
    sWEBSupportRefLink      := mGetUserAttribute(iUIN, 'WEBSupportRefLink');
    sWEBSupportsSysLanguage := mGetUserAttribute(iUIN, 'WEBSupportSysLanguage');
    sWEBSupportsPlatformOS  := mGetUserAttribute(iUIN, 'WEBSupportPlatformOS');
    
    s := '---------------' + CRLF + 
         '-=WEB Support=-' + CRLF + CRLF + 
         'IP: ' + sIP;
      
      if length(sWEBSupportBrowserInfo) > 0 then s := s + CRLF + 'Browser: ' + sWEBSupportBrowserInfo + CRLF;
      if length(sWEBSupportRefLink) > 0 then s := s + CRLF + 'Reflink: ' + sWEBSupportRefLink;
      if length(sWEBSupportsSysLanguage) > 0 then s := s + CRLF + 'System language: ' + sWEBSupportsSysLanguage;
      if length(sWEBSupportsPlatformOS) > 0 then s := s + CRLF + 'OS: ' + sWEBSupportsPlatformOS;
      
    mSendPrivateMessage(iUIN, iUINTo, s, 21, true);
    
    iCIDTo := mGetUserCID(iUINTo);
    mSendCustomMsgToClientConsoleByCID(iCIDTo, 'WEB support session from UIN ' + inttostr(iUIN), 'newmsg', false, true, 78);
  end;

  result := true;
end;

begin

end.

 
Результат работы скрипта

Отправка приватного сообщения из серверного скрипта в MyChat Client (win32)
 

Ещё посмотреть

CRLF
IntToStr
mGetRoleNameByID

mGetUserAttribute

mGetUserCID

mSendCustomMsgToClientConsoleByCID