Сброс данных текущего посещения Sitecore Analytics Tracker (C #, ASP.Net)

Я использую Sitecore.Analytics.Tracker для персонализации на моем сайте. Я добавил возможность пользователю вручную изменять свой почтовый индекс, что меняет то, что они видят в определенных частях сайта. Почтовый индекс извлекается с помощью Tracker.CurrentVisit.PostalCode

public string GetCurrentZipCode()
{
    return Tracker.CurrentVisit.PostalCode.IsNotNullOrEmpty() ? Tracker.CurrentVisit.PostalCode : String.Empty;
}

public void SetCurrentZipCode(string zip)
{
    Tracker.CurrentVisit.PostalCode = zip;

}

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

Почему Tracker.CurrentVisit.PostalCode сбрасывается? Это настройка в Sitecore? Как мне это остановить? В идеале значение PostalCode должно сохраняться в течение всего сеанса.


person Erica Stockwell-Alpert    schedule 05.05.2016    source источник
comment
Какую версию Sitecore вы используете?   -  person Dmytro Shevchenko    schedule 09.05.2016


Ответы (1)


У контакта есть коллекция адресов, в которой можно хранить эту информацию.

Sitecore.Analytics.Model.config:

<facets>
  <facet name="Addresses" contract="Sitecore.Analytics.Model.Entities.IContactAddresses, Sitecore.Analytics.Model" />
</facets>

См. IContactAddresses и IAddress для получения подробной информации об этих интерфейсах. IContactAddresses имеет коллекцию Entries, которая представляет собой список объектов IAddress.

Доступ к адресной информации текущего контакта:

private IContactAddresses _addressInfo;

protected IContactAddresses  AddressInfo
{
    get
    {
        return _addressInfo ?? (_addressInfo = Tracker.Current.Contact.GetFacet<IContactAddresses>("Addresses"));
    }
}

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

person Nathan Hase    schedule 05.05.2016
comment
Также я не могу использовать ваш метод, потому что в Трекере нет Current - person Erica Stockwell-Alpert; 05.05.2016
comment
Вы используете Sitecore.Analytics; ? На самом деле это Sitecore.Analytics.Tracker.Current. Если ваш трекер недоступен, убедитесь, что Google Analytics включен: ‹setting value = true name = Analytics.Enabled patch: source = Sitecore.Analytics.config /› - person Nathan Hase; 05.05.2016
comment
[Устарело (используйте вместо этого Tracker.Current)] общедоступный статический CurrentVisitContext CurrentVisit - person Nathan Hase; 05.05.2016
comment
Чтобы уточнить: Tracker.CurrentVisit устарел. Если вы Tracker.Current недоступен, возможно, где-то есть ошибка, в зависимости от того, какие еще надстройки и изменения конфигурации у вас есть. - person Nathan Hase; 06.05.2016