MyChat Scripts: функция mSendPrivateMessage, отправка приватного сообщения
"Для разработчиков", "Серверные скрипты", "Описание функций", "Сообщения", "mSendPrivateMessage".
Отправить приватное сообщение от имени одного пользователя — другому.
Синтаксис
function mSendPrivateMessage(iUINFrom, iUINTo: integer; sMsg: string; iMsgType: integer): integer;
Параметры и возвращаемые значения
Параметр |
Тип |
Значение |
iUINFrom |
integer |
идентификатор отправителя. Можно использовать встроенного робота (UIN 0) или любого другого зарегистрированного на сервере пользователя; |
iUINTo |
integer |
идентификатор получателя сообщения (UIN); |
sMsg |
string |
текст сообщения. Можно использовать переносы строк (CRLF); |
iMsgType |
integer |
Результат функции
Результат |
Значение |
>0 |
всё Ок, сообщение успешно отправлено, результат — индекс сообщения в базе данных; |
-1 |
UIN отправителя не существует; |
-2 |
UIN получателя не существует; |
-3 |
сообщение не может быть пустым; |
-4 |
сообщение не может быть отправлено самому себе. |
Пример
Функция "повешена" на обработчик OnPrivateRequest. При попытке открытия приватного разговора скрипт определяет, что пользователь пришёл с сайта, из чата WEB-поддержки.
Если это так — скрипт отправляет приватное сообщение с информацией, с какого IP адреса пришёл этот человек, а также User Agent браузера, язык локали, операционную систему и реферальную страницу, с которой был переход.
Код скрипта реально используется в чате поддержки компании Network Software Solutions.
function OnPrivateRequest(iCID, iUIN, iUINTo, iRole, iRoleReciever, iTask: integer): boolean;
var
s,
sCountry, sCity, sGeoIP,
sIP, // remote user IP address
sWEBSupportBrowserInfo, // WEB-browser info
sWEBSupportRefLink, // reflink
sWEBSupportsSysLanguage, // browser locale language
sWEBSupportsPlatformOS: string; // user's operation system
iCIDTo: integer;
begin
SetScriptTimeOut(10000);
if (mGetRoleNameByID(iRole) = 'WEB guests') and mIsUINOnline(iUINTo) then begin
sIP := mGetCIDAttribute(iCID, 'IP');
sWEBSupportBrowserInfo := mGetCIDAttribute(iCID, 'UserAgent');
sWEBSupportRefLink := mGetCIDAttribute(iCID, 'Reflink');
sWEBSupportsSysLanguage := mGetCIDAttribute(iCID, 'Lang');
sWEBSupportsPlatformOS := mGetCIDAttribute(iCID, 'OS');
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;
sGeoIP := GeoIPGetQuickInfo(sIP);
sCountry := Fetch(sGeoIP, '|');
sCity := sGeoIP;
if length(sCountry) > 0 then begin
sGeoIP := sCountry;
if length(sCity) > 0 then sGeoIP := sGeoIP + ', ' + sCity;
s := s + CRLF + CRLF + sGeoIP;
end else sGeoIP := '';
mSendPrivateMessage(iUIN, iUINTo, s, 21);
s := mGetCIDSByUINAndClientType(iUINTo, 'win32');
while length(s) > 0 do begin
iCIDTo := StrToInt(Fetch(s, ','));
mSendCustomMsgToClientConsoleByCID(iCIDTo, 'WEB support session from UIN ' + inttostr(iUIN), 'newmsg', false, true, 78);
end;
end;
result := true;
end;
begin
end.
Результат работы скрипта