In-Browser Messageキャンペーンでは、プロフィール変数とLiquidテンプレート構文を使用したダイナミックコンテンツのパーソナライズをサポートしています。変数はRT Personalization 2.0によって実行時に解決され、TD Web SDKがメッセージをブラウザに表示する前にレンダリングされます。
In-Browser Messageで利用できるプロフィール変数は、キャンペーンに紐付いたペアレントセグメントから提供される以下の4つのソースが存在します。
| ソース | プレフィックス | 説明 |
|---|---|---|
| バッチ属性 | rt_profile.imported.* | バッチ処理で算出され、RT 2.0にExternal(EXT)属性としてインポートされたユーザープロフィール属性(ロイヤルティティア、生涯価値、氏名など)。Liquid構文ではrt_profile.imported.*でアクセスします(例:rt_profile.imported.loyalty_tier)。 |
| RTシングル属性 | rt_profile.single.* | ストリーミングイベントに基づいてリアルタイムで更新されるスカラー値(最近閲覧した商品、現在のセッションデータなど)。 |
| RTリスト属性 | rt_profile.list.* | リアルタイムで更新される配列値(カートの中身、閲覧履歴など)。 |
| RTカウンター属性 | rt_profile.counter.* | リアルタイムで更新される数値カウンター(訪問回数、購入回数など)。 |
イベントフィールドは現在非サポート
Liquidテンプレートコンテンツ内でトリガーイベントのフィールド(例:ページビューのproduct_id)を参照することはサポートされていません。
ダブルカーリーブレースを使用して変数の値をコンテンツに直接出力します。
<p>Welcome back, {{rt_profile.imported.first_name}}!</p>
<p>Your current tier: {{rt_profile.imported.loyalty_tier}}</p>
<p>Most recent product viewed: {{rt_profile.single.most_recent_product}}</p>変数出力はHTMLエスケープされます
すべての {{ variable }} 出力は、ブラウザに配信される前にRT 2.0によって自動的にHTMLエスケープされます。属性値内の <、>、"、& などの文字はエスケープされるため、Liquidの escape フィルターが非サポートであっても、ユーザーが入力したフィールドからXSSが発生することはありません。
In-Browser MessageはLiquidテンプレート構文の限定的なサブセットをサポートしています。テンプレートはRealtime APIによって設定時にReactor互換のJavaScript式に変換され、各パーソナライズリクエストの実行時に評価されます。
| 構文 | サポート | 備考 |
|---|---|---|
{% if %} / {% elsif %} / {% else %} / {% endif %} | ✅ | ネストの深さに制限なし。 |
{% for item in collection %} / {% endfor %} | ✅ | 最大3レベルのネスト。 |
{{ variable }}による変数出力 | ✅ | rt_profile.*プレフィックスを使用(例:rt_profile.imported.*、rt_profile.single.*)。 |
==、!=比較 | ✅ | 文字列とnullの比較。 |
and / or論理演算子 | ✅ | 複数の条件を組み合わせる場合に使用。 |
{% assign %}変数代入 | ❌ | 非サポート。 |
{{ value \| filter }}フィルター | ❌ | upcase、downcase、truncateなどは非サポート。 |
{% unless %} | ❌ | {% if condition == false %}で代替可能。 |
{% case %} / {% when %} | ❌ | {% if %} / {% elsif %}の連鎖で代替可能。 |
contains演算子 | ❌ | {% if %}条件内では非サポート。 |
forloop.index、limit、offset | ❌ | ループのメタデータとパラメーターは非サポート。 |
| Liquid構文 | 属性タイプ |
|---|---|
{{rt_profile.imported.attribute_name}} | バッチ属性(In-Browser Messagingではrt_profile.imported.*でアクセス) |
{{rt_profile.single.attribute_id}} | RTシングル属性 |
{{rt_profile.list.attribute_id.sub_attribute}} | RTリスト属性のサブフィールド |
{{rt_profile.counter.attribute_id.total}} | RTカウンター属性の合計 |
{% if rt_profile.imported.tier == "gold" %}
<p>20% off for Gold members!</p>
{% elsif rt_profile.imported.tier == "silver" %}
<p>10% off for Silver members!</p>
{% else %}
<p>Sign up today for exclusive deals!</p>
{% endif %}{% if rt_profile.list.cart_items.item_list != null %}
<h2>Your Cart</h2>
<ul>
{% for item in rt_profile.list.cart_items.item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% endif %}{% if rt_profile.single.most_recent_product %}
<p>You recently viewed <strong>{{ rt_profile.single.most_recent_product }}</strong>.</p>
{% if rt_profile.list.recommendations.product_ids != null %}
<ul>
{% for product in rt_profile.list.recommendations.product_ids %}
{% if product != rt_profile.single.most_recent_product %}
<li>{{ product }}</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endif %}- 非サポートのLiquidフィルター:文字列操作フィルター(
upcase、downcase、replace、truncate、split、join、dateなど)は使用できません。変換が必要な場合はバッチ属性として事前に処理してください。 - 変数代入なし:
{% assign %}は非サポートです。算出された値を導くにはAudience Studioの属性システムを使用してください。 - forループのネスト:
{% for %}ループは最大3レベルのネストをサポートします。 {% unless %}なし:代わりに{% if condition == false %}を使用してください。