---
title: "Email Experience ManagerクライアントAPI"
slug: "the-email-experience-manager-client-api"
abstract: "サブスクリプション管理にはEmail Experience ManagerクライアントAPIを使いましょう。"
---
# Email Experience ManagerクライアントAPI

Email Experience Manager *ClientAPIService*クラスSitecore.EmailCampaign.Cd.Services.ClientAPIServiceは、EXMが購読・解約を処理するために使われています。List Manager内のリストの購読管理や自動メール送信に利用できます。

Email Experience ManagerクライアントAPI(ClientApiService)はIOCコンテナに登録されているため、クラスのコンストラクタに注入するか、例えばServiceLocatorを使うことができます。

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

または

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

ClientAPIService APIはCDロールにのみ登録されます。また、CDサーバーはList Managerリストから連絡先を追加・削除したり、EXMキャンペーンを送信する設定がされていません。したがって、スケールドサーバー環境で作業する場合は、*ClientAPIService*リクエストを使ってその作業をCMサーバーに委任する必要があります。

以下の図はこの過程を示しています:

![Client API request process.](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/exm/100/email-experience-manager/images/EXM%20Client%20API%209.0+.png>)

以下の公開方法が利用可能IClientApiService:

-   [自動メッセージを送信](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_para-idm273110992993554)
-   [UpdateListサブスクリプション](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_para-idm273110992972016)

これらの手法は、操作を行うためにContactIdentifierを用いて、操作したい連絡先を特定します。詳細については、[Contact identifiers](https://doc.sitecore.com/xp/en/developers/100/sitecore-experience-platform/contact-identifiers.html)および[Identifying Contactを参照してください](https://doc.sitecore.com/xp/en/developers/100/sitecore-experience-platform/identifying-contacts.html)。

最初の公開手法は以下の表に説明されています。

-   **名前:**: SendAutomatedMessage
-   **説明:**このメソッドは、自動メールキャンペーン(automatedMessage.MessageId)を担当者(automatedMessage.ContactIdentifier)に送信し、カスタムトークンのセットとターゲット言語、さらにディスパッチ時にメールキャンペーンのレンダリングに使用されるカスタムクエリ文字列パラメータのセットを指定するオプションを提供します。CustomQueryStringParametersプロパティを使ってAutomatedMessageクラスを拡張し、追加のクエリ文字列パラメータ(例:IDictionary<string、string> CustomQueryStringParameters)をサポートします。WebPageMailの本文リンクはGenerateBodyLinkパイプラインで生成されます。このパイプラインは、EXMがメールキャンペーンの内容をダウンロードするためのリンクを生成する際にメール発送中に実行されます。パイプラインはベースURLを生成し、デフォルトのクエリ文字列パラメータを追加し、さらにカスタムクエリ文字列パラメータを追加します。例えば:この例の.cshtmlに注入されたコードは以下の通りです:

http://XXXX/?sc\_itemid=XXX&sc\_lang=XXX&sc\_pd\_view=XXX&yourParam=someValue&
ec\_eq=XXX

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

-   **使用例:**:

void SendAutomatedMessage(AutomatedMessage automatedMessage)

2つ目の公開手法は以下の表に説明されています。

**名前:**

UpdateListサブスクリプション

説明:

このメソッドにより、連絡先のリストサブスクリプションを更新できます。メッセージ上の操作プロパティ(message.ListSubscribeOperation)はどの操作を取るべきかを決定し、以下のいずれかの値に設定できます。  
  

-   [購読](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_para-idm273093069596970)
-   [購読解除](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_para-idm273093070222078)
-   [すべての購読解除](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_para-idm273093070256014)
-   [AddToList](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_para-idm273093070267374)
-   [リストから削除](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html#UUID-0debfb46-3e0b-67a1-a839-5da1a3484eeb_N1546536934420)

  
  
デフォルトでは、EXMは連絡先の解約時に自動的にイベントを登録します。しかし、これは ClientApiServiceを用いても、解約インタラクションデータ(message.UnsubscribeInteractionData)を定義することで実現できます。これを行うには、以下のパラメータを設定します。  
  

-   メッセージ。MessageId:メールキャンペーンID
-   メッセージ。InstanceId:メールキャンペーンのID
-   メッセージ。ManagerRootId:メールキャンペーンに関連付けられたマネージャールートのID
-   メッセージ。UnsubscribeInteractionData.MessageLanguage:連絡先がキャンペーンのメールを受け取る言語
-   メッセージ。UnsubscribeInteractionData.TestValueIndex:メールキャンペーンがABテストの場合のバリアント番号
-   メッセージ。UnsubscribeInteractionData.EmailAddressHistoryEntryId: EmailAddressHistoryの側面にあるメールアドレスのID。

**運営:**

購読

この操作は、キャンペーン上で定義された最初の非セグメント化されたincludeリスト(message.MessageId)に連絡先(message.ContactIdentifier)を追加します。message.RequireSubscriptionConfirmationが設定されている場合、EXM連絡先に確認メールを送信し、リストに追加する前に購読を確認するよう促します。さらに、その連絡先はデフォルトのグローバルオプトアウトリストから除外されます。  
  
\> \[!注\]  
\> SubscribeEventパイプラインを実装することで[この機能を拡張](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-exm-extensibility-points.html)できます。

購読解除

この操作は、メールキャンペーンに含まれるすべての連絡先リストから連絡先(message.ContactIdentifier)を削除します(message.MessageId)。連絡先がリストから正常に解除され、管理者ルートで **Send解除** 確認が有効EXM、 StandardMessages.UnsubscribeNotification設定で定義された通知を連絡先に送信します。連絡先が含まれる連絡先リストから削除できなかったり、どのリストにも表示されない場合、その連絡先はマネージャールート上で定義されたグローバルオプトアウトリストに追加されます。この動作はパイプライン UnsubscribeFromList上書き可能です。  
  
\> \[!注\]  
\> [この機能を拡張](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-exm-extensibility-points.html)するには、 UnsubscribeFromList パイプラインを修正できます。

すべての購読解除

この操作は、メールキャンペーンのマネージャールート(unsubscribeMessage.MessageId)に定義されたグローバルオプトアウトリストに連絡先(message.ContactIdentifier)を追加します。  
  
\> \[!注\]  
\> UnsubscribeFromAllEventパイプラインを実装すれば[、この機能を拡張](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-exm-extensibility-points.html)できます。

AddToList

この操作は接触者リスト(message.ContactIdentifier)を接点リスト(message.ListId)に追加します。

リストから削除

この操作は接点リスト(message.ListId)から接点(message.ContactIdentifier)を除去します。