Я надеюсь, что не ошибся здесь (как всегда, документация sitecore ужасна!)
Мне нужен был способ хранения информации о посетителе, я новичок в sitecore, но контактные фасеты казались идеальнымрешением, в значительной степени дословно реализованным по ссылке выше, пока оно не попало в производство. был вполне доволен этим. Когда я сохранял информацию, она сохранялась, я мог ее прочитать:
public IMpmVisitorFacet GetMpmVisitorFacet()
{
return _contact.GetFacet<IMpmVisitorFacet>(_MPMVisitorConfigName);
}
и установить информацию, и все казалось большим. Я также мог видеть, как устанавливается sitecore SC_ANALYTICS_GLOBAL_COOKIE
, все казалось замечательным. Потом я провел более тщательные тесты...
Проблема, по-видимому, в том, что данные просто не сохраняются долго. Если я помещу какую-то информацию в фасет, она будет зависать в течение часа или около того (я могу закрыть браузер, посмотреть другие сайты и т. д. и т. д.), и я смогу получить к ней доступ, но после «количества время" просто все уходит.
Пересмотрев документы (я упоминал, что они не очень хороши), я заметил оговорку в предложении, которую раньше не видел:
Ну, я могу создать другую страницу веб-формы, которая считывает только номер сотрудника. Это покажет мне, что данные фасета контакта хранятся по крайней мере в памяти. А как насчет постоянного хранения?
Подождите, я думал, это постоянное хранилище?! Итак, в примере показан некоторый код для чтения «фасета».
var contact = Tracker.Current.Contact;
var data = contact.GetFacet<IEmployeeData>("Employee Data");
data.EmployeeId = "ABC123";
.....
<p>Employee data contact facet updated.</p>
<p>Contact ID: <b><%=contact.ContactId.ToString()%></b></p>
<p>Employee #: <b><%=data.EmployeeId%></b></p>
Но эта грань, кажется, существует только в течение короткого периода времени. Затем продолжается:
Из соображений производительности Sitecore записывает контактные данные в xDB только после завершения сеанса. Это означает, что если я смотрю в MongoDB...
затем он продолжает показывать данные в своей новой блестящей модной реализации mongoDb. Но какая польза в монго, если я не могу получить доступ к этой информации и использовать ее программно!
Поэтому возникает вопрос, как мне получить доступ к этой контактной информации после того, как сеанс будет прерван?
т. е. пользователь входит на мой сайт -> я добавляю некоторую информацию в их контактную форму -> они возвращаются на следующий день -> я хочу прочитать информацию, которую я добавил ранее
Есть несколько других документов, в которых говорится о доступе к этим данным в профиль опыта, на индексировать в Lucene и на платформе Experience(почему два продукта с почти одинаковыми названиями?!), но нечего сказать, как получить доступ к этой информации на самом веб-сайте, в коде .
Чтобы добавить к комментариям Дмытро Шевченко:
- Я вижу своего пользователя в «профиле опыта» и вижу свои посещения сайта.
- Я знаю, что у этого пользователя была дополнительная информация о моем аспекте, потому что она активировала некоторый код.
- Я могу найти своего пользователя (из идентификатора, взятого из строки запроса на странице профиля опыта) в mongo Db
- Но когда я смотрю на пользователя в mongoDb, дополнительной информации там нет.
- в некоторых контактных записях есть эти данные, а в других нет
Похоже, это проблема с записью новой информации в монго... Есть ли у кого-нибудь помощь или аналогичный опыт?
ContactID
. - person Dmytro Shevchenko   schedule 29.09.2015Tracker.Current.Session.Contact.GetFacet<IMpmVisitorFacet>(_MPMVisitorConfigName);
? не просто просмотреть его в MongoDb? - person Liam   schedule 29.09.2015