カスタムパーソナライゼーショントークンの作成

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

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

Email Experience Manager (EXM) では、トークンを使用してメール キャンペーン メッセージをパーソナライズできます。たとえば、メッセージの先頭で、あいさつ文でトークン $name$ を使用して、メール キャンペーンを送信するときにトークンが連絡先の名前に置き換えられるようにすることができます。

デフォルトでは使用できないトークンを使用する場合は、メール キャンペーンに使用できるカスタム トークンを作成できます。

メモ

オンラインプレビューモードでカスタムトークンを置き換えるには、getContactパイプラインを拡張する必要があります。

カスタムトークンを作成するには、次の操作を行う必要があります。

カスタムコンタクトファセットを作成する

Sitecore Experience Databaseでは、新しい カスタム コンタクト ファセットを作成することで、独自のカスタム データを使用してコンタクトを拡張できます。

カスタムディスパッチタスクの作成

作成したカスタムファセットをロードするには、次の操作を行う必要があります。

  1. Sitecore.EmailExperience.ContentManagement.configファイル内のデフォルトのディスパッチタスクを上書きします。

    例えば:

    RequestResponse
    namespace FooBar
    {
    public class CustomDispatchTask : DispatchTask
    {
        private IContactService _contactService;
        public CustomDispatchTask([NotNull] ShortRunningTaskPool taskPool, [NotNull] IRecipientValidator recipientValidator, [NotNull] IContactService contactService, [NotNull] EcmDataProvider dataProvider, [NotNull] ItemUtilExt itemUtil, [NotNull] IEventDataService eventDataService, [NotNull] IDispatchManager dispatchManager), [NotNull] EmailAddressHistoryManager emailAddressHistoryManager, [NotNull] IRecipientManagerFactory recipientManagerFactory, [NotNull] SentMessageManager sentMessageManager) 
     
            : base(taskPool, recipientValidator, contactService, dataProvider, itemUtil, eventDataService, dispatchManager), emailAddressHistoryManager, recipientManagerFactory, sentMessageManager)
        {
            _contactService = contactService;
        }
        protected override IReadOnlyCollection<IEntityLookupResult<Contact>> GetContacts(List<DispatchQueueItem> dispatchQueueItems)
        {
            return _contactService.GetContacts(dispatchQueueItems.Select(x => x.ContactIdentifier), PersonalInformation.DefaultFacetKey, EmailAddressList.DefaultFacetKey, ConsentInformation.DefaultFacetKey, PhoneNumberList.DefaultFacetKey, ListSubscriptions.DefaultFacetKey, EmailAddressHistory.DefaultFacetKey,  ExmKeyBehaviorCache.DefaultFacetKey, MyCustomFacet.DefaultFacetKey);
        }
    } }
  2. exm/dispatchTaskApp_Config\Sitecore\EmailExperience\Sitecore.EmailExperience.ContentManagement.configファイルで、デフォルトのディスパッチタスクをカスタムdispatchTaskに置き換えます。

    例えば:

    RequestResponse
    <dispatchTask type="FooBar.CustomDispatchTask, FooBar ">
    <param ref="exm/dispatchFailedTaskPool"/>
    <param desc="recipientValidator" ref="exm/recipientValidator" />
    <param desc="contactService" ref="exm/contactService" />
    <param desc="dataProvider" ref="exm/dataProvider" />
    <param desc="itemUtil" ref="exm/itemUtil" />
    <param desc="eventDataService" ref="exm/eventDataService" />
    <param desc="dispatchManager" ref="exm/dispatchManager" />
    <param desc="emailAddressHistoryManager" ref="exm/emailAddressHistoryManager" />
    <param desc="recipientManagerFactory" ref="exm/recipientManagerFactory" />
    <param desc="sentHistoryManager" ref="exm/sentHistoryManager" />
    
    </dispatchTask>
大事な

特定の受信者の電子メール メッセージをプレビューすると、CustomDispatchTaskを使用して実装されたカスタム トークンは表示されません。代わりに、レビュー タブの クイック テストの送信 機能を使用します。

デフォルトのトークンマップを上書きする

連絡先のトークンとプロパティの間のバインディングを記述するrecipientPropertyTokenMapトークン マップ クラスの既定の実装をオーバーライドする必要があります。

recipientPropertyTokenMapトークン マップ クラスをオーバーライドし、トークン キーをカスタム ファセットのプロパティにバインドするには、次のようにします。

  1. ファイル内のrecipients/recipientPropertyTokenMap要素をカスタム トークン マップに置き換えるかApp_Config\Sitecore\EmailExperience\Sitecore.EmailExperience.Core.configパッチを適用します。

    例えば:

    RequestResponse
    <recipientPropertyTokenMap type="FooBar.CustomRecipientPropertyTokenMap, FooBar" singleInstance="true" />
    
  2. カスタムトークンを追加して、カスタムトークンマップを作成します。

    例えば:

    RequestResponse
    namespace FooBar
    {
    public class CustomRecipientPropertyTokenMap : DefaultRecipientPropertyTokenMap
    {
    protected static readonly MethodInfo GetMyFacetValue = 
    typeof(FacetExtensions).GetMethod(nameof(FacetExtensions.GetMyCustomFacetValue), new[] { typeof(MyCustomFacet) });
    static CustomRecipientPropertyTokenMap()
    {
    if (TokenBindings == null)
    {
    TokenBindings = new Dictionary<Token, RecipientPropertyTokenBinding>();
    }
    RecipientPropertyTokenBinding customTokenBinding = RecipientPropertyTokenBinding.Build<MyCustomFacet>(new Token("customtokenkey"), null, GetMyFacetValue);
    TokenBindings.Add(customTokenBinding.Token, customTokenBinding);
    }
    }
      public static class FacetExtensions
      {
        public static string GetMyCustomFacetValue (this MyCustomFacet facet)
        {
          return facet.SomeProperty;
        }
    }
    }
    

これで、電子メールメッセージで $customtokenkey$ トークンを使用できるようになり、関連する連絡先のカスタムファセットに保存されている値に置き換えられます。

手記

ファイルから新しいカスタムファセットをインポートする場合は、コンタクトのインポートウィザードを拡張して、カスタムコンタクトファセットを 新しいマッピングフィールドとして含めることができます。

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、