コンタクトプロセッサを作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、自分だけのコンタクトプロセッサーを作成・登録する方法を示します。
ContactProcessingProcessorを継承する
すべてのコンタクトプロセッサは以下の以下のものを継承しますSitecore.Analytics.Aggregation.Pipeline.ContactProcessingProcessor:
public class SampleProcessor : ContactProcessingProcessor { protected override void OnProcess(ContactProcessingArgs args) { } }
取得する接触面を指定してください
処理パイプラインはxConnect Client APIを使って接触点を取得します。どの接触面を取得するかを指定するには、プロセッサにUsesContactFacetsを付けて特定する必要があります。
使用例:
UsesContactFacets("Personal", "Classification") public class SampleProcessor : ContactProcessingProcessor { protected override void OnProcess(ContactProcessingArgs args) { } }
ファセットキーはハードコーディングしないことが推奨されます。Sitecoreの組み込みファセット名 はファセットオブジェクト自体にあります。例えばPersonalInformation.DefaultFacetKey。
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey) public class SampleProcessor : ContactProcessingProcessor { }
!重要特定のファセットを明示的にリクエストしなければ、処理中に利用できません。なぜか理解するために、連絡先取得時の拡張オプションの役割についてさらに詳しく読んでください。
ContactProcessingArgsの使用
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey) public class SampleProcessor : ContactProcessingProcessor { protected override void OnProcess(ContactProcessingArgs args) { } }
連絡先へのアクセス
連絡先はargsで直接利用できます:
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey) public class SampleProcessor : ContactProcessingProcessor { protected override void OnProcess(ContactProcessingArgs args) { var contact = args.Contact; } }
連絡先の要素をリクエストされた場合は、.GetFacet
var personalFacet = args.Contact.GetFacet
あるいは、Sitecore.XConnect.Collection.Modelにある拡張方法を使うこともできます:
var personalFacet = args.Contact.Personal();
アクセス処理理由
args.ProcessingReasonプロパティはタイプSitecore.Analytics.Processing.ProcessingReasonの のenumを返します。これは、そもそもなぜその連絡が処理されているのかを示しています。
- Created
- Updated
- Obsoleted: 連絡先識別子は廃止されました
- Unknown
他のAPIへのアクセス
すべてのプロセッサは以下のAPIにアクセスできargs.Sources:
- xConnect クライアント API
- リファレンスデータサービス
- 定義管理者
- 分類管理者
!重要コンタクトプロセッサの文脈では、すべてのサービスエンドポイント(xConnect、定義、分類、参照データサービス)は読み取り専用として扱うべきです。
xConnectへのアクセス
xConnectクライアントAPIの読み取り専用インスタンスはargs.Sources.Collectionを通じてアクセスされます。連絡先データの検索や取得が可能です:
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey) public class SampleProcessor : ContactProcessingProcessor { protected override void OnProcess(ContactProcessingArgs args) { // Searching var contacts = args.Sources.Collection.Contacts.Where(x => x.Identifiers.Any(c => c.IdentifierType == ContactIdentifierType.Known)); } }
!注連絡先はargs.Contactを通じて利用できることを忘れないでください。
定義マネージャーへのアクセス
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class SampleProcessor : ContactProcessingProcessor
{
protected override void OnProcess(ContactProcessingArgs args)
{
var goalManager = args.Sources.Definitions.GetDefinitionManager
分類管理ツールへのアクセス
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)
public class SampleProcessor : ContactProcessingProcessor
{
protected override void OnProcess(ContactProcessingArgs args)
{
var assetTaxonomyManager = args.Sources.Taxonomies.GetManager
参照データサービスへのアクセス
UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey) public class SampleProcessor : ContactProcessingProcessor { protected override void OnProcess(ContactProcessingArgs args) { var definitionType = args.Sources.Reference.EnsureDefinitionType("alpha"); var criteria = new DefinitionCriteria("enterprise", definitionType) { Culture = new CultureInfo("da") };
Definition<string, string> definition = args.Sources.Reference.GetDefinition<string, string>(criteria, true); } }
!注コンタクト処理パイプラインは参照データサービスAPIの読み取り専用版を使用し、クライアントAPIは使用しません。
コンタクトプロセッサの設定
プロセッサーをコンタクト処理パイプラインに追加してください: