Skip to content

条件付きメッセージングロジック

タグを使用すると、メッセージングキャンペーンにプログラミングロジックを含めることができます。タグは、条件文の実行や、変数の割り当てやコードブロックの反復処理などの高度なユースケースに使用できます。

このページでは、null、nil、blank の属性値の処理方法やカスタム属性の参照方法など、タグの使用方法について説明します。

タグのフォーマット

タグは {% %} で囲む必要があります。

作業を少し楽にするために、Braze では Liquid 構文が正しくフォーマットされている場合に緑色と紫色で表示されるカラーフォーマットが含まれています。緑色のフォーマットはタグの識別に役立ち、紫色のフォーマットはパーソナライゼーションを含む領域をハイライトします。

条件付きメッセージングの使用に苦労している場合は、カスタム属性やその他の Liquid 要素を挿入する前に、条件構文を書き出してみてください。

たとえば、まず以下をメッセージフィールドに追加します:

1
2
3
{% if X >0 %}
{% else %}
{% endif %}

緑色でハイライトされることを確認してから、X をメッセージフィールドの角にある青い + を使って選択した Liquid またはコネクテッドコンテンツに置き換え、0 を希望の値に置き換えます。

次に、else 条件の間に必要に応じてメッセージバリエーションを追加します:

1
2
3
4
5
{% if {{custom_attribute.${total_spend}}} >0 %}
Thanks for purchasing! Here's another 10% off!
{% else %}
Buy now! Would 5% off convince you?
{% endif %}

条件ロジック

メッセージ内にインテリジェントロジックを多数含めることができます(条件文など)。以下の例では、条件を使用してキャンペーンを国際化しています:

1
2
3
4
5
6
7
8
9
{% if ${language} == 'en' %}
This is a message in English from Braze!
{% elsif ${language} == 'es' %}
Este es un mensaje en español de Braze !
{% elsif ${language} == 'zh' %}
这是一条来自Braze的中文消息。
{% else %}
This is a message from Braze! This is going to go to anyone who did not match the other specified languages!
{% endif %}

条件タグ

ifelsif

条件ロジックは if タグで始まり、最初にチェックする条件を記述します。後続の条件は elsif タグを使用し、前の条件が満たされない場合にチェックされます。この例では、ユーザーのデバイスが英語に設定されていない場合、このコードはユーザーのデバイスがスペイン語に設定されているかどうかをチェックし、それも該当しない場合はデバイスが中国語に設定されているかどうかをチェックします。ユーザーのデバイスがこれらの条件のいずれかを満たす場合、ユーザーは該当する言語でメッセージを受け取ります。

else

条件ロジックに {% else %} 文を含めることもできます。設定した条件のいずれも満たされない場合、{% else %} 文は送信すべきメッセージを指定します。この例では、ユーザーの言語が英語、スペイン語、中国語のいずれでもない場合、デフォルトで英語になります。

endif

{% endif %} タグは、条件ロジックが終了したことを示します。条件ロジックを含むすべてのメッセージに {% endif %} タグを含める必要があります。条件ロジックに {% endif %} タグを含めないと、Braze がメッセージを解析できないためエラーが発生します。

{% alert note %} 条件タグ(ifelsifunless)は演算子をサポートしますが、フィルターはサポートしません。フィルター処理された値を条件で評価するには、まずフィルター結果を変数に割り当ててから、その変数を参照してください。詳細については、演算子とフィルターの使用場所を参照してください。 {% endalert %}

チュートリアル: ロケーションベースのコンテンツを配信する

このチュートリアルを完了すると、「if」、「elsif」、「else」文を含むタグを使用して、ユーザーのロケーションに基づいたコンテンツを配信できるようになります。

  1. まず if タグで、ユーザーの市区町村がニューヨークの場合に送信するメッセージを設定します。ユーザーの市区町村がニューヨークの場合、この最初の条件が満たされ、ユーザーはニューヨーカーであることを示すメッセージを受け取ります。
1
2
3
4
{% if ${city} == "New York" %}
  🎉 Hey there, New Yorker! We're excited to offer you a special deal!
  Get 20% off your next sandwich at your local Sandwich Emperor.
  Just show this message at the counter to redeem your offer!
  1. 次に、elseif タグを使用して、ユーザーの市区町村がロサンゼルスの場合に送信するメッセージを設定します。
1
2
3
{% elsif ${city} == "Los Angeles" %}
  🌞 Hello, Los Angeles! Enjoy a sunny day with a delicious sandwich!
  Present this message at our LA restaurant for a 20% discount on your next order!
  1. もう1つ elseif タグを使用して、ユーザーの市区町村がシカゴの場合に送信するメッセージを設定しましょう。
1
2
3
4
{% elsif ${city} == "Chicago" %}
  🍕 Chicago, we have a treat for you!
  Swing by our restaurant and get 20% off your favorite sandwich.
  Just show this message to our staff!
  1. 次に、{% else %} タグを使用して、ユーザーの市区町村がサンフランシスコ、ニューヨーク、シカゴのいずれでもない場合に送信するメッセージを指定しましょう。
1
2
3
{% else %}
 🥪 Craving a sandwich? Visit us at any of our locations for a delicious meal!
  Check our website for the nearest restaurant to you!
  1. 最後に、{% endif %} タグを使用して条件ロジックが完了したことを指定します。
1
{% endif %}
完全な Liquid コード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% if ${city} == "New York City" %}
  🎉 Hey there, New Yorker! We're excited to offer you a special deal!
  Get 20% off your next sandwich at our New York location.
  Just show this message at the counter to redeem your offer!
{% elsif ${city} == "Los Angeles" %}
  🌞 Hello, Los Angeles! Enjoy a sunny day with a delicious sandwich!
  Present this message at our LA restaurant for a 20% discount on your next order!
{% elsif ${city} == "Chicago" %}
  🍕 Chicago, we have a treat for you!
  Swing by our restaurant and get 20% off your favorite sandwich.
  Just show this message to our staff!
{% else %}
  🥪 Craving a sandwich? Visit us at any of our locations for a delicious meal!
  Check our website for the nearest restaurant to you!
{% endif %}

null、nil、blank の属性値の処理

条件ロジックは、ユーザープロファイルに設定されていない属性値を処理するのに便利な方法です。

null および nil の属性値

null または nil の値は、カスタム属性の値が設定されていない場合に発生します。たとえば、まだ名を設定していないユーザーは、Braze に名が記録されていません。

状況によっては、名が設定されているユーザーと名が設定されていないユーザーに、まったく異なるメッセージを送信したい場合があります。

以下のタグを使用すると、「名」属性が null のユーザーに対するメッセージを指定できます:

1
2
3
{% if ${first_name} == null %}
  ....
{% endif %}

Braze ダッシュボードでの、null の「名」属性を使用したメッセージの例。

1
2
3
4
5
{% if ${first_name} == null %}
We're having a sale! Hurry up and get 10% off all items today only!
{% else %}
Hey {{${first_name} | default: 'there'}}, we're having a sale! Hurry up and get 10% off all items today only!
{% endif %}

null の属性値は、値の型に厳密に関連付けられていないことに注意してください(たとえば、「null」の文字列は「null」の配列と同じです)。そのため、上記の例では、null の属性値は未設定の名を参照しており、これは文字列になります。

blank の属性値

blank の値は、ユーザープロファイルの属性が設定されていない場合、空白文字列( )で設定されている場合、または false として設定されている場合に発生します。blank の値は、Liquid 処理エラーを回避するために、他の変数より先にチェックする必要があります。

以下のタグを使用すると、「名」属性が blank のユーザーに対するメッセージを指定できます。

1
2
3
{% if ${first_name} == blank %}
  ....
{% endif %}

カスタム属性の参照

カスタム属性を作成した後、Liquid メッセージングでこれらのカスタム属性を参照できます。

条件ロジックを使用する場合、正しい構文を使用するために、カスタム属性のデータタイプを知る必要があります。ダッシュボードのカスタム属性ページから、カスタム属性に関連付けられたデータタイプを確認し、各データタイプに対して以下に記載されている例を参照してください。

カスタム属性のデータタイプの選択。この例では、Favorite_Category という属性がデータタイプ string で表示されています。

ブール値

ブール値はバイナリ値で、registration_complete: true のように true または false に設定できます。ブール値にはアポストロフィは付きません。

1
{% if {{custom_attribute.${registration_complete}}} == true %}

数値

数値は整数または浮動小数点数の数値です。たとえば、ユーザーは shoe_size: 10levels_completed: 287 を持つことがあります。数値にはアポストロフィは付きません。

1
{% if {{custom_attribute.${shoe_size}}} == 10 %}

整数に対しては、小なり(<)や大なり(>)などの他の基本演算子も使用できます:

1
{% if {{custom_attribute.${flyer_miles}}} >= 500 %}

文字列

文字列は英数字で構成され、ユーザーに関するデータを格納します。たとえば、favorite_color: redphone_number: 3025981329 などがあります。文字列の値はアポストロフィで囲む必要があります。

1
{% if {{custom_attribute.${favorite_color}}} == 'blue' %}

文字列の場合、Liquid で「==」と「contains」の両方を使用できます。

配列

配列は、ユーザーに関する情報のリストです。たとえば、ユーザーは last_viewed_shows: stranger things, planet earth, westworld を持つことがあります。配列の値はアポストロフィで囲む必要があります。

1
{% if {{custom_attribute.${last_viewed_shows}}} contains 'homeland' %}

配列の場合、「contains」を使用する必要があり、「==」は使用できません。

時間

イベントが発生した時点のタイムスタンプです。時間の値を条件ロジックで使用するには、数学フィルターを適用する必要があります。

1
{% assign expire = {{custom_attribute.${subscription_end_date}}} | plus: 0 %}
New Stuff!