Email Experience Manager クライアント API

Current version: 10.1

Email Experience Manager ClientAPIServiceクラス (Sitecore.EmailCampaign.Cd.Services.ClientAPIService) は、購読と購読解除を処理するために EXM によって使用されます。これを使用して、リスト マネージャーでリストへの登録を管理し、自動化されたメール メッセージを送信できます。

Email Experience Manager クライアント API (ClientApiService) は IOC コンテナーに登録されるため、クラスのコンストラクターに注入するか、ServiceLocator を使用できます。例:

RequestResponseshell
IClientApiService _clientApiService;public MyConstructor(IClientApiService clientApiService)
{
  _clientApiService = clientApiService;
}

または

RequestResponseshell
IClientApiService clientApiService = ServiceLocator.ServiceProvider.GetService< IClientApiService >()

ClientAPIService API は CD ロールにのみ登録されます。また、CD サーバーは、リスト マネージャー リストにコンタクトを追加または削除したり、EXM キャンペーンを送信したりするように設定されていません。したがって、スケーリングされたサーバー設定で作業している場合は、 ClientAPIService 要求を使用して、その作業を CM サーバーに委任する必要があります。

次の図は、このプロセスを示しています。

クライアント API リクエスト プロセス.

以下のパブリック メソッドは、IClientApiService で使用できます。

これらのメソッドは、ContactIdentifier を使用して、操作を実行するコンタクトを識別します。詳細については、「コンタクト識別子」と「コンタクトの識別」を参照してください。

最初のパブリック メソッドについて、次の表で説明します。

名前:

SendAutomatedMessage

説明:

このメソッドは、アクティブ化された自動メール キャンペーン (automatedMessage.MessageId) をコンタクト (automatedMessage.ContactIdentifier) に、カスタム トークンとターゲット言語のセット、およびディスパッチ時にメール キャンペーンをレンダリングするときに使用されるカスタム クエリ文字列パラメーターのセットを指定するオプションで送信します。

AutomatedMessage クラスを CustomQueryStringParameters プロパティを使用して拡張できるため、追加のクエリ文字列パラメーターがサポートされます (たとえば、IDictionary<string, string> CustomQueryStringParameters)。

WebPageMail 本文リンクは GenerateBodyLink パイプラインで生成されます。このパイプラインは、メール ディスパッチ時に EXM がメール キャンペーンのコンテンツをダウンロードするためのリンクを生成するときに実行されます。このパイプラインはベース URL を生成し、デフォルトのクエリ文字列パラメーターを追加してから、カスタム クエリ文字列パラメーターを追加します。例:

RequestResponseshell
http://XXXX/?sc_itemid=XXX&sc_lang=XXX&sc_pd_view=XXX&yourParam=someValue&
ec_eq=XXX

この例で .cshtml 内に挿入されたコードは、次のようになります。

RequestResponseshell
@{
	string customQueryString = Request.Params["yourParam"];
	if (!string.IsNullOrWhiteSpace(customQueryString))
	{
		<div class="customquerystringparameters">@MvcHtmlString.Create(customQueryString)</div>
	}
}

使用方法:

RequestResponseshell
void SendAutomatedMessage(AutomatedMessage automatedMessage)  

2 番目のパブリック メソッドについて、次の表で説明します。

名前:

UpdateListSubscription

説明:

このメソッドを使用すると、コンタクトのリスト サブスクリプションを更新できます。メッセージに関する操作プロパティ (message.ListSubscribeOperation) により、実行する操作が決まり、以下のいずれかの値に設定できます。

デフォルトでは、EXM はコンタクトの登録を解除するときにイベントを自動的に登録します。ただし、これは ClientApiService を使用して、購読解除インタラクション データ (message.UnsubscribeInteractionData) を定義することによっても達成できます。これを行うには、以下のパラメーターを設定します。

  • message.MessageId: メール キャンペーン ID

  • message.InstanceId: メール キャンペーン ID

  • message.ManagerRootId: メール キャンペーンに関連付けられたマネージャー ルートの ID

  • message.UnsubscribeInteractionData.MessageLanguage: コンタクトがメール キャンペーンを受信する言語

  • message.UnsubscribeInteractionData.TestValueIndex: メール キャンペーンが AB テストの場合のバリアント番号

  • message.UnsubscribeInteractionData.EmailAddressHistoryEntryId: EmailAddressHistory ファセットのメール アドレスの ID。

    注記

    これらの値は、静的 Sitecore.Modules.EmailCampaign.Core.ExmContext でも見つけることができます。

操作:

Subscribe

この操作により、コンタクト (message.ContactIdentifier) がキャンペーンで定義された最初の非セグメント化インクルード リスト (message.MessageId) に追加されます。message.RequireSubscriptionConfirmation が設定されている場合、EXM はコンタクトに確認メール メッセージを送信して、リストに追加する前に購読を確認するように求めます。さらに、コンタクトはデフォルトのグローバル オプトアウト リストから削除されます。

注記

SubscribeEvent パイプラインを実装することにより、この機能を拡張することができます。

Unsubscribe

この操作により、コンタクト (message.ContactIdentifier) は、メール キャンペーン (message.MessageId) に含まれるすべてのコンタクト リストから削除されます。コンタクトがリストから正常に登録解除され、[購読中止の送信確認] がマネージャー ルートで有効になっている場合、EXMは、StandardMessages.UnsubscribeNotification 設定によって定義されている通知をコンタクトに送信します。含まれているコンタクト リストからコンタクトを削除できなかった場合、またはコンタクトがどのリストにも表示されていない場合、コンタクトはマネージャー ルートで定義されているグローバル オプトアウト リストに追加されます。この動作は UnsubscribeFromList パイプラインでオーバーライドできます。

注記

UnsubscribeFromList パイプラインを変更することにより、この機能を拡張することができます。

UnsubscribeFromAll

この操作は、コンタクト (message.ContactIdentifier) をメール キャンペーンのマネージャー ルートで定義されているグローバル オプトアウト リスト (unsubscribeMessage.MessageId) に追加します。

注記

UnsubscribeFromAllEvent パイプラインを実装した場合、この機能を拡張することができます。

AddToList

この操作は、コンタクト (message.ContactIdentifier) をコンタクト リスト (message.ListId) に追加します。

RemoveFromList

この操作は、コンタクト (message.ContactIdentifier) をコンタクト リスト (message.ListId) から削除します。

Do you have some feedback for us?

If you have suggestions for improving this article,