如何在commitDataSet Analytics管道中的Sitecore会话期间触发所有目标?

时间:2016-04-28 13:47:14

标签: sitecore sitecore7 sitecore-analytics

我在部分标准之前添加了一个Analytics管道,以便在将所有数据提交到数据库之前删除重复的触发的pageevent,这样我就可以拥有唯一的触发事件,因为android / ios设备上似乎有一个错误,触发了几个事件几秒钟间隔。

在这个自定义管道中,我需要获取当前用户在其会话中触发的所有目标/事件的列表,以便我可以与从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
                  ...........
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

我有similar question

在Sitecore 7.5中,我发现这有效:

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

但是,如果Pages集合非常大,我有点担心这会效率低下。