1. セグメンテーションと条件

カスタム条件とセグメンテーション クエリを作成する

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

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

カスタム条件とセグメンテーションクエリを作成して、コンタクトを特定し、マーケティングオートメーションプランに登録できます。次の例では、Sitecore:

  • 好みの映画館で顧客をセグメント化して、毎週最も関連性の高いプロモーションを送信します。たとえば、Sitecore Cityの映画館を訪れたお客様は、近日開催予定のクラシック映画祭のチケットを3対2で購入できます。

  • 顧客が希望する映画館に基づいて、自動化プランを通じて進む道筋を変更します。たとえば、Free Popcornプランに登録しているお客様は、East Sitecoreがお好みの映画館である場合、チョコレートバーのクーポンを受け取ります。East Sitecoreの映画館は、誤って2000本ではなく20,000本のチョコレートを注文してしまいました。

この例では、次のインターフェイスを実装する1つのクラス( predicateとも呼ばれる)を作成します。

  • IConditionの実装は、マーケティング オートメーション エンジンによって使用されます。

  • IContactSearchQueryContext実装は、List Managerがセグメント化されたリストを作成するために使用されます。

メモ

ほとんどの場合、条件とセグメンテーション クエリの両方を作成するのが理にかなっています。ただし、コンタクトに固有のデータ (メンバーシップIDなど) をターゲティングしている場合は、セグメンテーションクエリを作成しても意味がありません。この場合、IContactSearchQueryContextを実装しないでください。

この例では、次の条件が満たされた場合にtrueを返すカスタム条件とセグメンテーション クエリ クラスを作成する方法を示します。

  • コンタクトには少なくとも1つのインタラクションがあります。

  • 指定された映画館名は、連絡先の優先映画館と一致します。

手記

Sitecoreパーソナライゼーション エンジンは、異なる条件の実装を使用します。

CinemaDetailsファセットを作成してデプロイする

カスタムファセット (CinemaDetailsファセットなど) を作成し、条件クラスで使用するためにデプロイする必要があります。

CinemaDetailsファセットを作成してデプロイするには:

  1. Sitecoreを継承するクラスを作成します。XConnect.Facetです。

    using System;
    using System.Linq.Expressions;
    using Sitecore.Framework.Rules;
    using Sitecore.XConnect;
    using Sitecore.XConnect.Segmentation.Predicates;
    
    namespace Documentation.Examples
    {
        // Contact facet that stores contact's preferred cinema name
        [Serializable]
        public class CinemaDetails : Facet
        {
            public const string DefaultFacetKey = "CinemaDetails";
            public string PreferredCinema { get; set; }
        }
    }
  2. コレクション モデルを実装して登録します。

  3. コレクション モデルをデプロイします。

条件クラスを作成する

CinemaDetailsファセットを作成したので、カスタム ファセットを使用する条件ロジックを使用して条件クラスを作成する必要があります。

条件クラスを作成するには:

  • 次のコード サンプルに示すように、IConditionIContactSearchQueryFactoryを継承するクラスを作成します。

大事な

結合はすべての検索プロバイダーでサポートされているわけではないため、contact.InteractionsプロパティではなくInteractionsCacheファセットを使用する必要があります。

using System;
using System.Linq.Expressions;
using Sitecore.Framework.Rules;
using Sitecore.XConnect;
using Sitecore.XConnect.Segmentation.Predicates;
using Sitecore.XConnect.Collection.Model;
using System.Linq;

namespace Documentation.Examples
{
    public class PreferredCinemaMatches : ICondition, IContactSearchQueryFactory
    {
        public string PreferredCinema { get; set; }

       // TIP: There are other operation types in theSitecore.XConnect.Segmentation.Predicates namespace
        public StringOperationType Comparison { get; set; }

        // Evaluates condition for single contact
        public bool Evaluate(IRuleExecutionContext context)
        {
            var contact = context.Fact<Contact>();

            return Comparison.Evaluate(contact.GetFacet<CinemaDetails>(CinemaDetails.DefaultFacetKey)?.PreferredCinema, PreferredCinema)
                && contact.Interactions.Any();
        }

        // Evaluates contact in a search context
        // IMPORTANT: Use InteractionsCache() facet rather than contact.Interactions as some search providers do not provide joins.
        public Expression<Func<Contact, bool>> CreateContactSearchQuery(IContactSearchQueryContext context)
        {
            return contact => Comparison.Evaluate(contact.GetFacet<CinemaDetails>(CinemaDetails.DefaultFacetKey).PreferredCinema, PreferredCinema)
            && contact.InteractionsCache().InteractionCaches.Any();
        }
    }
}

条件記述子を作成する

条件記述子は、条件タイプと関連するテキストを定義します。その後、SitecoreユーザーはList ManagerとMarketing Automationのユーザー インターフェイスで条件テキストを検索できます。

条件記述子を作成するには:

  1. カスタム条件とセグメンテーション クエリDLLを、Content Management、Content Delivery、xDB Processingのすべてのコア ロールにデプロイします。

  2. /sitecore/system/Settings/Rules/Definitions/Elementsで条件の場所を選択します(例: /sitecore/system/Settings/Rules/Definitions/Elements/XConnect - Contact Personal Details)。

    手記

    条件の場所によって、条件を使用できるユーザーインタフェースが決まります。

  3. 次のテンプレートを使用して条件を作成します/sitecore/Templates/System/Rules/Condition template

    xConnect conditions shown in the Content Editor
  4. 次の例に示すように、TypeフィールドとTextフィールドを指定します。この例では、文字列比較を使用しています。

    Type and Text fields defined for the preferred cinema condition

List Managerでカスタム セグメンテーション ルールのセクションを作成する

セグメントの作成時にカスタムルールを見つけやすくするために、Create ruleダイアログボックスに表示されるカスタムルールのセクションを作成できます。

Custom section in the Create rule dialog box.

List Managerでカスタム セグメンテーション ルールのセクションを作成するには:

  1. マスター データベース内の /sitecore/System/Settings/Rules/Definitionsアイテムに移動します。

  2. Elementフォルダを右クリックし、Insert, Element Folderをクリックします。

  3. Messageダイアログボックスで、フォルダの名前を入力し、「OK」をクリックします。

  4. 新しく作成したElementフォルダを展開し、Tags/Defaultアイテムに移動します。

  5. Default項目を選択し、ContentタブのTaxonomyセクションのTagsフィールドでxConnect – Search QueryタグをダブルクリックしてSelectedリストに移動します。

  6. 変更を保存します。

手記

カスタムセクションは、少なくとも1つのルールが含まれている場合にのみ表示されます。

マーケティングオートメーションエンジンの設定

マーケティング オートメーション エンジンでは、カスタム条件に対して取引先担当者を評価するために、条件とセグメンテーション クエリDLLのコピーが必要です。

手記

マーケティング オートメーション エンジンのコンテキストでは、条件とセグメンテーション クエリの組み合わせは、構成のpredicateと呼ばれます。

マーケティングオートメーションエンジンを設定するには:

  1. 条件とセグメンテーション クエリDLLをマーケティング オートメーション エンジンにデプロイします。

  2. 次のXMLを使用して設定ファイルを作成し、C:\path\to\xconnect\App_data\jobs\continuous\AutomationEngine\App_Data\Config\sitecore\Segmentationに追加します。 idノードは、Sitecoreの条件アイテムのIDと一致する必要があります。

    <Settings>
        <Sitecore>
            <XConnect>
            <Services>
                <DescriptorLocator>
                <Options>
                    <PredicateDescriptors>
                        <PreferredCinemaMatches>
                            <id>{E9046292-BF68-4733-9FD4-10A74FB45E50}</id>
                            <type>Documentation.Examples.PreferredCinemaMatches, Documentation.Examples</type>
                        </PreferredCinemaMatches>
                    </PredicateDescriptors>
                </Options>
                </DescriptorLocator>
            </Services>
            </XConnect>
        </Sitecore>
    </Settings>
            
手記

デフォルトの述部は、sc.XConnect.Segmentation.Predicates.Model.xml設定ファイルで定義されます。

この記事を改善するための提案がある場合は、 お知らせください!