Интеграция 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 адреса, реферальной ссылки и информации о браузере, в чате показывается ещё и страна и город, если его получилось определить.