Страница 1 из 1

Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт сен 13, 2016 6:23 pm
Алексей Пикуров
Скрипт "навешивается" на событие OnPrivateRequest на сервере. Работает с версий MyChat 8.3.4 и выше.

user-websupport-info.png

Код: Выделить всё
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
  SetScriptTimeOut(10000);
 
    if (mGetRoleNameByID(iRole) = 'WEB guests') and mIsUINOnline(iUINTo) 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);
 
      s := mGetCIDSByUINAndClientType(iUINTo, 'win32');
       
        while length(s) > 0 do begin
          iCIDTo := StrToInt(Fetch(s, ','));
          mSendCustomMsgToClientConsoleByCID(iCIDTo, 'WEB support session from UIN ' + inttostr(iUIN), 'newmsg', false, true, 78);
        end; 
    end;

  result := true;
end;

begin

end.

Справка: https://nsoft-s.com/mcserverhelp/index. ... equest.htm

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вс янв 17, 2021 2:16 pm
Алексей Пикуров
Обновлено 17 января 2021 года.

Функция mGetUserCID стала deprecated в связи с мультилогинами, скрипт переделан. Уведомления стали приходить в консоль только для win32-приложений. Само приватное сообщение генерируется для всех "инкарнаций" оператора web-поддержки.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Ср мар 24, 2021 4:29 pm
SergeyUAL
Здравствуйте, где можно глянуть новый скрипт?

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Ср мар 24, 2021 6:18 pm
Алексей Пикуров
На два сообщения выше.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:02 am
SergeyUAL
Здравствуйте.

Скрипт заработал. Только вместо IP клиента, пишет IP шлюза в офисе.

geo.png

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:03 am
Алексей Пикуров
Это логично. Он никак не узнает локальный IP, за NAT все IP теряются.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:16 am
SergeyUAL
Но ведь еще летом все работало:

2021-03-30_9-14-42.png

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:19 am
Алексей Пикуров
Как у вас организована сеть? Сервер MyChat находится в офисе в локальной сети за шлюзом?

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:21 am
SergeyUAL
Да. Возможно какой-то порт необходимо пробросить.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:22 am
Алексей Пикуров
И эта схема не менялась у вас, у сервера MyChat не было реального IP, я правильно понимаю?

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:23 am
SergeyUAL
ничего не менялось уже несколько лет

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Вт мар 30, 2021 9:23 am
Алексей Пикуров
Ок, я посмотрю, что там может быть.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 9:52 pm
FenixYkt
у меня функция
sWEBSupportRefLink := mGetCIDAttribute(iCID, 'Reflink')
возвращает только основной линк сайта без конкретики страницы, откуда был вызван чат

результат
---------------
-=WEB Support=-

IP: 188.xxx.xxx.xxx
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0

Reflink: https://www.xxxxx.ru/

и всё.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:05 pm
Алексей Пикуров
Тут всё зависит от того, отдал браузер пользователя эту инфу или нет. Бывает по-разному.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:15 pm
FenixYkt
проверил на куче браузеров
Опера, Хром, Рыжая Лиса - рефлинк основного сайта без страниц
Эдж и эксплорер - вообще ничего не показывает - пустой рефлинк.

Так же не должно быть. Ведь те же счетчики и яваскрипты нормально отслеживают рефлинки.
Значит что-то с реализацией функции. Я не прав?

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:18 pm
Алексей Пикуров
Не знаю. Надо проверять.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:19 pm
Алексей Пикуров
Покажите скрин с вашего кода, пожалуйста, в редакторе.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:42 pm
FenixYkt
код скрипта или то, что приходит в клиентку?

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:43 pm
Алексей Пикуров
Скриншот админки с открытым скриптом.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:46 pm
FenixYkt
внутри

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:48 pm
Алексей Пикуров
Вроде всё ок. Только почему не 8.6 версия? :) Старайтесь обновляться оперативно, не затягивайте.

Я проверю и отпишу в этой теме.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пт апр 02, 2021 10:49 pm
FenixYkt
обновлю, каюсь, закрутился :)

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пн апр 05, 2021 4:56 pm
Алексей Пикуров
SergeyUAL
Проверил только что, приходит реальный IP клиента, всё чётко.

FenixYkt
Есть косяк с повторным открытием чата при переключении между страницами, это решаем. Насчёт рефлинка — ищем проблему.

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пн апр 05, 2021 6:11 pm
Алексей Пикуров

Re: Скрипт для показа информации пользователя с сайта (IP, рефлинк, UserAgent браузера, язык, операционная система)

СообщениеДобавлено: Пн апр 05, 2021 6:18 pm
FenixYkt
спасибо! Жду.