Интеграция 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 адреса, реферальной ссылки и информации о браузере, в чате показывается ещё и страна и город, если его получилось определить.
Ещё посмотреть
Created with the Personal Edition of HelpNDoc: Easily convert your WinHelp HLP help files to CHM with HelpNDoc's step-by-step guide