ファセッツと接触する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
ContactExpandOptionsにフェイセットキーの配列を渡して、接触または複数の接触で返すべき面を指定する必要があります。存在すれば必ず戻される面はConsentInfoとMergeInfoだけです。
以下の例では、デフォルトのEmailAddressList面とAddressList面が連絡先展開オプションの一部として要求されています。
var contacts = await client.GetAsync
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
EmailAddressList myFacetObject = contact.GetFacet
メソッド .GetFacet
- 接触が最初に回収された際、 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
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
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
// Get a reference to the facet by name string emailsFacetKey = CollectionModel.FacetKeys.EmailAddressList;
// Pass the facet name into the ContactExpandOptions constructor
IReadOnlyCollection<IEntityLookupResult
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
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
!重要ファセットモデルに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ファセットを設定する」をご覧ください。