1. コンタクト処理

連絡先プロセッサを作成する

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

このページの翻訳は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<T> 拡張メソッドを使用してアクセスできます。

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

または、Sitecore.XConnect.Collection.Modelにある拡張メソッドを使用します。

var personalFacet = args.Contact.Personal();

アクセス処理の理由

args.ProcessingReasonプロパティは、最初に連絡先が処理される理由を示すSitecore.Analytics.Processing.ProcessingReason型のenumを返します。

  • Created: 連絡先が新規である

  • Updated: 連絡先が更新されました

  • Obsoleted: 連絡先識別子は廃止されました

  • Unknown: 処理の理由が不明

他のAPIへのアクセス

すべてのプロセッサは、args.Sourcesを介して次のAPIにアクセスできます。

  • xConnectクライアントAPI

  • リファレンスデータサービス

  • 定義マネージャー

  • タクソノミーマネージャー

大事な

コンタクト プロセッサのコンテキストでは、すべてのサービス エンドポイント (xConnect、定義、分類、参照データ サービス) は読み取り専用として扱う必要があります。

xConnectへのアクセス

xConnect Client 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<IGoalDefinition>();
    }
}

タクソノミーマネージャーへのアクセス

[UsesContactFacets(PersonalInformation.DefaultFacetKey, Classification.DefaultFacetKey)]
public class SampleProcessor : ContactProcessingProcessor
{
    protected override void OnProcess(ContactProcessingArgs args)
    {
        var assetTaxonomyManager = args.Sources.Taxonomies.GetManager<AssetTaxonomyManager>();
    }
}

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

[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は使用しません。

コンタクト・プロセッサーの構成

次に示すように、プロセッサをコンタクト処理パイプラインに追加します。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <sitecore>
<pipelines>
  <group groupName="analytics.aggregation">
    <pipelines>
      <contacts>
        <processor type="Sitecore.Analytics.Aggregation.Tests.Processors.FakeContactProcessingProcessor, Sitecore.Analytics.Aggregation.Tests" />
      </contacts>
    </pipelines>
  </group>
</pipelines>
    </sitecore>
</configuration>
この記事を改善するための提案がある場合は、 お知らせください!