2015-09-29 15 views
5

Buradaki çubuğun yanlış ucunu bulamadım umuyordum (her zaman sitecore dökümantasyonunda olduğu gibi!)Oturum temizlendikten sonra sitecore iletişim yüzüne erişebilir miyim?

Bir ziyaretçiye karşı bilgi depolamak için bir yol istedim, sitecore için oldukça yeni Ancak, contact facets seemed the ideal çözümü, hemen hemen yukarıdaki bağlantıdan kelime için uygulanan kelime, üretim isabet edene kadar oldukça memnun kaldım. Bilgiyi sakladığımda, bu yazıyı okuduğumda, okuyabilirdim:

public IMpmVisitorFacet GetMpmVisitorFacet() 
{ 
    return _contact.GetFacet<IMpmVisitorFacet>(_MPMVisitorConfigName); 
} 
ve bilgileri ayarla ve her şey harika görünüyordu. Ben de sitenin SC_ANALYTICS_GLOBAL_COOKIE ayarlanmış olduğunu görebiliyordum, her şey harika görünüyordu. Sonra biraz daha kapsamlı testler yaptım ...

Sorun, verilerin uzun süredir devam etmemesi gibi görünüyor. Eğer faset içine biraz bilgi koyarsam, bir saat kadar bekleyeceğim (tarayıcımı kapatabilirim, diğer sitelere bakabilirim vb.) Ve buna erişebilirim ancak bir miktar Zaman "sadece her şey uzağa gider.

dokümanlar dönülmüş olması Daha önce ben görmedim cümledeki bir ihtar ettim (ben onlar çok iyi değiliz belirtti var):

Eh, başka bir web formu sayfası oluşturabilir Bu sadece çalışan numarasını okur. Bu bana iletişim yüz veri bellekte en az bellekte saklandığını gösterecektir. Peki ya kalıcı depolama?

Beklemede, bunun kalıcı depolama olduğunu sanıyordum! Yani örnek, "faset" i okumak için bazı kodları göstermektedir.

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> 

Ancak bu faset sadece kısa bir süre için var gibi görünmektedir. Sitecore sadece xdb Kişi verileri yazar performans nedenleriyle

seans ends.This ben ... MongoDB içinde

bakarsak o zaman göstermek için gider demektir zaman: üzerinde Sonra gider Yeni parlak moda mongoDb uygulamasında verileri. Ama bu bilgiye programatik olarak erişemediğim ve kullanamayacağım mongoda ne yararı var!

Yani bu, oturumu terk edildikten sonra bu iletişim bilgilerine nasıl erişebilirim?

yani siteme giriş yaptığında -> ertesi gün geri gelmek - -> Ben onların iletişim faset içine biraz bilgi eklemek> Eklediğim bilgileri okumak istiyorum daha önce birkaç diğer belgeler vardır

hangi Bu verilere experience profile, index into Lucene ve in the Experience platform (niçin hemen hemen aynı ada sahip iki ürüne sahipsiniz?) hakkında erişimden bahsederiz, ancak bu bilgiye kodda web sitesinden nasıl erişileceğini söyleyemeyiz.


Dmytro Shevchenko yorumlarına eklemek için:

  • ben "deneyim profili" benim bir kullanıcıyı görebilirim ve siteye benim ziyaretleri görebilirsiniz.
  • bazı kodları tetiklediği için bu kullanıcının ek faset bilgilerimi aldığını biliyorum.
  • Ben Mongo Db
  • içinde (id en deneyim profil sayfası sorgu dizesi çıkarılan itibaren) benim kullanıcıyı bulabilirsiniz Ama mongodb kullanıcı baktığınızda başka bilgiler de değildir. Herkes herhangi bir yardım veya benzer bir deneyim var mı ...
  • kontak kayıtlarının bazıları bu verilere sahip ama diğerleri

Yani Mongo yeni bilgiler yazarken bir sorun olarak görünmektedir yapmak bu?

+1

* "Oturumun sonlandırılmasından sonra bu iletişim bilgilerine nasıl erişebilirim?" * - Bir web oturumunun (* arkaplan hizmetinden) * dışarısı * ile bir iletişime erişmeniz gerekiyor mu? Veya aynı kişinin yeni bir web oturumunda iletişim kurallarına erişmeniz gerekiyor mu? –

+0

Aynı kişinin yeni web oturumu – Liam

+3

Bu durumda, veriler orada olmalıdır. Başka bir web oturumunda çalıştığınız aynı kişi ile aynı olduğundan emin misiniz? 'ContactID' kontrol edin. –

cevap

2

. Benim meselem, ortaya çıktı, yazılan bir keresinde mongodan çıkıp okumaya devam etmekti.

tamamen bu çalışma oldukça temel bölümüatlamanı (her zamanki gibi) Sitecore belgeleri görünüyor. way down the docs it states yaklaşık üçte:

public EmployeeData() 
{ 
    base.EnsureAttribute<string>(FIELD_EMPLOYEE_ID); 
} 

"EnsureAttribute" yöntemi değer-tipi değişken bildirerek eşdeğerdir.


Tamam, bu çok yanıltıcı. Bu EnsureAttribute'un yaptığı gibi, faset için verileri mongo'dan geçerli sınıfa yükler. Eğer bunu için fasetinizde yapmazsanız, o zaman mongoDb'den değeri ayarlamaz! Bu benim hatamdı, sınıftaki her özelliği "sağlamadım".

Yani neler olduğunu ise

,
  • Ben faset
  • faset veri oturumunda devam ederse ve ben, erişim etc, bunu değiştirmek görebilirsiniz içine verilerimi koydu.
  • verileri (SC_ANALYTICS_GLOBAL_COOKIE sizin için yapar, kullanıcıyı tanımlamak için gerek yoktur)
  • kullanıcı dönüşleri, sistemin düzgün onları tanır (eğer gerekiyorsa xdb) Mongo nihayetinde aktarılmadan
  • Ancak, "sağladığınız" sürece, verileri (mongodan ve oturuma geri) yüklemez.

Yani EnsureAttribute (bu sadece Bence tamamen yanlış) o MongoDB dışına ve akım Session içine veri yükler "Bir değer türü bildirmek" değil gelmez.

0

Burada eksik olabilir adım bilinen bir kişiyi tanımlamak için Tracker.Current.Session.Identify() yöntem olduğunu düşünüyorum. Tracker api'deki veriler sadece geçerli oturum için sürer ve kişiyi oturuma yüklemeniz gerekir.

xdb uygulanması, siteyi ziyaret ettiklerinde giriş veya örneğin kaydederek, kendilerini tanımlayan bir temas dayanır.

onlar benzersiz bir tanımlayıcı örneğin e-posta adresini kullanabilir ve tanımlamak yönteme bu geçebilir sizin Giriş yaptıktan sonra - Tracker.Current.Session.Identify("Email Address of the visitor"). kullanıcı daha önce kendilerini belirlemiş eğer, bu yöntemi denilen sonra

, iletişim verileri geçerli oturum yüklenecek ve mevcut faset bilgi Tracker Api satışa sunulacak. ayıklama, işe yaramaz ve test bir hayli Sonunda bu anladım sonra

+0

Ama benim hiç kullanıcım yok Bu noktada bilgi, onlar anonim bir kullanıcı. Veriler var ama mongo örneğine kızar gibi görünmüyor. Bunun nasıl yardımcı olduğu belli değil mi? – Liam

+0

Açıklayabilir misiniz? * XDB uygulaması, siteyi ziyaret ettiğinde kendilerini tanımlayan bir kişiye dayanır *? Dokümantasyonda nerede yazıyor? Bu @Dmytro (yukarıda) veya sitecore web sitesinde bu konuda okudum herhangi bir şey ile yorumlarda görünmüyor? – Liam

0

Sorununuz, kişiyi nasıl çektiğinizle ilgili olarak ortaya çıkar: Sayfa isteğinde iseniz, Tracker.Current.Contact üzerinden geçerli kişiye erişmelisiniz. kodunuz sayfa isteğinde değildir, ancak kullanıcının canlı bir oturumu olabilir, yukarıda açıklanan yöntemlerle ContactManager'ı kullanın. Kişi şu anda canlı bir oturumda değilse, ContactRepository'yi kullanmalısınız. Burada nasıl kullanılacağı hakkında bir örnek bakın. https://sitecore.stackexchange.com/questions/3319/why-are-custom-xdb-facets-being-overwritten-on-session-end'dan kopyalandı, Dmitry Shevchenko tarafından cevaplandı.

İlgili konular