Skip to content
Last updated

メッセージコンテンツのパーソナライズ

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が発生することはありません。

Liquidテンプレート構文

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 }}フィルターupcasedowncasetruncateなどは非サポート。
{% unless %}{% if condition == false %}で代替可能。
{% case %} / {% when %}{% if %} / {% elsif %}の連鎖で代替可能。
contains演算子{% if %}条件内では非サポート。
forloop.indexlimitoffsetループのメタデータとパラメーターは非サポート。

変数構文リファレンス

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フィルター:文字列操作フィルター(upcasedowncasereplacetruncatesplitjoindateなど)は使用できません。変換が必要な場合はバッチ属性として事前に処理してください。
  • 変数代入なし{% assign %}は非サポートです。算出された値を導くにはAudience Studioの属性システムを使用してください。
  • forループのネスト{% for %}ループは最大3レベルのネストをサポートします。
  • {% unless %}なし:代わりに{% if condition == false %}を使用してください。