カスタム パーソナライゼーション トークンを作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Email Experience Manager (EXM) では、トークンを使用してメール キャンペーン メッセージをパーソナライズできます。たとえば、メッセージの冒頭の挨拶でトークン $name$ を使用すると、メール キャンペーンを送信するときにトークンがコンタクトの名前に置き換えられます。
デフォルトでは使用できないトークンを使用する場合は、メール キャンペーンに使用できるカスタム トークンを作成できます。
カスタム トークンをオンライン プレビュー モードで置き換えるには、getContact パイプラインを拡張する必要があります。
カスタム トークンを作成するには、以下のことを行う必要があります。
カスタム コンタクト ファセットを作成する
Sitecore Experience Database では、新しいカスタム コンタクト ファセットを作成することにより、独自のカスタム データでコンタクトを拡張できます。
カスタム ディスパッチ タスクを作成する
作成したカスタム ファセットを読み込むには、次のことを行う必要があります。
-
Sitecore.EmailExperience.ContentManagement.config
ファイルでデフォルトのディスパッチ タスクをオーバーライドします。例:
RequestResponsenamespace 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); } } }
-
exm/dispatchTask の
App_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
トークン マップ クラスをオーバーライドして、トークン キーをカスタム ファセットのプロパティにバインドするには:
-
App_Config\Sitecore\EmailExperience\Sitecore.EmailExperience.Core.config
ファイル内のrecipients/recipientPropertyTokenMap
要素をカスタム トークン マップに置き換えるか、パッチを適用します。例:
RequestResponse<recipientPropertyTokenMap type="FooBar.CustomRecipientPropertyTokenMap, FooBar" singleInstance="true" />
-
カスタム トークンを追加して、カスタム トークン マップを作成します。
例:
RequestResponsenamespace 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$ トークンをメール メッセージで使用できるようになりました。これは、該当するコンタクトのカスタム ファセットに保存されている値に置き換えられます。
ファイルから新しいカスタム ファセットをインポートする場合は、コンタクトのインポート ウィザードを拡張して、カスタム コンタクト ファセットを含める (新しいマッピング フィールドとして) ことができます。