Вт фев 14, 2023 5:58 pm Вт фев 14, 2023 5:58 pm
procedure SendBrowserInfo(iUIN, iUINTo, iCID, iCIDTo: integer);
var
s, sIP, sWEBSupportBrowserInfo, sWEBSupportRefLink, sWEBSupportsSysLanguage, sWEBSupportsPlatformOS,
sGeoIP, sCountry, sCity: string;
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);
mSendCustomMsgToClientConsoleByCID(iCIDTo, 'WEB support session from UIN ' + inttostr(iUIN), 'newmsg', false, true, 78);
end;
procedure SendHelloMessage(iUIN, iUINTo: integer);
var
s: string;
iHour: integer;
dt: Double;
begin
dt := Now;
if DayOfTheWeek(dt) < 7 then begin
iHour := HourOf(dt);
if (iHour >= 8) and (iHour <= 16) then s := 'Здравствуйте! Вы обратились в службу дистанционной поддержки клиентов АНО "ЦИНТ"! Мы рады, что Вы выбрали именно нас! Какой вопрос Вас интересует?'
else s := 'Здравствуйте! Вы обратились в службу дистанционной поддержки клиентов АНО "ЦИНТ"! Мы рады, что Вы выбрали именно нас! К сожалению, в настоящее время мы не можем Вам ответить. Пожалуйста, дождитесь начала рабочего дня или направьте Ваше обращение по электронной почте [email protected]';
end else s := 'Здравствуйте! Вы обратились в службу дистанционной поддержки клиентов АНО "ЦИНТ"! Мы рады, что Вы выбрали именно нас! К сожалению, в настоящее время мы не можем Вам ответить. Воскресенье - выходной день. Вы можете оставить сообщение в чате, оно будет доставлено. Мы свяжемся с Вами по e-mail в рабочее время';
mSendPrivateMessage(iUIN, iUINTo, s, 1);
end;
function OnPrivateRequest(iCID, iUIN, iUINTo, iRole, iRoleReciever, iTask: integer): boolean;
var
sKey, sKeyData, sDateNow: string;
iWhat, iCIDTo: integer;
begin
SetScriptTimeOut(10000); // на всякий случай, вдруг будет долго работать
if mGetRoleNameByID(iRole) = 'WEB guests' then begin
iCIDTo := mGetUserCID(iUINTo);
sKey := 'websupp' + IntToStr(iUIN) + '-' + IntToStr(iUINTo);
//mDBStorageDeleteKey(sKey);
//mDBStorageSetData(sKey, '123');
sKeyData := mDBStorageGetData(sKey);
sDateNow := FormatDateTime('ddmmyyyy', Now);
if length(sKeyData) = 0 then iWhat := 1 // ни разу не подключался к серверу
else if sKeyData = sDateNow then iWhat := 2 // уже подключался сегодня
else iWhat := 3; // подключался раньше, не сегодня
mDBStorageSetData(sKey, sDateNow);
// юзер подключается первый раз и оператор онлайн
if (iCIDTo <> -1) and (iWhat = 1) then begin
SendBrowserInfo(iUIN, iUINTo, iCID, iCIDTo);
SendHelloMessage(iUIN, iUINTo);
end else
// если пользователь подключается первый раз вообще либо впервые за день
if (iWhat = 1) or (iWhat = 3) then SendHelloMessage(iUIN, iUINTo);
end;
result := true;
end;
begin
end.
-----
В строке mSendPrivateMessage в скобках изначально стояли следующие параметры (iUIN, iUINTo, s, 21), однако сообщение приветствия не доставлялось клиентов, вместо этого был значок радара и дефис вместо приветствия. При этом сообщение было видно для оператора. Какой параметр надо прописать, чтобы исправить проблему.