簡體   English   中英

如何使用服務器ASP.NET MVC C#發送“谷歌分析”和“ hotjar”跟蹤客戶端事件

[英]How to send “google analytics” and “hotjar” tracking client events using server ASP.NET MVC C#

我的情況是有人在瀏覽我們的網站,我使用的是javascript谷歌分析,並且使用hotjar來跟蹤我的用戶。

  1. 我會像這樣跟蹤用戶:

    ga('send','event','/ RegisterButton',``,''); hotjar('send','event'); ...

但是,現在我也想在(分析中)跟蹤這些人在服務器端發生的事件和數據。

例如,我想知道一個人是否多次上傳文件。

我該怎么做?

一種方法是執行此操作(這是一個偽代碼):

         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");
          }
}

謝謝。

編輯:我也需要hotjar(類似於Google Analytics(分析)的服務)...

我使用C#在Google Analytics(分析)中注冊了交易事件。 我發現此分析包裝類的代碼非常有用https://gist.github.com/0liver/11229128

他使用HttpWebRequest跟蹤Google Analytics(分析)中的事件。 它為我工作。

我還創建了一個控制台應用程序,用於注冊Bitbucket https://bitbucket.org/gterlouw/analyticsconsoleexample.git上可用的交易。

為了獲取客戶端ID,我使用以下代碼從cookie中獲取它:

    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決定更改Cookie的名稱,它仍然能夠獲取Cookie,而如果您在C#代碼中包含它,則可能需要更新代碼或更改配置。

如果在示例代碼中的postData中將clientId添加為cid鍵的值。 Google Analytics(分析)會將其鏈接到您當前的客戶端。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM