Інтеграція MyChat Server та локальної бази GeoIP
У MyChat Server можна визначати географічне розташування користувачів за їх IP-адресами. Це зручно для отримання інформації про людей, які пишуть повідомлення в чат з сайту.
База даних має досить великий розмір і не включається до стандартного дистрибутиву MyChat Server.
Щоб увімкнути GeoIP сервіс, потрібно:
- Зупинити MyChat Server, завершити его роботу.
- Завантажити архів бази даних GeoIP.
- Розпакувати вміст архіву в папку C:\ProgramData\MyChat Server\integrations\geoip\
- Запустити MyChat Server.
Приклад використання сервісу
Скрипт, налаштований на подію OnPrivateRequest. Скрипт визначає, що за користувач намагається відкрити сеанс приватної розмови, і якщо це користувач WEB-підтримки з сайту, то відправляє в приват оператору інформацію про цю людину, в тому числі й географічне розташування (країну та місто).
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
if mGetRoleNameByID(iRole) = 'WEB guests' then begin
iCIDTo := mGetUserCID(iUINTo);
if iCIDTo <> -1 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, true);
mSendCustomMsgToClientConsoleByCID(iCIDTo, 'WEB support session from UIN ' + inttostr(iUIN), 'newmsg', false, true, 78);
end;
end;
result := true;
end;
begin
end.
Результат роботи скрипту
До оператора підтримки підключається користувач із сайту, щоб поставити запитання у браузері:
Оператор отримує повідомлення у MyChat Client (Windows-версії) і бачить, звідки ця людина:
Окрім IP адреси, реферального посилання та інформації про браузер, у чаті показується ще й країна та місто, якщо його вдалося визначити.