autobahn for Salesforce カスタマイズガイド

本カスタマイズガイドについて

本書に記載している内容は、当社の提供する「autobahn for Salesforce」についてのカスタマイズガイドとなります。 本書を利用することにより、当社の提供する Visualforce ページを利用することなく、配信を行うことが可能となります。

注意事項

  • 本書は autobahn for Salesforce の正常な動作を保証するものではありません。また、当社サポート対象外であることもご留意ください。
  • 本書は autobahn for Salesforce(autobahn for AppExchange) のバージョン 2.9 を対象とした資料となっています。
  • Apexクラスの設定内には、VersionSettingsタブ画面にautobahn for Salesforceのバージョンを指定できる設定欄があり、その設定によってバージョンが固定される場合があるのでご注意ください。古いバージョンで作成されたレコードは、autobahn for Salesforceサーバへ連携する際も古いバージョンでの扱いとなるため、配信がエラーとなることがございます。

配信までの流れについて

接続設定が済んでいることが前提です。

事前に「メール文面設定 Ver2」「抽出条件設定 Ver2」オブジェクトのレコードが必要となります。 上記2点のレコードを用いて、「メール配信設定 Ver2」オブジェクトレコードを作成することにより、配信が行われます。

各オブジェクトの詳細

配信に利用するオブジェクトの内、最低限必要なオブジェクト及び項目についての詳細を記載します。

本書で説明していないオブジェクトや項目については、配信には直接関係しません。 確認したい場合は、オブジェクトマネージャから、プレフィックスが「TRC_ABAE」のオブジェクトを参照してください。

メール文面設定

概要

メール文面を設定するオブジェクトです。

オブジェクト定義

表示ラベル メール文面設定 Ver2
API 参照名 TRC_ABAE__Template__c

 

項目定義

表示ラベル API 参照名 データ型 制約 説明
メール文面設定名 Name テキスト(80) • 必須 ユーザが識別するための名称を指定します。
Fromアドレス TRC_ABAE__FromAddress__c テキスト(255) • 必須

• メールアドレス形式※1であること

受信側に表示される送信元のメールアドレスを指定します。

Fromアドレス参照名 TRC_ABAE__FromAddressReference__c テキスト(255)   受信側に表示される送信元のメールアドレスを差込記号※2形式で指定します。
From名称 TRC_ABAE__FromName__c テキスト(64)   受信側に表示される送信元の名称を指定します。
From名称参照名 TRC_ABAE__FromNameReference__c テキスト(255)   受信側に表示される送信元の名称を差込記号※2形式で指定します。
Reply-Toアドレス TRC_ABAE__ReplyToAddress__c テキスト(255) • メールアドレス形式※1であること 受信側に表示される返信先のメールアドレスを指定します。
Reply-To名称 TRC_ABAE__ReplyToName__c テキスト(64)   受信側に表示される返信先の名称を指定します。
件名 TRC_ABAE__Subject__c テキスト(255) • 必須

メール文面の件名を指定します

差込記号※2を含めることにより、配信対象レコードの持つ項目を差し込むことが可能です。

文面タイプ TRC_ABAE__ContentType__c

選択リスト

• Text

• RichText

• HTML

• MultiPart

• 必須 Text(テキストメール)、RichText(HTMLメール)、HTML(HTMLメール)、Multipart(マルチパートメール)の何れかの方式を指定します。
RichText と HTML に関しては、編集画面表示時のレイアウトの差のみとなるため、HTML メールを送信する場合は HTML を指定します。
テキストパート TRC_ABAE__TextPart__c ロングテキストエリア(131072)  

メール文面のテキストパートを指定します。

「文面タイプ」項目で「RichText」「HTML」を指定した場合、指定する必要はありません。

差込記号※2を含めることにより、配信対象レコードの持つ項目を差し込むことが可能です。

「オプトアウト設定」の指定を行っている場合、「##optout##」を含めることにより、任意の箇所にオプトアウト URL を差し込むことが可能です。

HTMLパート TRC_ABAE__HtmlPart__c ロングテキストエリア(131072)  

メール文面の HTML パートを指定します。

「文面タイプ」項目で「Text」を指定した場合、指定する必要はありません。

差込記号※2を含めることにより、配信対象レコードの持つ項目を差し込むことが可能です。

「オプトアウト設定」の指定を行っている場合、「##optout##」を含めることにより、任意の箇所にオプトアウト URL を差し込むことが可能です。

オプトアウト設定 TRC_ABAE__OptoutSetting__c 参照関係(設定 Ver2) • 「設定 Ver2」オブジェクトレコードの「カテゴリ」項目値が「Optout」のレコードのみ

「設定 Ver2」オブジェクトレコードの Id を指定します。

オプトアウト設定を利用する場合、Salesforce 上の「設定 Ver2」タブから、オプトアウト設定を事前に作成する必要があります。

Tracking settings TRC_ABAE__TrackingSettings__c ロングテキストエリア(131072)  

トラッキング(文面中の URL へのアクセス)を取得する場合に指定します。

トラッキングを取得しない場合は、指定する必要はありません。

詳細は後述「トラッキング設定オブジェクト」を参照してください。

Open activity setting TRC_ABAE__OpenActivitySetting__c ロングテキストエリア(2048)  

開封履歴を取得する場合に指定します。

「文面タイプ」項目で「Text」を指定した場合や、開封履歴を取得しない場合は、指定する必要はありません。

詳細は後述「リアクション設定オブジェクト」を参照してください。

  • ※1 メールアドレス形式とは、Apex コードでの正規表現「^[-+.!#$%&/'^{}\'~?|=\w]{1,64}@[-a-zA-Z0-9]{1,63}(\.[-a-zA-Z0-9]{1,63})\.[a-zA-Z]{1,63}$`」に合致している文字列であること。
  • ※2 差込記号とは、「{{オブジェクトの API 参照名.項目の API 参照名(.項目の API 参照名)}}」といった形式であること。(例:「{{Lead.Owner.Email}}」)

抽出条件設定

概要

配信対象を設定するオブジェクトです。

オブジェクト定義

表示ラベル 抽出条件設定 Ver2
API 参照名 TRC_ABAE__Filter__c

 

項目定義

表示ラベル API 参照名 データ型     制約     説明
抽出条件設定名 Name テキスト(80) • 必須 ユーザが識別するための名称を指定します。
オブジェクト TRC_ABAE__Object__c テキスト(255) • 必須

• オブジェクトの API 参照名であること※1

配信対象レコードのオブジェクトの API 参照名を指定します。

メールアドレス TRC_ABAE__EmailField__c テキスト(255)

 

• 必須
• 項目の API 参照名であること※2

配信対象レコードのメールアドレスが保存されている項目の API 参照名を指定します。
所有者別に絞込み TRC_ABAE__FilterByOwner__c 選択リスト
• All Records
• My Records
• 必須 配信対象レコードの内、「メール配信設定 Ver2」オブジェクトのレコード所有者が所有するレコードのみを対象としたい場合は「My ecords」を、そうでない場合は「All Records」を指定します。
Conditions TRC_ABAE__Conditions__c ロングテキストエリア(65536) • 必須

配信対象レコードを抽出するための条件を指定します。 

本項目の値については、「抽出条件設定 Ver2」オブジェクトのレコードの詳細画面に表示される各条件の表示、及び「配信対象者リスト」内の件数及びリストの表示に利用されます。 配信処理時の抽出には、下記「SOQL」項目の値が利用されますのでご注意ください。 

 詳細は後述「抽出条件設定オブジェクト」を参照してください。 

Exclude duplicated Email setting TRC_ABAE__ExcludeDuplicatedEmailAddressesSetting__c ロングテキストエリア(2048) • 必須

配信対象レコードを重複除外で配信するための条件を指定します。 例: 

'{\"Enabled\":true,\"Column\":lead.createddate,\"Condition\":ASC}' 

SOQL TRC_ABAE__SOQL__c ロングテキストエリア(20000) • 必須 配信対象レコードを抽出するための条件を指定します。

SOQL の WHERE 区に相当する値を指定します。
例:
((Lead.Email LIKE '%@tricorn.co.jp%') AND (Lead.HasOptedOutOfEmail = false')) AND (Lead.Id != null)
• 末尾には、「メールアドレス」項目で指定した項目を直接持つオブジェクトの Id の条件を追加してください。
◦ 「メールアドレス」項目に「Lead.Email」を指定した場合:
AND (Lead.Id != null)
◦ 「メールアドレス」項目に「Lead.Client__r.Email__c」を指定した場合:
AND (Lead.Client__r.Id != null)

「所有者別に絞込み」項目で「My Records」を指定した場合、「メールアドレス」項目で指定した項目を直接持つオブジェクトの OwnerId の条件を、上記オブジェクトの Id の条件と AND 繋ぎで追加してください。
%%'OWNERID'%%」は、配信処理時に「メール配信設定 Ver2」オブジェクトのレコード所有者のレコード ID に置換されます。
例:
((Lead.Email LIKE '%@tricorn.co.jp%') AND (Lead.HasOptedOutOfEmail = false')) AND (Lead.Id != null AND lead.OwnerId = %%'OWNERID'%%)
◦「メールアドレス」項目に「Lead.Email」を指定した場合:Lead.OwnerId = %%'OWNERID'%%
◦「メールアドレス」項目に「Lead.Client__r.Email__c」を指定した場合: Lead.Crient__r.OwnerId = %%'OWNERID'%%

本項目の値については、配信処理時の抽出に利用されます。
「抽出条件設定 Ver2」オブジェクトのレコードの詳細画面に
表示される各条件の表示、及び「配信対象者リスト」内の件数及びリストの表示には、上記「Conditions」項目の値が利用されます。
カスタム条件ロジック TRC_ABAE__CustomFilterLogic__c テキスト(255)   カスタム条件ロジック(例:1 AND (2 OR 3))を指定します。

何も指定されていない場合、すべて AND 区切りでの抽出が行われます。
テストメール用抽出条件設定 TRC_ABAE__IsDeliveryTestFilter__c チェックボックス   「メール文面設定 Ver2」「メール配信設定 Ver2」オブジェクトのレコードにて、「テストメール」を行う際の抽出条件設定とするかを指定します。
  • ※1 オブジェクトの API 参照名とは、「オブジェクトの API 参照名」といった形式であること。(例:「Lead」)
  • ※2 項目の API 参照名とは、「オブジェクトの API 参照名.項目の API 参照名(.項目の API 参照名)」といった形式であること。(例:「Lead.Email」)

メール配信設定

概要

配信対象を設定するオブジェクトです。 配信処理開始後に当該レコードの更新は行わないでください。

オブジェクト定義

表示ラベル メール配信設定 Ver2
API 参照名 TRC_ABAE__Schedule__c

 

項目定義

表示ラベル API 参照名 データ型 制約    説明
メール配信設定名 Name テキスト(80) • 必須 ユーザが識別するための名称を指定します。
メール文面設定 TRC_ABAE__Template__c 参照関係(メール文面設定 Ver2) • 必須 「メール文面設定 Ver2」オブジェクトレコードの Id を指定します。
抽出条件設定 TRC_ABAE__Filter__c 参照関係(抽出条件設定 Ver2) • 必須

• 「抽出条件設定 Ver2」オブジェクトレコードの「テストメール用抽出条件設定」項目値が「false」のレコードのみ


「抽出条件設定 Ver2」オブジェクトレコードの Id を指定します。

配信日時 TRC_ABAE__SendingDateTime__c 日付/時間 • 必須 メール配信を行う日時を指定します。
活動履歴に追加 TRC_ABAE__AddHistory__c チェックボックス   配信対象レコードの活動履歴に配信の記録の有無を指定します。
Bounce setting TRC_ABAE__BounceSetting__c ロングテキストエリア(2048) • 必須

バウンス時の設定を指定します。

詳細は後述「リアクション設定オブジェクト」を参照してください。

Status TRC_ABAE__Status__c テキスト(255)  

配信処理状況を示すステータスが保存されます。

当該項目自体を指定しないか、null を指定します。

レコードタイプ RecordTypeId レコードタイプ  

配信状況に応じたレイアウトを表示するためにレコードタイプを利用しています。

当該項目自体を指定しないか、レコードタイプの表示ラベル「Reserved」の Id を指定します。

 

各 JSON オブジェクトの詳細

トラッキング設定オブジェクト

文面(「テキストパート」項目、「HTMLパート」項目)中に存在する URL をトラッキングする場合の設定情報です。 「リアクション設定オブジェクト」の配列である必要があります。 各リアクション設定オブジェクトは、最大で100個までである必要があります。

サンプル

[
    {
        "Url":"<https://www.tricorn.co.jp/>",
        "AddTrackingLog":true,
        "AddHistory":true,
        "UpdateRecord":null
    },
    {
        "Url":"<https://www.tricorn.co.jp/service/>",
        "AddTrackingLog":true,
        "AddHistory":true,
        "UpdateRecord":{
            "Column":"Lead.TrackingCount__c",
            "Value":"+1"
        }
    }
]

リアクション設定オブジェクト

個々のトラッキングや開封履歴の設定情報です。

要素名 制約 説明
Url String/Null • トラッキングの場合は必須
• http / https から始まる URL 形式であること
文面中に含まれる URL を指定します。
開封履歴やバウンスの場合は「null」を指定します。
AddTrackingLog Bool • 必須 「リアクションデータ Ver2」オブジェクトにレコードを追加するか、「メール配信設定」オブジェクトの「トラッキング集計」項目にて集計対象とする場合は「true」を指定します。
AddHistory Bool • 必須 配信対象レコードの活動履歴への追加の有無を指定します。
UpdateRecord リアクション設定値の更新オブジェクト/Null   配信対象レコードの項目を更新したい場合は「リアクション設定値の更新オブジェクト」を指定します。
更新をしない場合は「null」を指定します。

サンプル

{
    "Url":"<https://www.tricorn.co.jp/service/>",
    "AddTrackingLog":true,
    "AddHistory":true,
    "UpdateRecord":{
        "Column":"Lead.TrackingCount__c",
        "Value":"+1"
    }
}

リアクション設定値の更新オブジェクト

配信対象レコードの項目を更新する場合の設定情報です。

要素名 制約 説明
Column String • 必須
•API 参照名であること
更新を行いたい項目の API 参照名(オブジェクトの API 参照名.項目の API 参照名(.項目の API 参照名))を指定します。
Value String • 必須
•255 文字以内であること
更新値を指定します。
指定できる値にについては、別途マニュアルを参照してください。

サンプル

{
    "Column":"Lead.TrackingCount__c",
    "Value":"+1"
}

抽出条件設定オブジェクト

詳細画面上で各条件を表示したり、配信対象者リスト画面で件数やリストを出すため設定情報です。 配信処理時の抽出には使われないため、ご注意ください。 「条件設定オブジェクト」の配列である必要があります。 各条件設定オブジェクトの Index 要素はユニークかつ 1 からの連番である必要があります。 各条件設定オブジェクトは、最大で10個までである必要があります。

サンプル

[
    {
        "Index":1,
        "Column":"Lead.Email",
        "Operator":"Contain",
        "Value":"@tricorn.co.jp"
    },
    {
        "Index":2,
        "Column":"Lead.HasOptedOutOfEmail",
        "Operator":"Equal",
        "Value":"false"
    }
]

条件設定オブジェクト

個々の条件の設定情報です。

要素名   型    制約 説明
Index Integer • 必須
• 1-10 の範囲であること
条件の順番及び「抽出条件設定 Ver2」オブジェクトの「カスタム条件ロジック」項目で用いる値として指定します。
Column String • 必須 条件として用いる項目の API 参照名(オブジェクトの API 参照名.項目の API 参照名(.項目の API 参照名))を指定します。
Operator String • 必須
• 下記いずれかの値であること値説明Equal次の文字列と一致するNotEqual次の文字列と一致しないLessThan<GreaterThan>LessEqual<=GreaterEqual>=Start次の文字列で始まるContain次の文字列を含むNotContain次の文字列を含まないIncludes次の値を含むExcludes次の値を含まない
条件式を指定します。
Value String • 必須
•1024 文字以内であること
条件値を指定します。

指定できる値にについては、別途マニュアルを参照してください。

サンプル

{
    "Index":1,
    "Column":"Lead.Email",
    "Operator":"Contain",
    "Value":"@tricorn.co.jp"
}

APEX Batch からメール配信設定を作成する場合について

基本的には、メール配信設定オブジェクトではレコード登録時にパッケージがautobahn for Salesforceのサーバにコールアウトしますが、APEX Batchの場合は後述の内容を参考にコールアウトを行ってください。

  • insert/update を行うたびにコールアウトが必要となります。
    • insert 時に TRC_ABAE__RequestData__c 項目に保存されるデータのコールアウトを行わず、その後の update 時の TRC_ABAE__RequestData__c 項目に保存されるデータのコールアウトを行った場合、レスポンスは 200 を返しますが配信は行われません。
      • ABAE では非同期で配信情報の管理を行っており、insert の配信情報が存在しない状態で update の配信情報を受け取った場合、不正なリクエストとして破棄しています。
    • 配信日時の変更を伴った update 時にコールアウトを行わないと、元の配信日時の時間になった際に配信処理を行いますのでご注意ください。
  • TRC_ABAE__RequestData__c 項目に値が入っている場合は TRC_ABAE__RequestData__c 項目の更新が行われないため、insert/update 時に TRC_ABAE__RequestData__c 項目を空にしてください。 insert 時は特に意識する必要はありませんが、update 時には明示的に当該項目の値を空にしてから update をお願いします。

コールアウトに必要な情報が保存されている項目

API 参照名(オブジェクト) API 参照名(項目)
TRC_ABAE__Schedule__c TRC_ABAE__RequestData__c ロングテキストエリア(131072)

 

TRC_ABAE__RequestData__c 項目に保存される JSON の形式

要素名 説明
Endpoint String webhook の送信先
Method String HTTP メソッド
Headers Array[Header] HTTP ヘッダ
Body String リクエストデータ

例:

{
    "Endpoint": "<https://webhook.autobahn-app.net/v1/Schedules>",
    "Method": "POST",
    "Headers": [
        {
            "Field": "Content-Type",
            "Value": "application/json; charset=UTF-8"
        },
        {
            "Field": "X-Service-Source",
            "Value": "salesforce"
        },
        {
            "Field": "Authorization",
            "Value": "Bearer aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        }
    ],
    "Body": "{\\"DeliveryType\\":\\"bulk\\",\\"PackageVersion\\":2.9,\\"ScheduleId\\":\\"a00000000000000000\\",\\"Action\\":\\"create\\",\\"IsMergeable\\":false,\\"DeliveryDateTime\\":\\"2022-08-23T12:00:00+0900\\",\\"Owner\\":{\\"Id\\":\\"a00000000000000000\\",\\"Email\\":\\"test@example.com\\",\\"Language\\":\\"ja\\"},\\"Time\\":1661223600000,\\"Verify\\":\\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\"}"
}

Header

要素名 説明
Field String HTTP ヘッダフィールド
Value String HTTP ヘッダ値

例:

{
    "Field": "Content-Type",
    "Value": "application/json; charset=UTF-8"
}

APEX コードのサンプル

TRC_ABAE__Schedule__c schedule = [SELECT id, TRC_ABAE__RequestData__c FROM TRC_ABAE__Schedule__c WHERE id = '[record id]'];

Map<String, Object> requestData = (Map<String, Object>)JSON.deserializeUntyped(schedule.TRC_ABAE__RequestData__c);
String endpoint                 =  (String)requestData.get('Endpoint');
String method                   =  (String)requestData.get('Method');
Map<String, String> headers     =  new Map<String, String>();
String body                     =  (String)requestData.get('Body');
for (Object header : (List<Object>)requestData.get('Headers')) {
    Map<String, Object> h = (Map<String, Object>)header;
    headers.put((String)h.get('Field'), (String)h.get('Value'));
}

HttpRequest request = new HttpRequest();
request.setEndpoint(endpoint);
request.setTimeout(10000);
request.setMethod(method);
for (String field : headers.keySet()) {
    request.setHeader(field, headers.get(field));
}
request.setBody(body);

Http http = new Http();
response = http.send(request);
System.debug(response.getStatusCode()); // 200

 

更新