Как получить все цели, достигнутые во время сеанса Sitecore в конвейере commitDataSet Analytics?

У меня есть конвейер Analytics, добавленный непосредственно перед стандартным в разделе, чтобы удалить дублирующиеся инициированные события страницы перед отправкой всех в базу данных, чтобы я мог иметь уникальные инициируемые события, так как на устройствах 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 ответ

У меня был похожий вопрос.

В Sitecore 7.5 я обнаружил, что это работает:

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

Однако меня немного беспокоит, что это будет неэффективно, если коллекция страниц очень большая.

Другие вопросы по тегам