Как получить все цели, достигнутые во время сеанса 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)
Однако меня немного беспокоит, что это будет неэффективно, если коллекция страниц очень большая.