Аналитика Sitecore 7 повышает ценность участия программно

Я работаю над внедрением sitecore DMS в 7.2, и у меня есть одна главная проблема, на которую мне, похоже, трудно найти ответ. У меня настроены некоторые цели и события, и я пытаюсь установить их с помощью API Analytics. Событие регистрируется как отключенное в базе данных PageEventId, но я пытаюсь добавить значение вовлеченности к текущему посещению / посетителю.

Я хочу обновить поле Значение в базе данных посещений для текущего посещения. Вот что я сейчас использую:

public static void triggerGoal(ID goal)
{
    if (Tracker.IsActive && Tracker.CurrentPage != null)
    {
        Sitecore.Data.Items.Item goalToTrigger = Sitecore.Context.Database.GetItem(goal);
        if (goalToTrigger != null)
        {
            Sitecore.Analytics.Data.Items.PageEventItem reg = new Sitecore.Analytics.Data.Items.PageEventItem(goalToTrigger);
            Sitecore.Analytics.Data.DataAccess.DataSets.VisitorDataSet.PageEventsRow eventData = 

            Tracker.CurrentPage.Register(reg);
            eventData.Data = goalToTrigger["Description"];
            Tracker.Submit();
        }
    }
}

Это обновляет базу данных PageEventId должным образом, отмечая, что событие было инициировано, но это не добавляет значения вовлечения в базу данных посещений, независимо от того, сколько точек вовлечения назначено для запускаемого объекта.

Я пробовал разные способы получения API для обновления этого поля, но пока у меня ничего не получалось. Вот куча разных вещей, которые я пробовал:

Tracker.CurrentVisit.BeginEdit();
Tracker.CurrentVisit.Value += 3; //look up value here instead of hardcoding. Create new PageEventItem class to get field ID.
Tracker.CurrentVisit.AcceptChanges();
Tracker.CurrentVisit.EndEdit();
Tracker.CurrentVisit.Load();
Tracker.CurrentPage.BeginEdit();
Tracker.CurrentPage.Visit.Value += 3;
Tracker.CurrentPage.AcceptChanges();
Tracker.CurrentPage.EndEdit();
Tracker.Visitor.CurrentVisit.BeginEdit();
Tracker.Visitor.CurrentVisit.Value += 3;
Tracker.Visitor.CurrentVisit.AcceptChanges();
Tracker.Visitor.CurrentVisit.EndEdit();
Tracker.Visitor.CurrentVisit.Load();
Tracker.CurrentVisit.CurrentPage.Visit.BeginEdit();
Tracker.CurrentVisit.CurrentPage.Visit.Value += 3;
Tracker.CurrentVisit.CurrentPage.Visit.AcceptChanges();
Tracker.CurrentVisit.CurrentPage.Visit.EndEdit();
Tracker.CurrentVisit.CurrentPage.Visit.Load();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.BeginEdit();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.Value += 3;
Tracker.CurrentVisit.CurrentPage.VisitorsRow.AcceptChanges();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.EndEdit();

Я использовал разные комбинации использования функций AcceptChanges() и BeginEdit() EndEdit() и Load(), так как я не совсем уверен, что они делают каждый, но в любом случае, ни одна из них не обновляет поле Value.

Я пытаюсь избежать выполнения пользовательского запроса SQL для обновления этого поля, я пытаюсь выяснить, как это сделать с помощью встроенного API Sitecore Analytics. Может кто-нибудь помочь мне разобраться, как обновить это поле?

2 ответа

Решение

Следующее работает хорошо для меня, вы ждете достаточно долго, чтобы увидеть значение, записанное для посещения?

if (Tracker.IsActive)
{
    Tracker.CurrentVisit.Value += 3;
}

Нет необходимости в BeginEdit, AcceptChanges, EndEdit и т. Д.

То, что вы сделали, должно работать, если вы правильно установили свою цель в Sitecore. Мне нравится отражать цели по умолчанию для sitecore и создавать цели из шаблона "Событие страницы". Убедитесь, что вы поставили цель для своего элемента контента Analyze Tab -> Goals -> [select your goal from checkbox list], Если вы собираетесь установить значение CurrentVisit, я предлагаю использовать строку ниже, чтобы избежать жесткого кодирования значений точек взаимодействия.

//This line will add points specified in Content Editor
Tracker.CurrentVisit.Value += int.Parse(reg.Points);

Этот документ объясняет, как правильно установить ваши цели. И если вы будете следовать ему, ваш код будет работать так, как он у вас, сообщая о значении, указанном в редакторе контента, без установки CurrentVisit.Value. Sitecore SDN - поваренная книга по маркетинговым операциям

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