2015-12-09 2 views
0

У меня есть ситуация, когда есть люди, просматривающие наш сайт, я использую javascript google analytics и hotjar для отслеживания моих пользователей ,Как отправить «google analytics» и «hotjar» отслеживание событий клиента с использованием сервера ASP.NET MVC C#

  1. Im отслеживания пользователей, как это:

    га ('отправить', 'событие', '/ RegisterButton', '', ''); hotjar («отправить», «событие»); ...

Однако, в настоящее время события и данные, которые происходят на стороне сервера для тех людей, которые я хотел бы, чтобы отслеживать, как хорошо (в аналитике).

Например, я хотел бы узнать, был ли человек загружен файл более одного раза.

Как это сделать?

Один из способов, чтобы сделать это (это код псевдо):

  function clickOnUploadButton() 
     { 
    var userDetails = ajax_get_user_details(function(data) { 
       if (data.numOfClicksOnUploadButton > 1) 
        { 
       ga('send', 'event', '/UploadButtonMoreThanOnce', '', ''); 
        hotjar('send', '/UploadButtonMoreThanOnce'); 
        } 
       else 
       { 
       ga('send', 'event', '/UploadButtonFirstTime', '', ''); 
        hotjar('send', '/UploadButtonFirstTime'); 
       } 

      ajax_activate_my_asp_controller(); 
      }); 
    } 

Я не хочу этого решения. Потому что тогда я отправляю данные на клиентскую сторону. Обычно мне не нужны эти данные на моей веб-странице. И это просто усложняет javascript-код.

Я хочу решение, чтобы я мог отправлять эти данные непосредственно в Google Analytics со стороны сервера. так:

в JavaScript (псевдо-код):

function clickOnUploadButton() { 
    ... do stuff ... 
    ajax_activate_my_ASP_controller(); 
} 

и в моей стороне сервера контроллера (это код псевдо):

void MyController() 
{ 
     string googleAnalyticsSessionID = Request["GoogleAnalyticsSessionID"]; 
     string hotjarSessionID = Request["HotJarID"]; 
     var user = GetMyUser(); 
     if (user.numOfClicksOnUploadButton > 1) 
      { 
      new GoogleAnalyticsClass().SendEvent(googleAnalyticsSessionID , "button", "UploadButtonMoreThanOnce"); 
      new HotJar().SendEvent(hotjarSessionID, "button" "UploadButtonMoreThanOnce"); 
      } 
     else 
      { 
      new GoogleAnalyticsClass().SendEvent(googleAnalyticsSessionID , "button", "UploadButtonFirstTime"); 
      new HotJar().SendEvent(hotjarSessionID, "button" "UploadButtonFirstTime"); 
      } 
} 

Спасибо.

Edit: Я также это нужно для hotjar (сервис похож на Google Analytics), а также ...

+0

Извините, друг у вас вопрос не имеет для меня никакого смысла, пожалуйста, обновите контекст и уточните немного больше. –

+0

Какие детали вы хотите знать? – nundel

+0

Google Analytics обычно предназначена для запуска от клиента. Это клиент отправляет данные в Google, а не вы. Если вы делаете с сервера, как вы можете установить правильный контекст пользователя? Вам нужно будет найти способ сделать это от клиента. –

ответ

0

Я использовал C# для регистрации событий транзакций в Google Analytics. Я нашел этот код для класса обтекания аналитики очень полезным https://gist.github.com/0liver/11229128

Он использовал HttpWebRequest для отслеживания событий в Google Analytics. Это сработало для меня.

Я также создал консольное приложение для регистрации сделок, которые доступны на Bitbucket https://bitbucket.org/gterlouw/analyticsconsoleexample.git

Чтобы захватить идентификатор клиента, я использовал следующий код, чтобы захватить его из печенья:

var gaCookie = HttpContext.Current.Request.Cookies["_ga"]; 
    var gaSplitValue = gaCookie != null && gaCookie.Value.Split('.').Length == 4 ? gaCookie.Value.Split('.') : null; 
    var clientId = gaSplitValue != null ? string.Format("{0}.{1}", gaSplitValue[2], gaSplitValue[3]) : "555"; 

Если вы хотите чтобы захватить его с Javascript вы можете использовать этот

ga(function(tracker) { 
    var clientId = tracker.get('clientId'); 
}); 

JavaScript может быть, более безопасный вариант, если причина Google decid es, чтобы изменить имя файла cookie, он все равно сможет извлечь файл cookie, а если у вас есть его код C#, ему, вероятно, потребуется обновление кода или изменение конфигурации.

Если вы добавите clientId в качестве значения для cid-ключа в postData из кода примера. Google Analytics свяжет это с вашим текущим клиентом.

var postData = new Dictionary<string, string> 
         { 
          { "v", "1" }, 
          { "tid", "UA-XXXXXX-XX" }, 
          { "cid", clientId }, 
          { "t", type.ToString() }, 
          { "ec", category }, 
          { "ea", action }, 
         }; 
+0

Я не смог найти идентификатор сеанса клиента/UUID и/или клиентский IP-адрес для отправки в Google Analytics из этого кода. Как сервер Google Analytics может извлекать мое местоположение пользователя и подключать пользователя, который отправляет события самим событиям, без этой информации? – nundel

+0

В этом примере мы используем cid = 555, анонимный. Я думаю, что единственный способ получить текущий идентификатор клиента в бэкэнде - это захватить его из файла cookie или передать его на бэкэнд с помощью javascript. –

 Смежные вопросы

  • Нет связанных вопросов^_^