メインコンテンツへスキップ
Liquidは、OneSignalがメール、プッシュ、SMS、アプリ内、Live Activitiesを含むチャネル全体でメッセージをパーソナライズするためにサポートするテンプレート言語です。タグ、フィルター、条件文を使用してメッセージコンテンツを動的にカスタマイズします。 Liquid構文の詳細については、公式Liquidドキュメントを参照してください。

基本構文

Liquidは2つの主な構文構造を使用します:
  1. 出力タグ{{ ... }} — 変数またはオブジェクトからデータを表示します。
  2. ロジックタグ{% ... %} — 条件文またはループを実行します。

条件文

演算子

  • ==!=><>=<=
  • andor
  • contains(文字列または配列)
liquid

ifelsifelse

liquid

unless

liquid

フィルター

{{ variable | filter }}を使用してフィルターを適用し、データの表示方法を調整します。

default

プロパティが空または存在しない場合にデフォルト値を割り当てます。
liquid

date

dateフィルターは、タイムスタンプを別の日付形式に変換します。この構文の形式はstrftimeと同じです。入力はRubyのTime.parseと同じ形式を使用します。 タグを使用して日付をUnixタイムスタンプ(秒単位)として設定します。これにより、Liquid構文のパーソナライゼーションと時間演算子を使用したセグメンテーションの両方を使用できます。たとえば、タグは次のようになります:bill_due : 1687968776
liquid
Result
liquid
Result
日付フォーマットは、適切にフォーマットされた日付が含まれている場合、文字列で機能します。
liquid
Result
現在の時刻を取得するには、dateフィルターと一緒に特別な単語now(またはtoday)を渡します。
liquid
Result
現在の時刻は、メッセージが受信者に送信されたときに基づいてメッセージにレンダリングされます。メッセージをテストしている場合、テストメッセージが送信されたときの現在の時刻が表示されます。

capitalize

このフィルターは、文字列の最初の文字を大文字にし、残りの文字を小文字に変換します。
liquid
Result

round

このフィルターは、数値を最も近い整数に丸めます。引数として数値が渡された場合は、その小数点以下の桁数に丸めます。
liquid
Result

pluralize

このフィルターは、指定された数値に基づいて文字列の単数形または複数形を返します。数値は整数である必要があり、文字列として提供できます。文字列の単数形と複数形の両方を提供する必要があります。
liquid
Result

イテレーション

forループ

コードブロックを繰り返し実行します。forループ内で使用可能な属性の完全なリストについては、Liquid forループドキュメントを参照してください。
liquid
Request Body
Result
強力で柔軟性がありますが、Liquid構文でのforループの使用は、特定のまれなケースで通知配信のパフォーマンスを低下させる可能性があります。forループの使用には注意してください。また、いくつかのプッシュチャネルフィールド(contentsheadingssubtitleapns_alerturl)ではforループの使用を防止していることに注意してください。

limitoffset

ループを指定された反復回数に制限します。たとえば、メッセージに4つの製品のみを表示する場合、LimitsとOffsetsを使用して表示される製品の数を指定できます。
Data
liquid
Result
指定されたインデックスでループを開始するには、オフセット値を追加します:
Data
liquid
Result

where

指定されたプロパティ値を持つオブジェクトのみを含む配列を作成します。デフォルトでは、真の値を持つオブジェクトを含みます。 この例では、製品のリストがあり、キッチン製品を別々に表示したいと仮定します。whereを使用すると、typekitchenである製品のみを含む配列を作成できます。
Data
liquid
Result

文字列操作

文字列フィルターを適用して、メッセージ内のタグ値またはインライン文字列の表示方法を調整します。

FAQ

置換が機能しないのはなぜですか?

  • アプリ内メッセージはプロパティ置換をサポートしていません。
  • 「テストメッセージを送信」を使用する場合、タグ置換は機能しません。
  • タグキーは英数字である必要があります。または、_と-を使用します(ピリオドやスペースは使用できません)。
  • 置換はプレビューモードには表示されません。テストするには実際のメッセージを送信してください。

defaultif/elseはどちらを使うべきですか?

変数値のみにフォールバックが必要で、周囲のテキストが変わらない場合は、defaultフィルターを使用します。
liquid
Result (name = "Jon")
Result (nameが空の場合)
周囲のテキスト、句読点、または文の構造も変数の存在に基づいて変更する必要がある場合は、if/else条件ロジックを使用します。
liquid
Result (name = "Jon")
Result (nameが空の場合)
文の構造が変わる場合はdefaultを使用しないでください。例えば、{{ name | default: "Shop your favorites" }}, shop your favoritesは、nameが空の場合に「Shop your favorites, shop your favorites」とレンダリングされます。フォールバックが変数以外も変更する場合は、if/elseを使用してください。

空白と改行を制御するには?

ハイフンを使用します:{{- ... -}}{%- ... -%}で周囲の空白をトリミングします。 詳細については、空白制御を参照してください。

ユーザー生成コンテンツを処理するには?

ユーザー生成テキストを{% raw %}{% endraw %}でラップして、Liquid解析を防止します。“raw”構文を参照してください。

関連ページ

メッセージパーソナライゼーション

Liquid、Data Feeds、カスタムイベントを含むすべてのパーソナライゼーションオプションの概要。

Data Feeds

送信時にAPIからメッセージにリアルタイムデータを取得します。

タグ

セグメンテーションとLiquidパーソナライゼーションのためにユーザーにキーと値のペアを保存します。

テンプレート

Liquidパーソナライゼーションが組み込まれた再利用可能なメッセージテンプレートを作成します。