ここで間違った結論に達していないことを願っています (いつものように、サイトコアのドキュメントは悲惨です!)
私は訪問者に対して情報を保存する方法を望んでいました.私はかなりサイトコアに慣れていませんが、連絡先ファセットは理想的な解決策のようでした. 永続化された情報を保存すると、それを読み取ることができました。
public IMpmVisitorFacet GetMpmVisitorFacet()
{
return _contact.GetFacet<IMpmVisitorFacet>(_MPMVisitorConfigName);
}
とセット情報とすべてが素晴らしかった。また、サイトコアSC_ANALYTICS_GLOBAL_COOKIEが設定されているのも見えました。すべてが素晴らしいように見えました。それから私はいくつかのより徹底的なテストをしました...
問題は、データが長期間保持されないことです。ファセットに何らかの情報を入力すると、1 時間ほどハングアップし (ブラウザを閉じて、他のサイトやサイトなどを見ることができます)、アクセスできるようになりますが、「しばらくすると」時間」それはすべてなくなります。
ドキュメントを再確認したところ (ドキュメントがあまり良くないと言いました)、以前には見られなかった文の警告に気付きました。
さて、従業員番号のみを読み取る別の Web フォーム ページを作成できます。これにより、連絡先ファセット データが 少なくともメモリに格納されていることがわかります。しかし、永続的なストレージはどうですか?
ちょっと待って、これは永久保存だと思ってた!? そのため、この例は「ファセット」を読み取るコードを示しています。
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 実装でデータを表示します。しかし、実際にプログラムでその情報にアクセスして使用できない場合、mongo では何の役に立つのでしょうか。
したがって、セッションが中止された後、この連絡先情報にアクセスするにはどうすればよいでしょうか?
つまり、ユーザーが自分のサイトにログインする -> 連絡先ファセットに情報を追加する -> 彼らは翌日戻ってくる -> 以前に追加した情報を読みたい
エクスペリエンス プロファイルでこのデータにアクセスし、 Luceneおよびエクスペリエンス プラットフォームにインデックスを作成する方法について説明しているドキュメントが他にもいくつかあります(ほぼ同じ名前の 2 つの製品があるのはなぜですか?!)。コード内の Web サイト自体。
Dmytro Shevchenkoのコメントに追加するには:
- 「経験プロファイル」で自分のユーザーを確認でき、サイトへの訪問を確認できます。
- このユーザーが何らかのコードをトリガーしたため、追加のファセット情報を持っていたことはわかっています。
- mongo Dbでユーザーを(エクスペリエンスプロファイルページのクエリ文字列から取得したIDから)見つけることができます
- しかし、mongoDb でユーザーを見ると、追加情報はありません。
- 一部の連絡先レコードにはこのデータがありますが、他のレコードにはありません
したがって、新しい情報をmongoに書き込む際の問題のようです...誰かこれについて何か助けや同様の経験がありますか?