本カスタマイズガイドについて
本書に記載している内容は、当社の提供する「autobahn for AppExchange」についてのカスタマイズガイドとなります。 本書を利用することにより、当社の提供する Visualforce ページを利用することなく、配信を行うことが可能となります。
注意事項
- 本書は autobahn for AppExchange の正常な動作を保証するものではありません。また、当社サポート対象外であることもご留意ください。
- 本書は autobahn for AppExchange のバージョン 2.9 を対象とした資料となっています。
- Apexクラスの設定内には、VersionSettingsタブ画面にautobahn for AppExchangeのバージョンを指定できる設定欄があり、その設定によってバージョンが固定される場合があるのでご注意ください。古いバージョンで作成されたレコードは、autobahn for AppExchangeサーバへ連携する際も古いバージョンでの扱いとなるため、配信がエラーとなることがございます。
配信までの流れについて
接続設定が済んでいることが前提です。
事前に「メール文面設定 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を含めることにより、配信対象レコードの持つ項目を差し込むことが可能です。 「オプトアウト設定」の指定を行っている場合、「 |
|
HTMLパート | TRC_ABAE__HtmlPart__c | ロングテキストエリア(131072) |
メール文面の HTML パートを指定します。 「文面タイプ」項目で「Text」を指定した場合、指定する必要はありません。 差込記号※2を含めることにより、配信対象レコードの持つ項目を差し込むことが可能です。 「オプトアウト設定」の指定を行っている場合、「 |
|
オプトアウト設定 | 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 参照名を指定します。 |
所有者別に絞込み | 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」のレコードのみ
|
配信日時 | 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 AppExchangeのサーバにコールアウトしますが、APEX Batchの場合は後述の内容を参考にコールアウトを行ってください。
- insert/update を行うたびにコールアウトが必要となります。
- insert 時に TRC_ABAE__RequestData__c 項目に保存されるデータのコールアウトを行わず、その後の update 時の TRC_ABAE__RequestData__c 項目に保存されるデータのコールアウトを行った場合、レスポンスは 200 を返しますが配信は行われません。
- ABAE では非同期で配信情報の管理を行っており、insert の配信情報が存在しない状態で update の配信情報を受け取った場合、不正なリクエストとして破棄しています。
- 配信日時の変更を伴った update 時にコールアウトを行わないと、元の配信日時の時間になった際に配信処理を行いますのでご注意ください。
- insert 時に TRC_ABAE__RequestData__c 項目に保存されるデータのコールアウトを行わず、その後の update 時の TRC_ABAE__RequestData__c 項目に保存されるデータのコールアウトを行った場合、レスポンスは 200 を返しますが配信は行われません。
- 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