メッセージタイプ別のサポートされるフィールド
- Email
- Push
- SMS
- In-App Messages
- Live Activities
- 件名、返信先、プリヘッダー
- メッセージ本文
- HTMLブロックでの画像置換。例:
<img src="{{image_url}}"/> - URL、メール送信などのボタンブロックアクションおよびその他のフィールド。
基本構文
Liquidは2つの主な構文構造を使用します:- 出力タグ:
{{ ... }}- 変数またはオブジェクトからデータを表示します。 - ロジックタグ:
{% ... %}- 条件文またはループを実行します。
データソース
| ソース | 例 | 説明 |
|---|---|---|
| Tag | {{ first_name }} | OneSignal SDKまたはAPI(tags) |
| Property | {{ subscription.email }} | システム管理(email、external_id、languageなど) |
| Journey Name | {{ journey.name }} | システム管理 |
| Custom Data | {{ message.custom_data.key }} | Create Message APIで渡されるcustom_data |
| Data Feeds | {{ data_feed.cart.size }} | Data Feedsを使用すると、送信時にAPIからリアルタイムデータをメッセージに直接取り込むことができます。 |
| Custom Events | {{ journey.last_event.name }} | Event Triggered Journeys、Wait Untilノードを介して設定 |
条件文
演算子
==、!=、>、<、>=、<=and、orcontains(文字列または配列)
演算は右から左に実行されます。括弧はサポートされていません。
liquid
if、elsif、else
liquid
unless
liquid
フィルター
{{ variable | filter }}を使用してフィルターを適用し、データの表示方法を調整します。
default
プロパティが空または存在しない場合にデフォルト値を割り当てます。
liquid
date
dateフィルターは、タイムスタンプを別の日付形式に変換します。この構文の形式はstrftimeと同じです。入力はRubyのTime.parseと同じ形式を使用します。
タグを使用して日付をUnixタイムスタンプ(秒単位)として設定します。これにより、Liquid構文のパーソナライゼーションと時間演算子を使用したセグメンテーションの両方を使用できます。たとえば、タグは次のようになります:bill_due : 1687968776
liquid
Result
liquid
Result
liquid
Result
now(またはtoday)を渡します。
liquid
Result
現在の時刻は、メッセージが受信者に送信されたときに基づいてメッセージにレンダリングされます。メッセージをテストしている場合、テストメッセージが送信されたときの現在の時刻が表示されます。
capitalize
このフィルターは、文字列の最初の文字を大文字にし、残りの文字を小文字に変換します。
liquid
Result
round
このフィルターは、数値を最も近い整数に丸めます。引数として数値が渡された場合は、その小数点以下の桁数に丸めます。
liquid
Result
pluralize
このフィルターは、指定された数値に基づいて文字列の単数形または複数形を返します。数値は整数である必要があり、文字列として提供できます。文字列の単数形と複数形の両方を提供する必要があります。
liquid
Result
イテレーション
forループ
コードブロックを繰り返し実行します。forループ内で使用可能な属性の完全なリストについては、forループオブジェクトを参照してください。
liquid
Request Body
Results
強力で柔軟性がありますが、Liquid構文での
forループの使用は、特定のまれなケースで通知配信のパフォーマンスを低下させる可能性があります。forループの使用には注意してください。また、いくつかのプッシュチャネルフィールド(contents、headings、subtitle、apns_alert、url)ではforループの使用を防止していることに注意してください。limitとoffset
ループを指定された反復回数に制限します。たとえば、メッセージに4つの製品のみを表示する場合、LimitsとOffsetsを使用して表示される製品の数を指定できます。
Data
liquid
Result
Data
liquid
where
指定されたプロパティ値を持つオブジェクトのみを含む配列を作成します。デフォルトでは、真の値を持つオブジェクトを含みます。
この例では、製品のリストがあり、キッチン製品を別々に表示したいと仮定します。whereを使用すると、typeがkitchenである製品のみを含む配列を作成できます。
Data
liquid
Result
文字列操作
ユーザーに直接表示するのに適していない形式の文字列を含むデータタグがある場合があり、形式を調整するために文字列を操作する必要がある場合があります。以下は、文字列を調整するために使用できるLiquid構文コマンドの表です。タグとメッセージに直接書き込まれた文字列の両方で文字列操作を使用できます。| コマンド | 説明 | 例 | 出力例 |
|---|---|---|---|
replace | 部分文字列を別の文字列に置き換えます。 | {{ 'hello world' | replace: 'world', 'there' }} | hello there |
capitalize | 文字列の最初の文字を大文字にします。 | {{ 'hello' | capitalize }} | Hello |
upcase | 文字列を大文字に変換します。 | {{ 'hello' | upcase }} | HELLO |
downcase | 文字列を小文字に変換します。 | {{ 'HELLO' | downcase }} | hello |
strip | 文字列から先頭と末尾の空白を削除します。 | {{ ' hello ' | strip }} | hello |
strip_html | 文字列からすべてのHTMLタグを削除します。 | {{ '<p>hello</p>' | strip_html }} | hello |
truncate | 文字列を指定された長さに短縮し、必要に応じて省略記号(…)を追加します。 | {{ 'This is a long sentence' | truncate: 10 }} | This is a… |
truncatewords | 指定された単語数の後で文字列を切り詰めます。 | {{ 'This is a long sentence' | truncatewords: 2 }} | This is… |
replace_first | 部分文字列の最初の出現を置き換えます。 | {{ 'hello world' | replace_first: 'world', 'there' }} | hello there |
prepend | 別の文字列の先頭に文字列を追加します。 | {{ 'world' | prepend: 'hello ' }} | hello world |
append | 文字列の末尾に文字列を追加します。 | {{ 'hello' | append: ' world' }} | hello world |
lstrip | 文字列から先頭の空白を削除します。 | {{ ' hello' | lstrip }} | hello |
rstrip | 文字列から末尾の空白を削除します。 | {{ 'hello ' | rstrip }} | hello |
FAQ
置換が機能しないのはなぜですか?
- アプリ内メッセージはプロパティ置換をサポートしていません。
- 「テストメッセージを送信」を使用する場合、タグ置換は機能しません。
- タグキーは英数字である必要があります。または、_と-を使用します(ピリオドやスペースは使用できません)。
- 置換はプレビューモードには表示されません。テストするには実際のメッセージを送信してください。
空白と改行を制御するには?
ハイフンを使用します:{{- ... -}}、{%- ... -%}で周囲の空白をトリミングします。
詳細については、空白制御を参照してください。
ユーザー生成コンテンツを処理するには?
ユーザー生成テキストを{% raw %}と{% endraw %}でラップして、Liquid解析を防止します。“raw”構文を参照してください。
json