【问题标题】:How to send "google analytics" and "hotjar" tracking client events using server ASP.NET MVC C#如何使用服务器 ASP.NET MVC C# 发送“谷歌分析”和“hotjar”跟踪客户端事件
【发布时间】:2016-03-14 18:23:52
【问题描述】:

我的情况是有人浏览我们的网站,我正在使用 javascript 谷歌分析和 hotjar 来跟踪我的用户。

  1. 我像这样跟踪用户:

    ga('send', 'event', '/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 代码复杂化。

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

在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 通常旨在从客户端运行。向 Google 发送数据的是客户端,而不是您。如果你从服务器做,你怎么能建立正确的用户上下文?您需要从客户端找到一些方法。

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


【解决方案1】:

我使用 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 },
                       };

【讨论】:

  • 我找不到要从此代码发送到谷歌分析的客户端会话 ID/UUID 和/或客户端 IP。谷歌分析服务器如何提取我的用户位置,并在没有这些信息的情况下将发送事件的用户连接到事件本身?
  • 在本例中,我们使用匿名的 cid = 555。我认为在后端获取当前客户端 ID 的唯一方法是从 cookie 中获取它或使用 javascript 将其传递给后端。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2016-05-21
相关资源
最近更新 更多