ファセッツと接触する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

ContactExpandOptionsにフェイセットキーの配列を渡して、接触または複数の接触で返すべき面を指定する必要があります。存在すれば必ず戻される面はConsentInfoとMergeInfoだけです。

以下の例では、デフォルトのEmailAddressList面とAddressList面が連絡先展開オプションの一部として要求されています。

var contacts = await client.GetAsync(references, new ContactExecutionOptions(new Sitecore.XConnect.ContactExpandOptions(EmailAddressList.DefaultFacetKey, AddressList.DefaultFacetKey)));

ファセットがそのコンタクトのファセットが存在する場合、そのファセットがそのコンタクトのFacets辞書に追加されます。リクエストしたファセットがモデル上で定義されていなければ、リクエスト実行時にxConnectは例外をスローします。コンタクトまたはコンタクトが返されたら、コンタクトの .GetFacet() メソッドを使ってファセットオブジェクトを取得します。

EmailAddressList myFacetObject = contact.GetFacet(EmailAddressList.DefaultFacetKey);

メソッド .GetFacet() は、以下の場合にnullを返します:

  • 接触が最初に回収された際、 ContactExpandOptions の一部としてこのファセットは求められていませんでした
  • ファセットは特定の接触に対して設定されていません
  • タイプとキーの組み合わせは正しくありません

以下の例は、EmailAddressList面の取得方法と作業方法を示しています。

using Sitecore.XConnect.Collection.Model; using Sitecore.XConnect.Operations; using System; using System.Collections.Generic; using System.Linq; using Sitecore.XConnect; using Sitecore.XConnect.Client;

namespace Documentation { public class GetFacetsMultiple { // Asyc example public async void ExampleAsync() { using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { var references = new List<IEntityReference<Sitecore.XConnect.Contact>>() { // Contact ID new ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")), // Username new IdentifiedContactReference("twitter", "myrtlesitecore"), // Ad network ID new IdentifiedContactReference("twitter", "AB973934540244") };

// Get a reference to the facet by name string emailsFacetKey = Sitecore.XConnect.Collection.Model.CollectionModel.FacetKeys.EmailAddressList;

// Pass the facet name into the ContactExpandOptions constructor var contactsTask = client.GetAsync<Sitecore.XConnect.Contact>(references, new ContactExecutionOptions( new ContactExpandOptions(emailsFacetKey) { }));

IReadOnlyCollection<IEntityLookupResult> contacts = await contactsTask;

if (contacts != null && contacts.Any()) { foreach (var c in contacts) { // For each contact, retrieve the facet - will return null if contact does not have this facet set EmailAddressList emailsFacetData = c.Entity.GetFacet(emailsFacetKey);

if (emailsFacetData != null) { // Do something with data - e.g. display in view EmailAddress preferred = emailsFacetData.PreferredEmail; } } } } catch (XdbExecutionException ex) { // Handle exceptions } } }

// Sync example public void Example() { using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { var references = new List<IEntityReference>() { // Contact ID new ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")), // Username new IdentifiedContactReference("twitter", "myrtlesitecore"), // Ad network ID new IdentifiedContactReference("twitter", "AB973934540244") };

// Get a reference to the facet by name string emailsFacetKey = CollectionModel.FacetKeys.EmailAddressList;

// Pass the facet name into the ContactExpandOptions constructor IReadOnlyCollection<IEntityLookupResult> contacts = client.Get(references, new ContactExecutionOptions(new ContactExpandOptions(emailsFacetKey) { }));

if (contacts != null && contacts.Any()) { foreach (var c in contacts) { // For each contact, retrieve the facet - will return null if contact does not have this facet set EmailAddressList emailsFacetData = c.Entity.GetFacet(emailsFacetKey);

if (emailsFacetData != null) { // Do something with data - e.g. display in view EmailAddress preferred = emailsFacetData.PreferredEmail; } } } } catch (XdbExecutionException ex) { // Handle exceptions } } } } }

!注すべての組み込みファセットモデルにはDefaultFacetKeyプロパティがあります。例えば、WebVisit.DefaultFacetKey。

デフォルトのファセットキーでファセットを取得します

すべての組み込みファセットモデルには、デフォルトのファセットキーをファセットモデルに関連付けるFacetKey属性があります。

FacetKey(CollectionModel.FacetKeys.EmailAddressList) public class EmailAddressList : Facet

ファセットキーが指定されていない場合、xConnectはデフォルト値に戻ります。この動作を模倣するために、FacetKey属性を自分のファセットモデルに追加してください。以下の例では、.Expand() と .GetFacet() をファセットキーを指定せずに使用します。

!重要ファセットモデルにFacetKey属性がない場合は例外が投げられます。

using Sitecore.XConnect.Collection.Model; using Sitecore.XConnect.Operations; using System; using System.Collections.Generic; using System.Linq; using Sitecore.XConnect; using Sitecore.XConnect.Client;

namespace Documentation { public class GetFacetsMultipleDefaultKey { // Asyc example public async void ExampleAsync() { using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { var contactsTask = client.GetAsync<Sitecore.XConnect.Contact>(new ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")), new ContactExecutionOptions(new ContactExpandOptions().Expand()));

Contact contact = await contactsTask;

if (contact != null) { // For each contact, retrieve the facet - will return null if contact does not have this facet set EmailAddressList emailsFacetData = contact.GetFacet();

if (emailsFacetData != null) { // Do something with data - e.g. display in view EmailAddress preferred = emailsFacetData.PreferredEmail; } } } catch (XdbExecutionException ex) { // Handle exceptions } } }

// Asyc example public void Example() { using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { Contact contact = client.Get<Sitecore.XConnect.Contact>(new ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")), new ContactExecutionOptions(new ContactExpandOptions().Expand()));

if (contact != null) { // For each contact, retrieve the facet - will return null if contact does not have this facet set EmailAddressList emailsFacetData = contact.GetFacet();

if (emailsFacetData != null) { // Do something with data - e.g. display in view EmailAddress preferred = emailsFacetData.PreferredEmail; } } } catch (XdbExecutionException ex) { // Handle exceptions } } } } }

!注もしファセットモデル( EmailAddressListなど)を使って複数のファセットを定義しているなら、デフォルトでないファセットキーをモデルクラスの定数として保存することを検討してください。

ファセットの設定または更新

ファセットを更新するには、.SetFacet() 拡張メソッドを必ず使う必要があります。詳細は「 Contactファセットを設定する」をご覧ください。

この記事を改善するための提案がある場合は、 お知らせください!