如何发送"谷歌分析"和" hotjar&​​#34;使用服务器ASP.NET MVC C#

时间:2015-12-09 13:01:33

标签: javascript c# asp.net-mvc google-analytics analytics

我的情况是有人浏览我们的网站,我使用javascript google analytics,而hotjar则跟踪我的用户。

  1. 我正在跟踪这样的用户:

    ga(' send',' event',' / RegisterButton','','' );    hotjar('发送','事件'); ...

  2. 但是,现在服务器端正在为那些人发生事件和数据,我也想跟踪(在分析中)。

    举个例子,我想知道一个人是否多次上传文件。

    我该怎么做?

    一种方法是这样做(这是伪代码):

             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代码变得复杂。

    我想要一个解决方案,以便我可以将这些数据从服务器端直接发送到谷歌分析。 像这样:

    在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(类似于谷歌分析的服务)......

1 个答案:

答案 0 :(得分:0)

我使用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#代码中有它,它可能需要更新代码或配置更改。

如果从示例代码中添加clientId作为postData中cid键的值。 Google Analytics会将此链接与您当前的客户端相关联。

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