---
title: "インタラクションの側面を得てください"
slug: "get-interaction-facets"
abstract: "相互作用や一連の相互作用の一部としてファセットを返す方法。"
---
# インタラクションの側面を得てください

どのファセットをインタラクションまたはインタラクションのバッチで返すかを指定するために、ファセットキーの配列をInteractionExpandOptionsに渡しなければなりません。

以下の例では、インタラクション展開オプションの一部としてデフォルトのIpInfoファセットが要求されています。

var contacts = await client.GetAsync<Interaction>(references, new InteractionExecutionOptions(new Sitecore.XConnect.InteractionExpandOptions(IpInfo.DefaultFacetKey)));

その面がその相互作用のFacets辞書に存在する場合、その面が追加されます。もしあなたが要求した面がモデル上で定義されていなければ、xConnectはリクエストの実行時に例外を投げます。交互作用が返されたら、その相互作用の .GetFacet<T>() メソッドを使って面オブジェクトを取得します。

IpInfo myFacetObject = contact.GetFacet<IpInfo>(IpInfo.DefaultFacetKey);

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

-   このファセットは、インタラクションが最初に取得された際の InteractionExpandOptions の一部として要求されていませんでした
-   ファセットは特定の相互作用に対して設定されていません
-   タイプとキーの組み合わせは正しくありません

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

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

using Sitecore.XConnect.Collection.Model;
using Sitecore.XConnect.Operations;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Sitecore.XConnect;
using System.Collections.ObjectModel;
using Sitecore.XConnect.Client;

namespace Documentation
{
 public class GetInteractionsWithFacets
 {
 public async void ExampleAsync()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {

 // Contact reference from ID
 var contactRef = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F45-E611-82E6-34E6D7117DCB"));
 Sitecore.XConnect.InteractionReference interactionRef = new Sitecore.XConnect.InteractionReference(contactRef, Guid.Parse("DA2DA5F0-4348-E611-82E7-34E6D7117DCB"));

 // Contact reference from identifier
 var identifiedContactRef = new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore");
 Sitecore.XConnect.InteractionReference secondInteractionRef = new Sitecore.XConnect.InteractionReference(identifiedContactRef, Guid.Parse("E6067926-1F45-E611-82E6-34E6D7117DCB"));

 var references = new List<Sitecore.XConnect.InteractionReference>()
 {
 interactionRef, secondInteractionRef
 };

 Task<ReadOnlyCollection<IEntityLookupResult<Interaction>>> interactionTask = client.GetAsync<Interaction>(references, new InteractionExecutionOptions(new InteractionExpandOptions(IpInfo.DefaultFacetKey)));

 ReadOnlyCollection<IEntityLookupResult<Interaction>> interactions = await interactionTask;

 foreach (var i in interactions)
 {
 IpInfo ipInfoFacet = i.Entity.GetFacet<IpInfo>(Sitecore.XConnect.Collection.Model.CollectionModel.FacetKeys.IpInfo);

 var businessName = ipInfoFacet.BusinessName; // Do some work with facet values
 }
 }
 catch (XdbExecutionException ex)
 {
 // Manage exceptions
 }
 }
 }

 public void ExampleSync()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {

 // Contact reference from ID
 var contactRef = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F45-E611-82E6-34E6D7117DCB"));
 Sitecore.XConnect.InteractionReference interactionRef = new Sitecore.XConnect.InteractionReference(contactRef, Guid.Parse("DA2DA5F0-4348-E611-82E7-34E6D7117DCB"));

 // Contact reference from identifier
 var identifiedContactRef = new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore");
 Sitecore.XConnect.InteractionReference secondInteractionRef = new Sitecore.XConnect.InteractionReference(identifiedContactRef, Guid.Parse("E6067926-1F45-E611-82E6-34E6D7117DCB"));

 var references = new List<Sitecore.XConnect.InteractionReference>()
 {
 interactionRef, secondInteractionRef
 };

 IReadOnlyCollection<IEntityLookupResult<Interaction>> interactions = client.Get<Interaction>(references, new InteractionExecutionOptions(new InteractionExpandOptions(IpInfo.DefaultFacetKey)));

 foreach (var i in interactions)
 {
 IpInfo ipInfoFacet = i.Entity.GetFacet<IpInfo>(Sitecore.XConnect.Collection.Model.CollectionModel.FacetKeys.IpInfo);

 var businessName = ipInfoFacet.BusinessName; // Do some work with facet values
 }
 }
 catch (XdbExecutionException ex)
 {
 // Manage exceptions
 }
 }
 }
 }
}

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

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

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

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

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

using Sitecore.XConnect.Collection.Model;
using Sitecore.XConnect.Operations;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Sitecore.XConnect;
using System.Collections.ObjectModel;
using Sitecore.XConnect.Client;

namespace Documentation
{
 public class GetInteractionsWithFacetsDefaults
 {
 public async void ExampleAsync()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {

 // Contact reference from ID
 var contactRef = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F45-E611-82E6-34E6D7117DCB"));
 Sitecore.XConnect.InteractionReference interactionRef = new Sitecore.XConnect.InteractionReference(contactRef, Guid.Parse("DA2DA5F0-4348-E611-82E7-34E6D7117DCB"));

 // Contact reference from identifier
 var identifiedContactRef = new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore");
 Sitecore.XConnect.InteractionReference secondInteractionRef = new Sitecore.XConnect.InteractionReference(identifiedContactRef, Guid.Parse("E6067926-1F45-E611-82E6-34E6D7117DCB"));

 var references = new List<Sitecore.XConnect.InteractionReference>()
 {
 interactionRef, secondInteractionRef
 };

 Task<ReadOnlyCollection<IEntityLookupResult<Interaction>>> interactionTask = client.GetAsync<Interaction>(references, new InteractionExecutionOptions(new InteractionExpandOptions(IpInfo. DefaultFacetKey)));

 ReadOnlyCollection<IEntityLookupResult<Interaction>> interactions = await interactionTask;

 foreach (var i in interactions)
 {
 IpInfo ipInfoFacet = i.Entity.GetFacet<IpInfo>();

 var businessName = ipInfoFacet.BusinessName; // Do some work with facet values
 }
 }
 catch (XdbExecutionException ex)
 {
 // Manage exceptions
 }
 }
 }

 public void ExampleSync()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {

 // Contact reference from ID
 var contactRef = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F45-E611-82E6-34E6D7117DCB"));
 Sitecore.XConnect.InteractionReference interactionRef = new Sitecore.XConnect.InteractionReference(contactRef, Guid.Parse("DA2DA5F0-4348-E611-82E7-34E6D7117DCB"));

 // Contact reference from identifier
 var identifiedContactRef = new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore");
 Sitecore.XConnect.InteractionReference secondInteractionRef = new Sitecore.XConnect.InteractionReference(identifiedContactRef, Guid.Parse("E6067926-1F45-E611-82E6-34E6D7117DCB"));

 var references = new List<Sitecore.XConnect.InteractionReference>()
 {
 interactionRef, secondInteractionRef
 };

 IReadOnlyCollection<IEntityLookupResult<Interaction>> interactions = client.Get<Interaction>(references, new InteractionExecutionOptions(new
InteractionExpandOptions(IpInfo. DefaultFacetKey)));

 foreach (var i in interactions)
 {
 IpInfo ipInfoFacet = i.Entity.GetFacet<IpInfo>();

 var businessName = ipInfoFacet.BusinessName; // Do some work with facet values
 }
 }
 catch (XdbExecutionException ex)
 {
 // Manage exceptions
 }
 }
 }
 }
}

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

## インタラクションの側面設定とイベントの追加

コンタクト面を設定するには .SetFacet() 拡張法を使う必要があります。詳細は以下をご覧ください:

-   [集合の相互作用面](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/set-interaction-facets.html "Set interaction facets")
-   [インタラクションイベントの追加](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/add-interaction-events.html "Add interaction events")

> !注インタラクションの側面は一度設定されると更新できません。