Интеграция MyChat и локальной базы данных GeoIP

Интеграция MyChat Server и локальной базы GeoIP

В 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-версии) и видит, откуда этот человек:

 

Информация о посетителе у оператора поддержки

 

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

 

Ещё посмотреть

Как настроить чат на сайте?

REST API

Telegram

Delphi

Java

phpBB3

Сетевые сокеты