ユーザー属性オブジェクト
属性オブジェクトにフィールドを含むAPIリクエストは、指定されたユーザープロファイルに指定された値で、その名前の属性を作成または更新します。
Brazeユーザープロファイルフィールド名(以下にリストされているもの、またはBrazeユーザープロファイルフィールドのセクションにリストされているもの)を使用して、ダッシュボードのユーザープロファイル上の特別な値を更新するか、独自のカスタム属性データをユーザーに追加します。
オブジェクト本体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
// One of "external_id" or "user_alias" or "braze_id" or "email" or "phone" is required
"external_id" : (optional, string) see external user ID,
"user_alias" : (optional, User alias object),
"braze_id" : (optional, string) Braze user identifier,
"email": (optional, string) User email address,
"phone": (optional, string) User phone number,
// Setting this flag to true puts the API in "Update Only" mode.
// When using a "user_alias", "Update Only" defaults to true.
"_update_existing_only" : (optional, boolean),
// See note regarding anonymous push token imports
"push_token_import" : (optional, boolean),
// Braze User Profile Fields
"first_name" : "Jon",
"email" : "[email protected]",
// Custom Attributes
"my_custom_attribute" : value,
"my_custom_attribute_2" : {"inc" : int_value},
"my_array_custom_attribute":[ "Value1", "Value2" ],
// Adding a new value to an array custom attribute
"my_array_custom_attribute" : { "add" : ["Value3"] },
// Removing a value from an array custom attribute
"my_array_custom_attribute" : { "remove" : [ "Value1" ]},
// Array of objects custom attribute
"my_array_of_objects_attribute": [{"key": "value"}, {"key": "value"}],
// Adding to an array of objects (REST API syntax)
"my_array_of_objects_attribute": { "add": [{"key": "value"}] },
// Removing from an array of objects (REST API syntax)
"my_array_of_objects_attribute": { "remove": [{"$identifier_key": "key", "$identifier_value": "value"}] },
}
/users/trackへのREST APIリクエストでは、配列操作にadd、remove、updateキーを使用します。$プレフィックス付きのキー($addなど)はSDKメソッドのペイロード用です。
REST APIリクエストで$add、$remove、$updateを使用した場合、Brazeは配列の更新を適用せずにsuccessを返すことがあります。
詳細については、オブジェクトの配列APIの例およびオブジェクトの配列SDKの例を参照してください。
プロファイル属性を削除するには、nullに設定します。external_idやuser_aliasなどの一部のフィールドは、ユーザープロファイルに追加された後に削除することはできません。
識別子の解決
匿名プッシュトークンインポートを実行している場合を除き、各ユーザー属性オブジェクトには少なくとも1つの識別子(external_id、user_alias、braze_id、email、またはphone)を含める必要があります。可能な限り、オブジェクトごとに1つの識別子のみを含めて、どのユーザープロファイルが更新または作成されるかがあいまいにならないようにしてください。
識別子を使用する際は、以下の点に注意してください。
external_idとuser_aliasは相互に排他的です。両方を同じユーザー属性オブジェクトに含めるとエラーが返されます。すでにexternal_idを持つユーザーにエイリアスを追加するには、/users/alias/newエンドポイントを使用してください。emailはphoneよりも優先されます。同じオブジェクトにemailとphoneの両方が含まれている場合、Brazeは識別子としてemailを使用します。つまり、電話番号が別のプロファイルに属している場合でも、属性はそのメールアドレスに関連付けられたユーザープロファイルに適用されます。
予期しない動作を避けるには、ユーザー属性オブジェクトごとに1つの識別子を使用してください。異なるユーザープロファイルを参照する複数の識別子を提供すると、属性が誤ったプロファイルに適用される可能性があります。
既存のプロファイルのみを更新する
Brazeで既存のユーザープロファイルのみを更新したい場合は、リクエスト本文の中で_update_existing_onlyキーにtrueの値を渡す必要があります。この値を省略した場合、external_idがまだ存在しなければ、Brazeは新しいユーザープロファイルを作成します。
/users/trackエンドポイントを使用してエイリアスのみのユーザープロファイルを作成する場合は、_update_existing_onlyをfalseに設定する必要があります。この値を省略すると、Brazeはエイリアスのみのプロファイルを作成しません。
プッシュトークンインポート
Brazeにプッシュトークンをインポートする前に、本当に必要かどうかを再確認してください。Braze SDKが導入されると、プッシュトークンは自動的に処理され、APIを介してアップロードする必要はありません。
APIを使用してアップロードする必要がある場合は、識別されたユーザーまたは匿名ユーザーに対してアップロードできます。これは、external_idが存在する必要があるか、匿名ユーザーがpush_token_importフラグをtrueに設定する必要があることを意味します。
他のシステムからプッシュトークンをインポートする場合、external_idは常に利用できるわけではありません。Brazeへの移行中にこれらのユーザーとのコミュニケーションを維持するために、push_token_importをtrueとして指定することで、external_idを提供せずに匿名ユーザーのレガシートークンをインポートできます。
push_token_importをtrueとして指定する場合:
external_idとbraze_idは指定しないでください- 属性オブジェクトにはプッシュトークンを含める必要があります
- トークンがすでにBrazeに存在する場合、リクエストは無視されます。そうでない場合は、Brazeがトークンごとに一時的な匿名ユーザープロファイルを作成し、これらの個人にメッセージを送信し続けることができます
インポート後、各ユーザーがBraze対応のアプリを起動すると、Brazeはインポートされたプッシュトークンを自動的にBrazeユーザープロファイルに移動し、一時プロファイルをクリーンアップします。
Brazeは月に1回、push_token_importフラグが設定されたプッシュトークンのない匿名プロファイルを検索します。匿名プロファイルにプッシュトークンがなくなった場合、Brazeはプロファイルを削除します。ただし、匿名プロファイルにまだプッシュトークンがあり、実際のユーザーがそのプッシュトークンを使用してデバイスにまだログインしていないことが示唆される場合、Brazeは何も行いません。
詳細については、プッシュトークンの移行を参照してください。
カスタム属性のデータタイプ
次のデータタイプはカスタム属性として保存できます。
| データタイプ | メモ |
|---|---|
| 配列 | カスタム属性配列がサポートされています。要素を追加すると、配列の末尾に追加されます。要素がすでに存在する場合は、現在の位置から末尾に移動します。 一意の値のみが格納されます。たとえば、 ['hotdog','hotdog','hotdog','pizza']をインポートすると、['hotdog', 'pizza']になります。配列を直接設定することも( "my_array_custom_attribute":[ "Value1", "Value2" ]など)、"my_array_custom_attribute" : { "add" : ["Value3"] }で既存の配列に追加することも、"my_array_custom_attribute" : { "remove" : [ "Value1" ]}で値を削除することもできます。配列内の要素のデフォルトおよび最大数は500です。最大数はBrazeダッシュボードのデータ設定 > カスタム属性で更新できます。詳細については、配列を参照してください。 |
| オブジェクト配列 | オブジェクトの配列を使用して、各オブジェクトに一連の属性が含まれるオブジェクトのリストを定義します。このタイプを使用して、ホテル宿泊や好みなど、ユーザーの関連データセットを複数保存します。 たとえば、 hotel_staysという名前のカスタム属性をユーザープロファイル上で配列として定義します。ここで、各オブジェクトは個別の宿泊を表し、hotel_name、check_in_date、nights_stayedなどの属性を持ちます。オブジェクトの配列にはアイテム数の制限はありませんが、最大サイズは100 KBです。更新によって配列がこの制限を超える場合、Brazeは更新を破棄し、属性は変更されません。 $addでアイテムを追加し、$removeでアイテムを削除し、$updateでアイテムを更新します。詳細については、オブジェクトの配列APIの例、オブジェクトの配列SDKの例、およびオブジェクトの配列の例を参照してください。 |
| ブール値 | trueまたはfalse |
| 日付 | ISO 8601形式または次のいずれかの形式で保存する必要があります。 - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY 「T」は時間指定子であり、プレースホルダーではないことに注意してください。変更または削除しないでください。 タイムゾーンのない時間属性は、デフォルトでUTCの深夜0時になります(また、ダッシュボードでは、会社のタイムゾーンのUTCの深夜0時に相当する形式で表示されます)。タイムゾーンを指定するには、タイムスタンプにUTCオフセットを追加します(例:ESTの場合は 2024-11-10T18:00:00-05:00)。タイムゾーンオフセットが欠落しているか、フォーマットが正しくない場合、値はデフォルトでUTCになります。時間はダッシュボードで会社のタイムゾーンで表示されます。たとえば、 2024-11-10T18:00:00-05:00(EST午後6時)は、会社の設定されたタイムゾーンの対応する時間として表示されます。将来のタイムスタンプを持つイベントは、デフォルトで現在時刻になります。 通常のカスタム属性の場合、年が0より小さいか3000より大きい場合、Brazeはユーザープロファイルに文字列として値を格納します。 |
| フロート | floatカスタム属性は、小数点付きの正または負の数です。たとえば、浮動小数点を使用して、アカウントの残高や製品またはサービスのユーザー評価を保存できます。 |
| 整数 | 「inc」フィールドと追加する量を持つオブジェクトを割り当てることで、整数カスタム属性をインクリメントできます。 例: "my_custom_attribute_2" : {"inc" : int_value}, |
| 階層化カスタム属性 | 階層化カスタム属性は、属性のセットを別の属性のプロパティとして定義します。カスタム属性オブジェクトを定義するときに、そのオブジェクトに一連の属性を追加します。詳細については、階層化カスタム属性を参照してください。 |
| 文字列 | 文字列カスタム属性は、テキストデータを格納するために使用される一連の文字です。たとえば、文字列を使用して、姓名、メールアドレス、好みを保存できます。 |
オブジェクトの配列の例
このオブジェクトの配列を使用すると、宿泊内の特定の条件に基づいてSegmentを作成し、Liquidテンプレートを使用して各宿泊のデータでメッセージをパーソナライズできます。
1
2
3
4
{"hotel_stays": [
{ "hotel_name": "Ocean View Resort", "check_in_date": "2023-06-15", "nights_stayed": 5 },
{ "hotel_name": "Mountain Lodge", "check_in_date": "2023-09-10", "nights_stayed": 3 }
]}
add、remove、updateを使用したAPIの例については、オブジェクトの配列APIの例を参照してください。$add、$remove、$updateを使用したSDKの例については、オブジェクトの配列SDKの例を参照してください。
Brazeユーザープロファイルフィールド
次のユーザープロファイルフィールドは大文字と小文字を区別するため、これらのフィールドを小文字で参照するようにしてください。
| ユーザープロファイルフィールド | データタイプ仕様 |
|---|---|
| alias_name | (string) |
| alias_label | (string) |
| braze_id | (文字列、省略可能)SDKによってユーザープロファイルが認識されると、関連付けられたbraze_idを使用して匿名のユーザープロファイルが作成されます。braze_idはBrazeによって自動的に割り当てられ、編集できません。また、デバイスによって異なります。 |
| country | (文字列)国コードはISO-3166-1 alpha-2規格でBrazeに渡す必要があります。APIは、異なるフォーマットで受け取った国をマッピングするために最善の努力をします。たとえば、「Australia」は「AU」にマッピングされる場合があります。ただし、入力が指定されたISO-3166-1 alpha-2規格と一致しない場合、国の値はNULLに設定されます。CSVインポートまたはAPIによってユーザーに countryを設定すると、BrazeはSDKを介してこの情報を自動的にキャプチャできなくなります。 |
| current_location | (object) {“longitude”: -73.991443, “latitude”: 40.753824} の形式 |
| date_of_first_session | (ユーザーが初めてアプリを使用した日付)ISO 8601形式または次のいずれかの形式の文字列: - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY |
| date_of_last_session | (ユーザーが最後にアプリを使用した日付)ISO 8601形式または次のいずれかの形式の文字列: - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY |
| dob | (生年月日)「YYYY-MM-DD」の形式の文字列。例:1980-12-21。 |
| (string) | |
| email_subscribe | (文字列)使用可能な値は、「opted_in」(メールを受信するために明示的に登録されている)、「unsubscribed」(明示的にメールからオプトアウトされている)、および「subscribed」(オプトインまたはオプトアウトされていない)です。 |
| email_open_tracking_disabled | (ブール値)trueまたはfalseが受け入れられます。trueに設定して、このユーザーに送信されるすべての将来のメールに開封トラッキングピクセルが追加されないようにします。SparkPostとSendGridでのみ利用可能です。 |
| email_click_tracking_disabled | (ブール値)trueまたはfalseが受け入れられます。このユーザーに送信される将来のメール内のすべてのリンクに対するクリックトラッキングを無効にするには、trueに設定します。SparkPostとSendGridでのみ利用可能です。 |
| external_id | (文字列)ユーザープロファイルの一意の識別子。external_idが割り当てられた後、Brazeはユーザーのデバイス全体でユーザープロファイルを識別します。external_idを不明なユーザープロファイルに割り当てる最初のインスタンスでは、Brazeは既存のすべてのユーザープロファイルデータを新しいユーザープロファイルに移行します。 |
id(文字列)、likes(文字列の配列)、num_friends(整数)のいずれかを含むハッシュ。 |
|
| first_name | (string) |
| gender | (文字列)「M」、「F」、「O」(その他)、「N」(該当なし)、「P」(言いたくない)またはnil(不明)。 |
| home_city | (string) |
| language | (文字列)言語はISO-639-1規格でBrazeに渡す必要があります。サポートされている言語については、受け入れ可能な言語のリストをご覧ください。 CSVインポートまたはAPIによってユーザーに languageを設定すると、BrazeはSDKを介してこの情報を自動的にキャプチャできなくなります。 |
| last_name | (string) |
| marked_email_as_spam_at | (文字列)ユーザーのメールがスパムとしてマークされた日付。ISO 8601形式または次のいずれかの形式で表示されます。 - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY |
| phone | (文字列)E.164形式で電話番号を入力することをお勧めします。詳細はユーザー電話番号を参照してください。 |
| push_subscribe | (文字列)使用可能な値は、「opted_in」(明示的にプッシュメッセージを受信するように登録されている)、「unsubscribed」(明示的にプッシュメッセージからオプトアウトされている)、および「subscribed」(オプトインまたはオプトアウトされていない)です。 |
| push_tokens | app_idとtokenの文字列を持つオブジェクトの配列。このトークンが関連付けられているデバイスにdevice_idを任意で提供することができます。例:[{"app_id": App Identifier, "token": "abcd", "device_id": "optional_field_value"}]。device_idが指定されていない場合、ランダムに生成されます。 |
| subscription_groups | subscription_group_idおよびsubscription_stateの文字列を持つオブジェクト配列([{"subscription_group_id" : "subscription_group_identifier", "subscription_state" : "subscribed"}]など)。subscription_stateの利用可能な値は「subscribed」と「unsubscribed」です。 |
| time_zone | (文字列)IANAタイムゾーンデータベースのタイムゾーン名(例:「America/New_York」または「Eastern Time (US & Canada)」)。有効なタイムゾーン値のみが設定されます。 |
id(整数)、screen_name(文字列、X(旧Twitter)ハンドル)、followers_count(整数)、friends_count(整数)、statuses_count(整数)のいずれかを含むハッシュ。 |
このAPIによって明示的に設定された言語値は、Brazeがデバイスから自動的に受信するロケール情報よりも優先されます。
ユーザー属性リクエストの例
この例には、API呼び出しあたり合計75個の許可された属性オブジェクトのうち、4個のユーザー属性オブジェクトが含まれています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
POST https://YOUR_REST_API_URL/users/track
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"attributes" : [
{
"external_id" : "user1",
"first_name" : "Jon",
"has_profile_picture" : true,
"dob": "1988-02-14",
"music_videos_favorited" : { "add" : [ "calvinharris-summer" ], "remove" : ["nickiminaj-anaconda"] }
},
{
"external_id" : "user2",
"first_name" : "Jill",
"has_profile_picture" : false,
"push_tokens": [{"app_id": "Your App Identifier", "token": "abcd", "device_id": "optional_field_value"}]
},
{
"user_alias" : { "alias_name" : "device123", "alias_label" : "my_device_identifier"},
"first_name" : "Alice",
"has_profile_picture" : false
},
{
"external_id": "user3",
"subscription_groups" : [{"subscription_group_id" : "subscription_group_identifier", "subscription_state" : "subscribed"}]
}
]
}
プッシュトークンの移行
Brazeを統合する前に、自社または他のプロバイダー経由でプッシュ通知を送信していた場合、プッシュトークンの移行により、プッシュトークンを登録済みのユーザーにプッシュ通知を送信し続けることができます。
SDKを介した自動移行
Braze SDKを統合すると、オプトインしたユーザーのプッシュトークンは、次回アプリを開いたときに自動的に移行されます。それまでは、これらのユーザーにBraze経由でプッシュ通知を送信することはできません。
あるいは、プッシュトークンを手動で移行することで、ユーザーへの再エンゲージをより迅速に行うことができます。
Webトークンに関する考慮事項
Webプッシュトークンの性質上、Webプッシュを実装する際には以下の点を考慮してください。
| 考慮事項 | 詳細 |
|---|---|
| サービスワーカー | デフォルトでは、Web SDKは./service-workerでサービスワーカーを探します。ただし、manageServiceWorkerExternallyやserviceWorkerLocationなどの別のオプションが指定されている場合を除きます。サービスワーカーの設定が適切でないと、ユーザーのプッシュトークンが期限切れになる可能性があります。 |
| 期限切れトークン | ユーザーが60日間Webセッションを開始していない場合、プッシュトークンは期限切れになります。Brazeは期限切れのプッシュトークンを移行できないため、再エンゲージするにはプッシュプライマーを送信する必要があります。 |
APIを使用した手動移行
手動プッシュトークン移行は、以前に作成されたこれらのキーをAPIを通じてBrazeプラットフォームにインポートするプロセスです。
users/trackエンドポイントを使用して、iOS(APNs)およびAndroid(FCM)トークンをプラットフォームにプログラムで移行します。識別されたユーザー(関連するexternal IDを持つユーザー)と匿名ユーザー(external IDを持たないユーザー)の両方を移行できます。
プッシュトークン移行時にアプリのapp_idを指定し、適切なプッシュトークンを適切なアプリに関連付けます。各アプリ(iOS、Androidなど)にはそれぞれapp_idがあり、APIキーページのIdentificationセクションで確認できます。必ず正しいプラットフォームのapp_idを使用してください。
APIを使用してWebプッシュトークンを移行することはできません。これは、Webプッシュトークンが他のプラットフォームと同じスキーマに準拠していないためです。
Webプッシュトークンをプログラムで移行しようとすると、次のようなエラーが表示されることがあります。Received '400: Invalid subscription auth' sending to 'https://fcm.googleapis.com/fcm/send
API移行の代わりに、SDKを統合し、トークンベースが自然に再構築されるようにすることをお勧めします。
識別されたユーザーの場合は、push_token_importフラグをfalseに設定(またはパラメーターを省略)して、external_id、app_id、tokenの値をユーザーattributesオブジェクトで指定します。
以下に例を示します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-API-KEY-HERE' \
--data-raw '{
"attributes" : [
{
"push_token_import" : false,
"external_id": "example_external_id",
"country": "US",
"language": "en",
"YOUR_CUSTOM_ATTRIBUTE": "YOUR_VALUE",
"push_tokens": [
{"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING"}
]
}
]
}'
他のシステムからプッシュトークンをインポートする場合、external_idが利用できるとは限りません。この状況では、push_token_importフラグをtrueに設定し、app_idとtokenの値を指定します。Brazeでは、トークンごとに一時的な匿名ユーザープロファイルが作成され、これらの個人にメッセージを送信し続けることができます。トークンがすでにBrazeに存在する場合、リクエストは無視されます。
以下に例を示します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-API-KEY-HERE' \
--data-raw '{
"attributes": [
{
"push_token_import" : true,
"email": "[email protected]",
"country": "US",
"language": "en",
"YOUR_CUSTOM_ATTRIBUTE": "YOUR_VALUE",
"push_tokens": [
{"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING", "device_id": "DEVICE_ID"}
]
},
{
"push_token_import" : true,
"email": "[email protected]",
"country": "US",
"language": "en",
"YOUR_CUSTOM_ATTRIBUTE_1": "YOUR_VALUE",
"YOUR_CUSTOM_ATTRIBUTE_2": "YOUR_VALUE",
"push_tokens": [
{"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING", "device_id": "DEVICE_ID"}
]
}
]
}'
インポート後、匿名ユーザーがBraze対応のアプリを起動すると、Brazeはインポートされたプッシュトークンを自動的にBrazeユーザープロファイルに移動し、一時プロファイルをクリーンアップします。
Brazeは月に1回、push_token_importフラグが設定されたプッシュトークンのない匿名プロファイルを検索します。匿名プロファイルにプッシュトークンがなくなった場合、Brazeはプロファイルを削除します。ただし、匿名プロファイルにまだプッシュトークンがあり、実際のユーザーがそのプッシュトークンを使用してデバイスにまだログインしていないことを示している場合、Brazeは何も行いません。
Androidのプッシュトークンをインポートする
以下の考慮事項はAndroidアプリのみに当てはまります。iOSアプリではこれらのステップは必要ありません。iOSプラットフォームはプッシュを表示するためのフレームワークが1つしかなく、Brazeが必要なプッシュトークンと証明書を持っている限り、プッシュ通知は即座にレンダリングされるためです。
Braze SDKの統合が完了する前にAndroidプッシュ通知をユーザーに送信する必要がある場合は、キーと値のペアを使用してプッシュ通知を検証します。
プッシュペイロードを処理し表示するレシーバーが必要です。プッシュペイロードをレシーバーに通知するには、必要なキーと値のペアをプッシュCampaignに追加します。これらのペアの値は、Brazeの前に使用していた特定のプッシュパートナーによって決まります。
一部のプッシュ通知プロバイダーでは、Brazeがキーと値のペアを適切に解釈できるようにフラット化する必要があります。特定のAndroidアプリのキーと値のペアをフラット化するには、カスタマーサクセスマネージャーにお問い合わせください。