カスタムイベント内の階層化オブジェクト
このページでは、ネストされたJSONデータをカスタムイベントおよび購入のプロパティとして送信する方法、およびメッセージングでネストされたオブジェクトを使用する方法について説明します。
階層化オブジェクト (別のオブジェクト内にあるオブジェクト) を使用して、階層化された JSON データをカスタムイベントや購入のプロパティとして送信できます。このネストされたデータは、メッセージ内のパーソナライズされた情報のテンプレート化、メッセージ送信のトリガー、およびユーザーのセグメント化に使用できます。
制限事項
- 階層化トされたデータは、カスタムイベントと購入イベントの両方でサポートされていますが、他のイベントタイプではサポートされていません。
- 配列またはオブジェクト値を含むイベントプロパティオブジェクトには、最大 10 KB のイベントプロパティペイロードを設定できます。
- 購入イベントに対してイベントプロパティスキーマを生成することはできません。
- イベントプロパティスキーマは、過去 24 時間のカスタムイベントをサンプリングすることで生成されます。
最小の SDK バージョン
次の SDK バージョンでは、階層化オブジェクトがサポートされています。
ステップ 1: スキーマの生成
ネストされたイベントプロパティを持つ各イベントのスキーマを生成することで、カスタムイベントのネストされたデータにアクセスできます。スキーマを生成するには
- [データ設定] > [カスタムイベント] に移動します。
- 階層化プロパティを持つイベントについて、[プロパティの管理] を選択します。
- スキーマを生成するには、 ボタンを選択する。スキーマを表示するには、 プラスボタンを選択する。
ステップ 2: 階層化オブジェクトの使用
スキーマを生成すると、セグメンテーション中およびパーソナライゼーション中に階層化データを参照できます。使用例については、以下のセクションを参照してください。
API リクエストの本文
以下は、「Created Playlist」(作成された再生リスト) カスタムイベントの /users/track
の例です。プレイリストを作成したら、以下を送信してプレイリストのプロパティをキャプチャします。
- “songs” をプロパティとしてリストするAPI リクエスト
- ソングのネストされたプロパティの配列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
"properties": {
"songs": [
{
"title": "Smells Like Teen Spirit",
"artist": "Nirvana",
"album": {
"name": "Nevermind",
"yearReleased": "1991"
}
},
{
"title": "While My Guitar Gently Weeps",
"artist": "the Beatles",
"album": {
"name": "The Beatles",
"yearReleased": "1968"
}
}
]
}
...
以下は、「Ordered」(注文を受けた) カスタムイベントの/users/track
の例です。注文が完了したら、以下を送信してその注文のプロパティをキャプチャします。
- “r_details”をプロパティとしてリストするAPI リクエスト
- その順序のネストされたプロパティ
1
2
3
4
5
6
7
8
9
10
11
12
...
"properties": {
"r_details": {
"name": "McDonalds",
"identifier": "12345678",
"location" : {
"city": "Montclair",
"state": "NJ"
}
}
}
...
Liquid のテンプレート作成
以下に、前のAPI リクエスト からリクエストされたネストされたプロパティを参照するLiquid テンプレートを作成する方法を示します。
「Created Playlist」(作成した再生リスト) イベントによってトリガーされるメッセージ内の Liquid でのテンプレート。
{{event_properties.${songs}[0].album.name}}
:”Nevermind”
{{event_properties.${songs}[1].title}}
:”While My Guitar Gently Weeps”
「Ordered」(注文を受けた) イベントによってトリガーされるメッセージ内の Liquid でのテンプレート:
{{event_properties.${r_details}.location.city}}
:”Montclair”
メッセージのトリガー
これらのプロパティを使用してキャンペーンをトリガするには、カスタムイベントまたは購入を選択し、ネストされたプロパティ フィルタを追加します。メッセージのトリガーはまだアプリ内メッセージでサポートされていませんが、メッセージ内の Liquid パーソナライゼーションの階層化プロパティは引き続き表示されます。
「Created Playlist」イベントから階層化プロパティを持つキャンペーンをトリガーします。
トリガー条件 songs[].album.yearReleased
[である] 「1968」は、1968 年にリリースされたアルバムに収録されたいずれかの曲があるイベントと一致します。配列の内部を詳しく調べるために大かっこ ([]
) の表記を使用し、その配列内のいずれかの項目がイベントプロパティと一致すれば、「一致」になります。
does not equalフィルターは、配列内のどのプロパティも指定された値と等しくない場合にのみマッチする。
たとえば、キャンバス A のアクションベースのカスタムイベントの階層化プロパティフィルターが「smartwatch」と等しく、キャンバス B のアクションベースのカスタムイベントの階層化プロパティフィルターが「simphone」と等しくないとします。プロパティに「smartwatch」と「simphone」があれば、両方のキャンバスがトリガーされます。しかし、プロパティに “simphone “や “sim only “があれば、どちらのキャンバスもトリガーしない。
「Ordered」 (注文された) イベントから階層化プロパティを持つキャンペーンをトリガーします。
r_details.name
:”Mcdonalds”
r_details.location.city
:”Montclair”
イベントプロパティに []
または .
の文字が含まれている場合は、チャンクを二重引用符で囲んでエスケープします。例えば、"songs[].album".yearReleased
はリテラルプロパティ "songs[].album"
を持つイベントと一致します。
セグメンテーション
階層化イベントプロパティに基づいてユーザーをセグメント化するには、セグメントエクステンションを使用する必要があります。スキーマを生成すると、階層化オブジェクトエクスプローラーが [セグメンテーション] セクションに表示されます。
セグメンテーションでは、トリガーと同じ表記法を使用します (「メッセージのトリガー」を参照)。
パーソナライゼーション
[パーソナライゼーションの追加] モーダルを使用して、[パーソナライゼーションタイプ] として [イベントの詳細プロパティ] を選択します。これにより、スキーマの生成後に階層化イベントプロパティを追加するオプションを使用できます。
よくある質問
階層化オブジェクトを使用すると、データポイントが追加で消費されますか?
この機能を追加したことによって消費されるデータポイントに変更はありません。ネストされたオブジェクトに基づくセグメンテーションでは、Segment Extensions が使用されます。この場合、追加のデータポイントの使用は発生しません。
送信できる階層化データの量はどの程度ですか?
1 つ以上のイベントのプロパティにネストされたデータが含まれている場合、1 つのイベントのすべての組み合わせプロパティの最大ペイロードは100KB です。そのサイズ制限を超えたリクエストは拒否されます。