コンテンツにスキップ

ディレクティブの作成と配信

メッセージにディレクティブを記述し、テスト配信で値を確認してから保存します。

ステップ3. メッセージにディレクティブを記述する

Section titled “ステップ3. メッセージにディレクティブを記述する”

ディレクティブは、APIを呼び出す行とレスポンスを使う行に分かれます。

ディレクティブの例と各部分の意味、配信結果


  • パスとクエリ文字列には、{{ userId }}、{{ tags.* }} などのパーソナライズ変数を使えます。ドメインの部分には使えません。
  • メールアドレスのように @・+・& が含まれる可能性のある値は、url_encode で囲んでください。囲まないと値が崩れて渡されることがあります。
✓ Do
{% connected_content https://api.example.com/coupon?uid={{ userId }} %}
{% connected_content https://api.example.com/member?email={{ email | url_encode }} :save member %}
✕ Don’t

ドメインに変数を入れると保存できません。

{% connected_content https://{{ tags.domain }}/coupon %}

リクエスト方式記述するもの注意事項
GETURLだけで問題ありません-
POST:method post + :body:method post なしで :body だけを書くと保存はできますが、bodyが無視されたままGETで呼び出されます
POST・JSONで受け取るAPI:method post + :body + :content_type application/json:content_type application/json が抜けていると、APIがデータを読み取れず空欄で配信されます

POSTの例

:body の {{ userId }} の部分に受信者の値が入るため、userIdがabc123の受信者であれば uid=abc123 が送信されます。

{% connected_content https://api.example.com/recommend :method post :body uid={{ userId | url_encode }} :save rec %}
おすすめ商品:{{ rec.product_name }}

JSONで送る場合も、bodyは キー=値 の形式で書き、値を url_encode で囲んでください。FlareLaneがJSONに変換して送信するため、値に引用符などの特殊文字が含まれていても崩れません。オプションが多い場合は、行を分けて書くこともできます。

✓ Do

名前が Kim "Flare" Lane であっても、{"uid": "…", "name": "Kim \"Flare\" Lane"} として正しく送信されます。

{% connected_content https://api.example.com/recommend
:method post
:content_type application/json
:body uid={{ userId | url_encode }}&name={{ name | url_encode }}
:save rec %}
✕ Don’t

JSONを直接書くと、値に引用符が含まれる受信者ではbodyが崩れ、APIが400エラーを返して空欄で配信されます。

{% connected_content https://api.example.com/recommend
:method post
:content_type application/json
:body {"name": "{{ name }}"}
:save rec %}

  • 利用準備のステップでコピーしておいた認証情報を、URLの後ろに付けます。
  • 1つのディレクティブでBasicとTokenを一緒に使うことはできません。
登録した方式オプション
Basic:basic_auth 認証名
Token:auth_credentials 認証名

レスポンスがJSONかプレーンテキストかは、APIの Content-Type レスポンスヘッダーで決まります。開発チームから受け取ったレスポンス例で確認してください。2つの形式は取り出し方が異なります。

区分JSONレスポンスプレーンテキストのレスポンス
値が入る場所{{ 名前.フィールド }} を書いた場所ディレクティブを書いた場所(レスポンス全体)
:save名前を付けます。省略すると connected付けてもディレクティブの場所に出力されます
複数の場所で使う可能不可。必要な場合は開発チームにJSONレスポンス({"code": "SAVE20-8F3K"})を依頼してください
HTTPステータスコード{{ 名前.__http_status_code__ }}使用不可

:save で名前を付け、名前の後ろにドット(.)を付けてフィールドを取り出します。同じ値を複数の場所で使え、取り出す値を後から追加するのも簡単です。

{% connected_content https://api.example.com/points?uid={{ userId }} :save point %}
失効予定のポイントは{{ point.amount }}ポイントです。{{ point.expires_at }}までご利用いただけます。
レスポンス配信されるメッセージ
{"amount": 12000, "expires_at": "9月30日"}失効予定のポイントは12000ポイントです。9月30日までご利用いただけます。

プレーンテキストのレスポンス

Section titled “プレーンテキストのレスポンス”

値を入れたい位置にディレクティブを直接書いてください。以下は、公開されている天気サービスを使ってユーザーの都市の現在の気温を差し込む例です。

今日の{{ tags.city }}の気温は{% connected_content https://wttr.in/{{ tags.city }}?format=%t %}です。お出かけ前に服装をチェックしてください!
ユーザー属性レスポンス配信されるメッセージ
tags.city = Seoul+17°C今日のSeoulの気温は+17°Cです。お出かけ前に服装をチェックしてください!

呼び出しが失敗すると、値の部分は空欄になります。次の3つのうち1つを選んで、あらかじめ書いておくことをおすすめします。

やりたいこと構文知っておきたいこと
代わりの文言を表示する(推奨)default:値が空のとき、設定しておいた文言を代わりに入れます。
値があるときだけその文を表示する{% if %}文が不自然になるのを防げます。条件文でも名前ではなくフィールドで確認してください。
この受信者には配信しないabort_messageクーポンコードのように、値がなければ配信する意味がない場合に使います。配信失敗として集計され、課金されません。

値があるときだけ表示したり配信しないようにしたりするには、条件文で呼び出しが失敗したかを確認します。確認方法は2つあります。

確認方法条件知っておきたいこと
フィールドが空かどうかpoint.amount == blank呼び出しが失敗した場合、または成功してもそのフィールドが空の場合に真になります。
HTTPステータスコードpoint.__http_status_code__ != 200呼び出しが失敗するとステータスコードの値が空になり、真になります。
JSONオブジェクトのレスポンスに含まれる値のため、テキストを返すAPIでは使わないでください。
✕ Don’t

条件文でも名前ではなくフィールドで確認してください。名前だけを書くとメッセージが保存できません。

{% if point == blank %}{% abort_message %}{% endif %}

レスポンスの再利用を設定する

Section titled “レスポンスの再利用を設定する”

同じURLをもう一度呼び出すときは、APIを毎回呼び出さず、先に受け取ったレスポンスを一定時間再利用します。ほとんどの場合はデフォルトの動作のままで問題なく、変更が必要なときだけオプションを書いてください。


区分動作
GETの呼び出し同じURLのレスポンスを5分間再利用します。同じプロジェクトであれば、別のメッセージ・キャンペーンで呼び出したレスポンスも再利用します
POSTの呼び出し:cache_max_age を書いたときだけ再利用し、bodyまで同じ場合に同じ呼び出しとみなします
受信者ごとに異なる値URL・body・headersに userId・email・phoneNumber・dob が含まれる場合は再利用しません
失敗したレスポンス再利用せず、次の呼び出しで改めて呼び出します
  • 例: tags.city だけを含む天気の呼び出しは、同じ都市どうしでレスポンスを再利用するため、受信者が多くても都市の数だけ呼び出されます。
  • 同時に処理される受信者が多いと、同じURLでも複数回呼び出されることがあります。キャッシュは呼び出し回数を減らすものであり、必ず1回だけ呼び出されることを保証するものではありません。

こんなとき記述するもの
在庫のように常に最新の値が必要なとき:no_cache
受信者ごとに値が同じ呼び出しで、より長く再利用して呼び出し回数を減らしたいとき:cache_max_age 3600(単位: 秒、3600秒 = 1時間)
POSTのレスポンスを再利用したいとき:cache_max_age(POSTはこのオプションを書いた場合のみ再利用します)

:cache_max_age で指定できる範囲は、上限のまとめをご確認ください。

ステップ4. テスト配信で確認する

Section titled “ステップ4. テスト配信で確認する”
  • 配信前に、テスト配信で最終的なメッセージを確認することをおすすめします。
  • テスト配信も実際の配信と同じです。
    • 自社のAPIが実際に呼び出されます。
    • ステップ5の自動検査も同じように適用されます。
    • 指定した電話番号・メールアドレスに紐づくユーザーがいない場合、{{ userId }} などのユーザー情報が空になることがあります。

テスト配信の画面

ステップ5. 配信・予約・ジャーニーを保存する

Section titled “ステップ5. 配信・予約・ジャーニーを保存する”
  • 即時配信、予約の保存、繰り返し配信の保存、ジャーニー自動化の保存、メールテンプレートの保存のタイミングでディレクティブが自動的に検査され、記述ルールに反している場合は保存・配信されません。
  • 記述ルールは、保存が拒否されるケースの内容をご確認ください。