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

今後新しいプロパティが送信された場合、スキーマが再生成されるまでスキーマには含まれません。スキーマは24時間ごとに再生成できます。
ステップ2:階層化オブジェクトを使用する
セグメンテーションやパーソナライゼーション時に階層化データを参照できます。スキーマは必須ではありません。使用例については、以下のセクションを参照してください。
APIリクエストボディ
以下は、「Created Playlist」カスタムイベントを使用した /users/track の例です。プレイリストが作成された後、以下を送信してプレイリストのプロパティをキャプチャします。
- 「songs」をプロパティとしてリストするAPIリクエスト
- 曲の階層化プロパティの配列
...
"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リクエスト- その注文の階層化プロパティ
...
"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”
メッセージのトリガー
これらのプロパティを使用してキャンペーンをトリガーするには、カスタムイベントまたは購入を選択し、階層化プロパティフィルターを追加します。Place Order および Update Cart eコマーストリガーは、同じフィルタータイプを受け付けます。メッセージのトリガーはアプリ内メッセージではまだサポートされていませんが、メッセージ内の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" を持つイベントに一致します。
セグメンテーション
階層化イベントプロパティに基づいてユーザーをセグメント化するには、セグメントエクステンションを使用する必要があります。スキーマを生成すると、階層化オブジェクトエクスプローラーがセグメンテーションセクションに表示されます。

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

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