2015-10-06

ExactTargetのAPI叩いてみた【Triggered Email編】

前回EmailSendDefinitionを使ってメールを送信したので、今回はTriggered Emailを使ってメールを送信したいと思います。EmailSendDefinitionの方法はあるユーザ(=Subscriber)の集団に対して一括でメールを送信するユースケースに利用するのに対し、Triggered EmailはSubscriberの任意のアクションに対して、メールを送信するようなユースケースで利用することになります。具体的には、「問い合わせフォームで問い合わせを完了した時に、確認メールをユーザ宛に送信する」といったWebサイトのアクションに対するメール送信等に利用します。

参考URLはこちら

TriggeredSendの作成

まずは、コンテンツ>メール からメールを作成します。(作成方法は前回記事を参照)

次にインタラクション>トリガーによるメール から「トリガーによる送信」を作成します。

etmc-triggeredsend-setting1

名前や外部キーは適当に入力

etmc-triggeredsend-setting2

コンテンツには予め作成したメールを選択します。

etmc-triggeredsend-setting3

購読者管理で指定したリスト、データエクステンションにはTriggeredEmailで送信したSubscriberのデータが格納されます。EmailSendDefinitionと違って、一斉に送信するために定義するものではなく、送信したSubscriberの情報を格納するための箱を定義するものになります。「購読者の更新」にチェックを付けると、既にSubscriberが存在していた場合は該当レコードを更新してくれるようになります。

etmc-triggeredsend-setting4

管理先にデータエクステンションを選択する場合は、予めトリガー送信用のテンプレートで作成したデータエクステンションを作成しておく必要があります。

etmc-triggeredsend-de1

テンプレートの選択でTriggeredSendDataExtensionを選択して作成すればOKです。

etmc-triggeredsend-de2

トリガーによる送信の作成が完了したら「保存」ボタンをクリックして保存処理を行い、「開始/再開」ボタンをクリックします。開始するまではTriggeredSendは利用できないことに注意してください。

etmc-triggeredsend-setting5

また、「開始」時に以下のようなエラーが発生することがあります。

etmc-triggeredsend-error

これは選択したリスト、データエクステンションの項目とメール文面のAMPScriptによるバインディング項目の整合性が取れていないため発生するエラーになります。また、コンテンツでメール文面を変更しても、トリガーによる送信で「パブリッシュ変更」をしないと実際の文面が変更されません。さらに、「停止」処理を行ったトリガーによる送信に対してAPIでメール送信を行うと、キューイングされて、開始処理が行われた時に一斉に送信されるような仕様となっています。 従って、メールの文面を変える場合は、「トリガーによる送信の停止」→「メールコンテンツの編集」→「パブリッシュ変更」→「トリガーによる送信の開始」というプロセスを踏む必要があります。停止期間中にキューに溜まったメールは、開始後に新しいメール文面で配信されることになります。

参考URL:Triggered Email Change Process

キューに溜まっているメールに関しては対象の「トリガーによる送信」を選択して「キューの表示」から確認することが可能です。

etmc-triggeredsend-queue

APIによる送信

SOAP APIだとこんな感じ。(認証は省略)

$ curl -i -X POST \
   -H "SOAPAction:\"Create\"" \
   -H "Content-Type:text/xml" \
   -d \
'<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Header>
    <fueloauth xmlns="http://exacttarget.com">{access_token}</fueloauth>
  </Header>
  <Body>
    <CreateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
      <Objects xsi:type="TriggeredSend">
        <PartnerKey xsi:nil="true"/>
        <ObjectID xsi:nil="true"/>
        <TriggeredSendDefinition>
          <PartnerKey xsi:nil="true"/>
          <ObjectID xsi:nil="true"/>
          <CustomerKey>{triggeredSend_external_key</CustomerKey>
        </TriggeredSendDefinition>
        <Subscribers>
          <PartnerKey xsi:nil="true"/>
          <ObjectID xsi:nil="true"/>
          <EmailAddress>hoge@example.com</EmailAddress>
          <SubscriberKey>hogehogekey</SubscriberKey>
          <Attributes>
            <Name>FullName</Name>
            <Value>hogehoge</Value>
          </Attributes>
          <Attributes>
            <Name>hoge</Name>
            <Value>fugafuga</Value>
          </Attributes>
        </Subscribers>
      </Objects>
    </CreateRequest>
  </Body>
</Envelope>' \
 'https://webservice.s7.exacttarget.com/Service.asmx'

REST APIだとこんな感じ

$ curl -i -X POST \
   -H "Content-Type:application/json" \
   -H "Authorization:Bearer {access_token}" \
   -d \
'{
    "From": {
        "Address": "hoge@example.com",
        "Name": "hoge"
    },
    "To": {
        "Address": "fuga@example.com",
        "SubscriberKey": "fuga",
        "ContactAttributes": {
            "SubscriberAttributes": {
              "FullName":"HOGE 太郎",
              "hoge":"foobar"
            }
        }
    }
}' \
 'https://www.exacttargetapis.com/messaging/v1/messageDefinitionSends/key:{triggered_send_externel_key}/send'
このエントリーをはてなブックマークに追加