У MyChat Server можна визначати географічне розташування користувачів за їх IP-адресами. Це зручно для отримання інформації про людей, які пишуть повідомлення в чат з сайту.


База даних має досить великий розмір і не включається до стандартного дистрибутиву MyChat Server.


Щоб увімкнути GeoIP сервіс, потрібно:

 

  1. Зупинити MyChat Server, завершити его роботу.
  2. Завантажити архів бази даних GeoIP.
  3. Розпакувати вміст архіву в папку C:\ProgramData\MyChat Server\integrations\geoip\
  4. Запустити 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-версії) і бачить, звідки ця людина:

 

Спілкування в чаті підтримки MyChat

 

Окрім IP адреси, реферального посилання та інформації про браузер, у чаті показується ще й країна та місто, якщо його вдалося визначити.

 

Дивитися ще

Як налаштувати чат на сайті?

REST API

Telegram

Delphi

Java

phpBB3

Мережеві сокети