---
title: "側面とサービスへのアクセス"
slug: "accessing-facets-and-services"
abstract: "インタラクション・ファセット、インタラクション・ファセット、xConnect Client APIなどのサービスにアクセスする方法。"
---
# 側面とサービスへのアクセス

このトピックでは、インタラクションファセッツ、インタラクションファセット、xConnect Client APIなどのサービスにアクセスする方法をインタラクションアグリゲーションプロセッサの文脈で説明します。

## 荷重面

インタラクション集約処理パイプラインは [、xConnect Client API](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/xconnect-client-api-overview.html "xConnect Client API overview")を使って連絡先やインタラクションを取得します。どのコンタクトやインタラクションの側面を取得するかを指定するには、プロセッサに以下のいずれかまたは両方の属性を付けて指定する必要があります:

-   UsesInteractionFacets
-   UsesContactFacets

> !注アグリゲーションパイプラインが実行される際にxConnectからファセットが要求されます。プロセッサがパフォーマンスへの影響を減らすために必要とするファセットのみを要求してください。

以下の例では、プロセッサは1つのインタラクションファセットと1つの接触ファセットをロードします:

UseInteractionFacets(WebVisit.DefaultFacetKey)
UsesContactFacets(PersonalInformation.DefaultFacetKey,Classification.DefaultFacetKey)
public class UserAgentProcessor:InteractionAggregationPipelineProcessor
{
 protected override void OnProcess(InteractionAggregationPipelineArgsargs)
 {
 }
}

> !重要特定のファセットを明示的にリクエストしなければ、処理中に利用できません。なぜか理解するために、[コンタクト](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/get-contacts.html "Get contacts") や [インタラクション](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/get-interaction-events.html "Get interaction events")を得る際の拡張オプションの役割についてさらに詳しく読んでください。

### 連絡先とインタラクションへのアクセス

連絡と交流はargs.Context物件で利用可能です:

UseInteractionFacets(WebVisit.DefaultFacetKey)
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class UserAgentProcessor: InteractionAggregationPipelineProcessor
{
protected override void OnProcess(InteractionAggregationPipelineArgsargs)
 {
 var contact=args.Context.Contact;
 var interaction=args.Context.Interaction;
 }
}

もしインタラクションや連絡先の要素をリクエストされた場合は、.GetFacet<T> 拡張方式からアクセスできます:

var personalFacet=args.Context.Contact.GetFacet<PersonalInformation>
(PersonalInformation.DefaultFacetKey);

あるいは、Sitecore.XConnect.Collection.Modelにある拡張方法を使うこともできます:

var personalFacet=args.Context.Contact.Personal();

## その他のサービスへのアクセス

すべてのプロセッサは以下のAPIにアクセスできargs.Context.Sources:

-   xConnect クライアント API
-   リファレンスデータサービス
-   定義マネージャー
-   分類管理者

> !重要集約プロセッサの文脈では、すべてのサービスエンドポイント(xConnect、定義、タクソノミー、参照データサービス)は読み取り専用です。

### xConnectへのアクセス

xConnectクライアントAPIの読み取り専用インスタンスはargs.Context.Sources.Collectionを通じてアクセスされます。連絡先およびインタラクションデータの検索や取得が可能です:

UseInteractionFacets(WebVisit.DefaultFacetKey)
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class UserAgentProcessor: InteractionAggregationPipelineProcessor
{
 protected override void OnProcess(InteractionAggregationPipelineArgsargs)
 {
 // Searching
 var contacts = args.Context.Sources.Collection.Contacts.Where(x=>x.Identifiers.Any(c=>c.IdentifierType==ContactIdentifierType.Known));
 var interactions = args.Context.Sources.Collection.Interactions.Where(x=>x.EngagementValue>20);
 // Get some contact or interaction that is not available in the args
 var someID=Guid.NewGuid();
 var contactRef=newList<ContactReference>(){newContactReference(someID)};
 var getContact=args.Context.Sources.Collection.GetAsync<Contact>(contactRef,newContactExpandOptions());
 }
}

> !注連絡とやり取りはそれぞれargs.Context.Contactとargs.Context.Interactionを通じて利用できることを忘れないでください。

### 定義マネージャーへのアクセス

UseInteractionFacets(WebVisit.DefaultFacetKey)
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class UserAgentProcessor:InteractionAggregationPipelineProcessor
{
 protected overridevoidOnProcess(InteractionAggregationPipelineArgsargs)
 {
 protected overridevoidOnProcess(InteractionAggregationPipelineArgsargs)
 {
 var goalManager=
args.Context.Sources.Definitions.GetDefinitionManager<IGoalDefinition>();
 }
 }
}

> !注汎用的な定義マネージャーは存在せず、どのタイプのイベントを探しているかを把握し、適切な定義マネージャーを使う必要があります。

### 分類管理ツールへのアクセス

UseInteractionFacets(WebVisit.DefaultFacetKey)
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class UserAgentProcessor: InteractionAggregationPipelineProcessor
{
 protected override void OnProcess(InteractionAggregationPipelineArgsargs)
 {
 protected override void OnProcess(InteractionAggregationPipelineArgsargs)
 {
 var assetTaxonomyManager =
args.Context.Sources.Taxonomies.GetManager<AssetTaxonomyManager>();
 }
 }
}

> !注汎用的なタクソノミーマネージャーは存在せず、どのタイプのタクソノミーを探しているかを把握し、適切なタクソノミーマネージャーを使う必要があります。

### 参照データサービスへのアクセス

UseInteractionFacets(WebVisit.DefaultFacetKey)
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class UserAgentProcessor: InteractionAggregationPipelineProcessor
{
 protected override void OnProcess(InteractionAggregationPipelineArgsargs)
 {
 var definitionType=args.Context.Sources.Reference.EnsureDefinitionType("alpha");
 var criteria=newDefinitionCriteria("enterprise",definitionType)
 {
 Culture=newCultureInfo("da")
 };
 Definition<string,string>definition=args.Context.Sources.Reference.GetDefinition<string,string>(criteria,true);
 }
}

> !note集約パイプラインは、Reference Data Service APIの読み取り専用バージョンを使用し、Reference Data Serviceデータベースに直接接続します。