10.5

ファセッツと接触する

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

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

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

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

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

A facet is added to the contact’s `Facets` dictionary if the facet exists for that contact. If the facet you requested is not defined in the model xConnect will throw an exception when the request is executed. When the contact or contacts have been returned, use the `.GetFacet()` method on the contact to retrieve the facet object:

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ファセットを設定する」をご覧ください。

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