2016-04-28 62 views
3

我有一个分析管道添加在部分标准之前删除重复触发pageevents之前提交所有数据库,所以我可以有独特的触发事件,因为似乎有一个错误的android/ios设备触发几个事件内秒间隔。如何获取commitDataSet Analytics管道中的Sitecore会话期间触发的所有目标?

在此自定义管道中,我需要获取当前用户在他的会话中触发的所有目标/事件的列表,以便我可以比较从args参数获取的数据集中的值并删除已触发的值。

args.DataSet.Tables [“PageEvents”]只返回要提交给数据库的集合,并且这没有帮助,因为每次运行此管道时它都会发生更改。我也试过Sitecore.Analytics.Tracker.Visitor.DataSet,但是我得到这些属性的空值。

有没有人知道如何获得用户在他的会话中触发的所有目标的列表,而无需直接向数据库请求?

一些代码:

public class CommitUniqueAnalytics : CommitDataSetProcessor 
     { 
      public override void Process(CommitDataSetArgs args) 
      { 
       Assert.ArgumentNotNull(args, "args"); 
       var table = args.DataSet.Tables["PageEvents"]; 
       if (table != null) 
       { 
        //Sitecore.Analytics.Tracker.Visitor.DataSet.PageEvents - this list always empty 
        ........... 
       } 
      } 
     } 

回答

0

我有一个similar question

在Sitecore的7.5,我发现这工作:

Tracker.Current.Session.Interaction.Pages.SelectMany(x=>x.PageEvents) 

不过我有点担心,这将是低效的,如果Pages集合是非常大的。

相关问题