カスタムパーソナライズトークンの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Email Experience Manager(EXM)では、トークンを使ってメールキャンペーンのメッセージをパーソナライズできます。例えば、メッセージの冒頭でトークン$name$を使うことで、メールキャンペーンを送信する際にトークンを連絡先の名前に置き換えることができます。
デフォルトで利用できないトークンを使いたい場合は、メールキャンペーン用のカスタムトークンを作成できます。
!注オンラインプレビューモードでカスタムトークンを置き換えるには、getContactパイプラインを延長する必要があります。
カスタムトークンを作成するには、以下の条件が必要です:
カスタムコンタクトのファセットを作成する
Sitecoreエクスペリエンスデータベースでは、新しい カスタム連絡先の側面を作成することで、ご自身のカスタムデータで連絡を拡張できます。
カスタムディスパッチタスクを作成する
作成したカスタムファセットを読み込むには、以下の条件が必要です:
-
Sitecore.EmailExperience.ContentManagement.configファイルのデフォルトのディスパッチタスクを上書きします。
例えば:
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
> GetContacts(List 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に置き換えます。
例えば:
!重要特定の受信者向けのメールメッセージをプレビューすると、CustomDispatchTaskで実装されたカスタムトークンは見えません。代わりに、レビュータブのクイックテスト機能Sendをご利用ください。
デフォルトのトークンマップを上書きします
recipientPropertyTokenMapトークンとコンタクトのプロパティ間のバインディングを記述するデフォルトの実装を上書きしなければなりません。
recipientPropertyTokenMapトークンマップクラスをオーバーライドし、トークンキーをカスタムファセットのプロパティにバインドするには:
-
App_Config\Sitecore\EmailExperience\Sitecore.EmailExperience.Core.configファイルのrecipients/recipientPropertyTokenMap要素をカスタムトークンマップに置き換えるかパッチしてください。
例えば:
-
カスタムトークンを追加してカスタムトークンマップを作成しましょう。
例えば:
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
(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ドルトークンを使えば、該当する連絡先のカスタム面に保存された値に置き換えられます。
!注新しいカスタムファセットをファイルからインポートしたい場合は、インポートコンタクトウィザードを拡張してカスタムコンタクトファセット を新しいマッピングフィールドとして含めることができます。