カスタムイベントの階層化オブジェクト
このページでは、カスタムイベントや購入のプロパティとして階層化された JSON データを送信する方法と、メッセージングでそれらの階層化オブジェクトを使用する方法について説明します。
階層化オブジェクト(別のオブジェクトの内部にあるオブジェクト)を使用して、カスタムイベントや購入のプロパティとして階層化された JSON データを送信できます。この階層化データは、メッセージ内のパーソナライズ情報のテンプレート化、メッセージ送信のトリガー、ユーザーのセグメンテーションに使用できます。
考慮事項
- 階層化データはカスタムイベントと購入イベントの両方でサポートされていますが、その他のイベントタイプではサポートされていません。
- 配列またはオブジェクト値を含むイベントプロパティオブジェクトは、最大 100 KB のイベントプロパティペイロードを持つことができます。
- 購入イベントに対してイベントプロパティスキーマを生成することはできません。
- イベントプロパティスキーマは、過去 24 時間のカスタムイベントをサンプリングして生成されます。
SDK の最小バージョン
以下の SDK バージョンが階層化オブジェクトをサポートしています。
ステップ 1: スキーマを生成する
カスタムイベント内の階層化データにアクセスするには、階層化イベントプロパティを持つ各イベントのスキーマを生成します。スキーマを生成するには:
- データ設定 > カスタムイベントに移動します。
- 階層化プロパティを持つイベントのプロパティを管理を選択します。
- ボタンを選択してスキーマを生成します。スキーマを表示するには、 プラスボタンを選択します。

今後新しいプロパティが送信された場合、スキーマが再生成されるまでスキーマには含まれません。スキーマは 24 時間ごとに再生成できます。
ステップ 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": "SandwichEmperor",
"identifier": "12345678",
"location" : {
"city": "Montclair",
"state": "NJ"
}
}
}
...
階層化カスタムイベントプロパティの場合、年が 0 未満または 3000 より大きい場合、Braze はこれらの値をユーザーに保存しません。
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 年にリリースされたアルバムがあるイベントにマッチします。配列を走査するためにブラケット表記 [] を使用し、走査された配列内のいずれかのアイテムがイベントプロパティに一致する場合にマッチします。
該当しないフィルターは、配列内のプロパティのいずれも指定された値と一致しない場合にのみマッチします。
例えば、キャンバス A にアクションベースのカスタムイベント階層化プロパティフィルター一致する「smartwatch」があり、キャンバス B にアクションベースのカスタムイベント階層化プロパティフィルター該当しない「simphone」があるとします。プロパティに「smartwatch」と「simphone」がある場合、両方のキャンバスがトリガーされます。ただし、いずれかのプロパティに「simphone」または「sim only」がある場合、どちらのキャンバスもトリガーされません。
「Ordered」イベントの階層化プロパティを使用してキャンペーンをトリガーする:

r_details.name: “SandwichEmperor”
r_details.location.city: “Montclair”
イベントプロパティに [] または . 文字が含まれている場合、その部分をダブルクォートで囲んでエスケープしてください。例えば、"songs[].album".yearReleased はリテラルプロパティ "songs[].album" を持つイベントにマッチします。
セグメンテーション
階層化イベントプロパティに基づいてユーザーをセグメント化するには、セグメントエクステンションを使用する必要があります。スキーマを生成すると、セグメンテーションセクションに階層化オブジェクトエクスプローラーが表示されます。

セグメンテーションはトリガーと同じ表記法を使用します(メッセージトリガーを参照)。
セグメントエクステンションを編集または作成するには、「セグメントの編集」権限が必要です。
パーソナライゼーション
パーソナライゼーションを追加モーダルを使用して、パーソナライゼーションタイプとして高度なイベントプロパティを選択します。これにより、スキーマが生成された後に階層化イベントプロパティを追加するオプションが利用可能になります。

メッセージでの階層化オブジェクトのテスト
ダッシュボードのプレビュー&テストツールは、階層化オブジェクトや階層化カスタム属性のモックデータの追加をサポートしていません。Liquid を通じて階層化データを参照するメッセージをテストするには、その階層化属性を持つ既存のユーザーとしてメッセージをプレビューするか、テストユーザーにライブキャンペーンを起動してカスタムイベントプロパティを含むメッセージをプレビューできます。
階層化カスタム属性
- API を通じてテストユーザープロファイルに階層化属性をインポートします。
- キャンペーンまたはキャンバスで、プレビュー&テストに移動します。
- ユーザーとしてプレビューを選択し、テストユーザーを検索します。Liquid はそのユーザーのプロファイル上の実際の階層化属性を使用して解決されます。
階層化イベントプロパティ
階層化イベントプロパティは、ライブイベントトリガーが必要なため、ダッシュボードでプレビューできません。テストするには:
- テストユーザーのみをターゲットとし、階層化プロパティを持つカスタムイベントによってトリガーされる(または参照する)キャンペーンまたはキャンバスステップを作成します。
- テストオーディエンスにキャンペーンを起動します。
- 階層化オブジェクトペイロードを含むカスタムイベントをテストユーザーのプロファイルに記録します(API または SDK を使用)。
- メッセージが階層化プロパティ値で正しくレンダリングされることを確認します。
よくある質問
階層化オブジェクトを使用すると追加のデータポイントが記録されますか?
この機能の追加によるデータポイントの記録方法に変更はありません。階層化オブジェクトに基づくセグメンテーションはセグメントエクステンションを使用しますが、追加のデータポイントは使用しません。
どのくらいの階層化データを送信できますか?
イベントのプロパティの 1 つ以上に階層化データが含まれている場合、イベント上のすべてのプロパティを合わせた最大ペイロードは 100 KB です。そのサイズ制限を超えるリクエストは拒否されます。