info |
Information この機能をアカウントで有効にするには、あなたの MoEngage CSM(カスタマーサクセスマネージャー)または サポート チームに連絡してください。 |
イントロダクション
オブジェクトは、キーと値のペアでデータを保持する多用途のデータ型です。オブジェクトは、単一または複数のキーと値のペアを保持できます。マーケターとして、カートに追加した特定のアイテムに応じてユーザーをセグメント化したい場合があります。指定されたアイテムを定義する多数の属性が存在する可能性があり、それらは単一のオブジェクトにカプセル化され、アイテムを特定するために使用できます。たとえば、本 Atonement をカートに追加したユーザーのリストをログに記録したい場合。この本は次のオブジェクトを使用して定義できます:
"book":{
"product_name": "贖罪"
"price" : 100,
"sku": "abc123"
}
文字列、数値、ブール値などの既存のデータ型属性に加えて、オブジェクトデータ型を使用してより深いクエリを実行し、よりパーソナライズされたマーケティングキャンペーンのためのカスタムユーザーセグメントを作成できます。
オブジェクトの種類
MoEngageは以下のタイプのオブジェクトをサポートしています:
シンプルオブジェクト
シンプルなオブジェクトは、以下に示すように、複数のキーと値のペアを保持する要素で構成されています:
"book":{
"item-id": 123,
"item-name": "Atonement",
"item-cost": 100,
"item-currency": "USD"
}
ネストされたオブジェクト
別のオブジェクトの内部にあるオブジェクトは、以下に示すようにネストされたオブジェクトです:
"Stationary":{
"item-id": 123,
"item-type": "books",
"item-cost": {
"amount": 100,
"currency": "USD"
}
}
オブジェクトの配列
オブジェクトの配列は、個別にいくつかのキーと値のペアを保持する要素のコレクションです。以下に示します:
"product":[
{
"item-id": 123,
"item-type": "books",
"item-cost": 100,
"item-currency": "USD"
},
{
"item-id": 323,
"item-type": "apparel",
"item-cost": 90,
"item-currency": "USD"
},
{
"item-id": 523,
"item-type": "food",
"item-cost": 200,
"item-currency": "USD"
}
]
オブジェクトデータ型で使用される名称
文房具 :
"Stationary":{
Level 1 "item-id": 123,
Level 1 "item-type": "books",
Level 1 "item-cost": {
Level 2 "amount": {
Level 3 "cost-price": 100,
Level 3 "discount": 0,
}
Level 2 "currency": "USD"
}
}
オブジェクトデータ型の用語は以下の通りです:
用語 | Description |
---|---|
オブジェクト属性 |
上記の例では、 Stationary はキー-バリュー ペアまたはサブ属性で構成されるオブジェクト属性です。 その 静止 オブジェクトもルートオブジェクトと見なされ、その内部にオブジェクトをネストすることができます。 |
サブ属性 |
サブ属性は、オブジェクト属性内のキーと値のペアです。上記の例では: item-id , item-type , cost-price , discount , and currency はサブ属性またはキーと値のペアです。 item-cost 、および amount は、それぞれ独自のサブ属性またはキーと値のペアを持つネストされたオブジェクトです。 |
レベル 1 サブ属性 | レベル1はサブ属性ネスティングの最初のレベルです。 |
レベル2サブ属性 | レベル2はサブ属性の第2レベルです。 |
レベル3サブ属性 | レベル3は、ネストの第3レベルです。 |
オブジェクトデータタイプの取り込みの重要な要素
要因 | Description |
---|---|
オブジェクトの最大サイズ(バイト) |
デフォルトサイズは25KBです。 すべてのオブジェクト属性には、キーと値のペアを含むものが25 KBを超えてはいけません。 例えば、以下に示すように、オブジェクト book, は、複数のサブ属性またはキーと値のペアを持つMoEngageのオブジェクト属性と見なされます: "book":{ オブジェクト book の全体のサイズは25 KBを超えてはいけません。 |
最大キー-値ペア(サブ属性) |
オブジェクト属性内でサポートされる100のサブ属性。オブジェクト内の未使用のサブ属性をアーカイブし、データ管理ダッシュボードを通じて新しいサブ属性を取り込むことができます。 "book":{ 上記の例には3つのキーと値のペア、またはサブ属性があります。 |
配列要素の最大数 |
オブジェクトの配列における配列要素の最大数は100です。 "product":[ 上記の例には、3つの配列要素があります。 |
最大ネストレベル |
MoEngageは最大2レベルのネストをサポートしており、それ以上は文字列化されます。 ただし、MoEngageは任意のレベルのネストされたJSONを取り込みます。 "Stationary":{ 上記の例では、 コストプライス や ディスカウント などのサブ属性は、レベル3のネストされたサブ属性です。それらはMoEngageに取り込まれますが、データ型は文字列です。 |
キー名 |
最大文字数は200文字です。 キー名には次の特殊文字を含めてはいけません: $, ., %, #. "book":{ アイテムID 、 アイテム名 は200文字の制限を超えないキー名です。 |
キー-バリュー |
最大制限(デフォルト = 512 文字)は、基本データ型の推奨制限に従います。 "book":{ キー名に対応する値は、 Item-id や item-name のように、キー値と呼ばれます。ここでの重要な値は 123 と 贖罪 であり、512文字の制限を超えていません。 |
識別子ではありません |
MoEngageでは、オブジェクト属性をプライマリIDまたはセカンダリIDとしてマークするべきではありません。 MoEngageで新しいユーザーを作成または更新するために、サブ属性を含むオブジェクト属性をユーザー識別子として使用することはできません。プリミティブデータ型属性(例えば、文字列データ型のCustomerID)は使用する必要があります。 |
論理演算なし |
オブジェクトデータ型は論理演算をサポートしていません。 Object.child(それがプリミティブ型である場合)に対してそのような操作を実行します。 "book":{ 前の例でのオブジェクト属性 book では、 book オブジェクト内のサブ属性に対して論理演算を行うことができますが、 book 全体のオブジェクトに対しては行えません。 例えば、
有効と見なされる論理演算は
book.item-cost < 150.
|
PIIまたはマスクまたはブロックまたは非表示 |
オブジェクト属性全体はPIIとしてマークされるか、暗号化される可能性があります。 オブジェクト内のサブ属性または個々のキーと値のペアは、PIIとしてマークしたり、暗号化したり、ブロックしたり、別々に非表示にしたりすることはできません。 |
最大オブジェクトタイプ属性 |
デフォルトでは、MoEngageは最大で5つの属性(ユーザーまたはイベント)をオブジェクトデータ型として許可します。 つまり、5つのユーザー属性オブジェクトと5つのイベント属性オブジェクト、合計で10のオブジェクト属性です。 |
カスタム属性のみ
(ユーザーとイベントの両方) |
カスタム属性のみがオブジェクトデータ型であることができます。 標準属性にオブジェクトデータ型を送信しようとすると、受け付けられません。 標準属性または派生属性は、MoEngage SDKを通じてMoEngageが追跡するデータ属性です。これらの属性は、MoEngage ダッシュボードの 設定 > 分析とデータ > データ管理 で見つけることができます。これらの属性はオブジェクトデータ型ではありません。 |
ヌル処理 |
受信したオブジェクトタイプの属性がNullまたは空の場合、それはMoEngageに取り込まれません。 オブジェクトが、他の属性に値がある中で値がない属性を持つ場合、そのオブジェクトは部分的に取り込まれますが、空またはnullの値を持つ属性は取り込まれません。 "product":[ MoEngageに取り込まれたデータは以下の通りです: "product":[ |
オブジェクトデータ型を取り込む
このセクションでは、MoEngageにオブジェクトデータ型を取り込む方法について説明します。
S2S API
curl --location 'https://api-xx.moengage.com/v1/transition?app_id=O7NIHY0AT1K1FL8DR1J1G' \\
--header 'Content-Type: application/json' \\
--header 'Authorization: Basic {{Authorization_Key}}' \\
--data-raw '{\\n "type": "transition",\\n "elements": [\\n {\\n "type": "customer",\\n "customer_id": "tONX83z_new",\\n "attributes": {\\n "name": "xQEC",\\n "first_name": "",\\n "last_name": "",\\n "age": "70",\\n "email": "Ra4X@xyz. Com",\\n "gender": "female",\\n "mobile": "238706106351",\\n "geo": "88.90 89.00",\\n "birthday": "02-12-2001",\\n "created_time": "1716372929998",\\n "last_seen": "1716372929998",\\n "source": "FBsuS",\\n "object_with_nesting_user_attribute_01": {\\n "item-id": 123,\\n "item-type": "books",\\n "item-cost": {\\n "amount": 100,\\n "currency": "USD"\\n }\\n },\\n "array_of_object_sample_user_attribute_01": [\\n {\\n "item-id": 123,\\n "item-type": "books",\\n "item-cost": 100,\\n "item-currency": "USD"\\n },\\n {\\n "item-id": 323,\\n "item-type": "apparel",\\n "item-cost": 90,\\n "item-currency": "USD"\\n },\\n {\\n "item-id": 523,\\n "item-type": "food",\\n "item-cost": 200,\\n "item-currency": "USD"\\n }\\n ],\\n "platforms": [\\n {\\n "platform": "ANDROID",\\n "active": "true"\\n }\\n ]\\n }\\n },\\n {\\n "type": "event",\\n "customer_id": "tONX83z",\\n "actions": [\\n {\\n "action": "object_event_s2s_ios_level1",\\n "attributes": {\\n "object_with_nesting_event_attribute_01": {\\n "item-id": 123,\\n "item-type": "books",\\n "item-cost_event_attribute": {\\n "amount": 100,\\n "currency": "USD"\\n }\\n },\\n "array_of_object_sample_event_attribute_01": [\\n {\\n "item-id": 123,\\n "item-type": "books",\\n "item-cost": 100,\\n "item-currency": "USD"\\n },\\n {\\n "item-id": 323,\\n "item-type": "apparel",\\n "item-cost": 90,\\n "item-currency": "USD"\\n },\\n {\\n "item-id": 523,\\n "item-type": "food",\\n "item-cost": 200,\\n "item-currency": "USD"\\n }\\n ]\\n },\\n "platform": "",\\n "app_version": "3019",\\n "user_time": "1716372929998",\\n "current_time": "1716372929998"\\n }\\n ]\\n }\\n ]\\n}'
SDK
curl --location 'endpoint' \\
--header 'Content-Type: application/json' \\
--header 'MOE-APPKEY: {{Workspace_ID or APP_ID}}' \\
--data-raw '{
"viewsInfo": [
{
"EVENT_ACTION": "EVENT_ACTION_USER_ATTRIBUTE",
"EVENT_ATTRS": {
"USER_ATTRIBUTE_UNIQUE_ID": "123"
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
},
{
"EVENT_ACTION": "EVENT_ACTION_USER_ATTRIBUTE",
"EVENT_ATTRS": {
"USER_ATTRIBUTE_USER_NAME": "xQEC"
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
},
{
"EVENT_ACTION": "EVENT_ACTION_USER_ATTRIBUTE",
"EVENT_ATTRS": {
"USER_ATTRIBUTE_USER_FIRST_NAME": "JgfOr"
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
},
{
"EVENT_ACTION": "EVENT_ACTION_USER_ATTRIBUTE",
"EVENT_ATTRS": {
"USER_ATTRIBUTE_USER_EMAIL": "Ra4X@xyz. Com"
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
},
{
"EVENT_ACTION": "EVENT_ACTION_USER_ATTRIBUTE",
"EVENT_ATTRS": {
"USER_ATTRIBUTE_USER_LOCATION": "104.248,122.203"
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
},
{
"EVENT_ACTION": "EVENT_ACTION_USER_ATTRIBUTE",
"EVENT_ATTRS": {
"object_with_nesting_user_attribute_001": {
"item-id": 123,
"item-type": "books",
"item-cost_0001": {
"amount": 100,
"currency": "USD"
}
},
"array_of_object_sample_user_attribute_002": [
{
"item-id": 123,
"item-type": "books",
"item-cost": 100,
"item-currency": "USD"
},
{
"item-id": 323,
"item-type": "apparel",
"item-cost": 90,
"item-currency": "USD"
},
{
"item-id": 523,
"item-type": "food",
"item-cost": 200,
"item-currency": "USD"
}
]
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
},
{
"EVENT_ACTION": "object_event_reports_ios_level1",
"EVENT_ATTRS": {
"object_with_nesting_user_attribute_003": {
"item-id": 123,
"item-type": "books",
"item-cost": {
"amount": 100,
"currency": "USD"
}
},
"array_of_object_sample_user_attribute_004": [
{
"item-id": 123,
"item-type": "books",
"item-cost": 100,
"item-currency": "USD"
},
{
"item-id": 323,
"item-type": "apparel",
"item-cost": 90,
"item-currency": "USD"
},
{
"item-id": 523,
"item-type": "food",
"item-cost": 200,
"item-currency": "USD"
}
]
},
"EVENT_L_TIME": "22:05:2024:14:02:01",
"EVENT_G_TIME": "1716372930"
}
],
"viewsCount": 3,
"identifiers": {}
}'
スノーフレーク
Snowflakeでは、Objectデータ型もサポートされています。
Snowflakeに互換性のあるJSONデータを保存する
Snowflake内に有効なJSONを保存するには、列のデータ型を VARIANT 型に変更する必要があります。詳細については、 こちら を参照してください。
Snowflakeに格納されたJSONは有効なJSONである必要があります。そうでない場合、値はJSONとして書き込まれません。ここに例のJSON列があります:
{ "Designation": "SSE", "Palace": "Banglore", "age": 30, "name": "Shasha" }
Snowflakeを介してJSONデータをインポートする
MoEngageで オブジェクト タイプとしてマークされている既存の属性で、Snowflakeの列にマッピング可能なもの:
マッピングステップから新しいオブジェクト属性を常に作成することもできます。以下に示すように:
info |
Information MoEngageはネストされた属性とのマッピングをサポートしていません。最上位属性のみがマッピング可能です。 |
Zapier
Zapierは現在、オブジェクトタイプの属性を持つユーザーとイベントの作成をサポートしています。属性を オブジェクト 型としてマークするには、これらの属性を オブジェクト型属性 リスト内に定義する必要があります:
無効なJSON値を持つ属性は削除されます。同じフローが インポートユーザーイベントアクション にも適用されます。
info |
Information オブジェクト型であることを意図している属性が カスタム属性 リストの下で定義されている場合、それらは文字列として MoEngage に送信されます。ここでは、MoEngageのデフォルトの型キャスト変換ルールが、属性のピン留めされたデータ型に基づいて適用されます。 |
例外
- デフォルトでは、各ワークスペースに対して5つのオブジェクトのみを取り込むことができます。
- オブジェクト内または配列オブジェクト内の要素は、ヌルまたは空白が存在する場合に削除されます。
|
Sample Payload | MoEngageの行動 |
---|---|---|
1 | attribute0 : {} | Dropped |
2 | attribute01 : { } | ドロップされた |
3 | Attribute61 : [{ "a" : {} }, {"valid" : false}] | [{"valid": false}] は取り込まれ、残りの要素は削除されます。 |
4 | {"": "value" } | Dropped |
-
オブジェクトの異種配列はサポートされていません。オブジェクトの配列は、配列要素としてオブジェクトのみで構成される必要があります。
- ケース 1: オブジェクトとプリミティブ要素が混在している場合、プリミティブ要素は削除されます。
- ケース 2: 配列にオブジェクトが含まれていないが、配列が他のプリミティブ要素で構成されている場合、MoEngage は最初の要素のデータ型を参照データ型として取り扱い、残りの要素をそのデータ型に型変換しようとします。この試みが失敗した場合、要素は削除されます。
オブジェクトデータ型を使用する
このセクションでは、Objectデータ型の使用方法について説明します。
データ管理
MoEngageにオブジェクトデータ型属性を取り込んだ後、MoEngageダッシュボードの データ管理 セクションでそれらを管理できます。オブジェクトデータ型を編集するには、以下の手順に従ってください:
- MoEngage ダッシュボードに移動し、 設定 > 分析とデータ > データ管理 > ユーザー属性 または イベント をクリックします。
-
オブジェクトデータ型のユーザー属性を選択するか、検索バーを使用して検索してください。
-
属性行の垂直の省略記号をクリックし、
編集
をクリックします。
-
オブジェクト構造を変更します。例えば、文字列属性をブール値に、数値を文字列に変更します。
-
クリックして
保存
します。変更を保存すると警告が表示されます。
-
クリックして
続行
を確認してください。
info 情報
オブジェクト属性は24時間ごとに編集できます。同じ理由から、編集オプションは現在の編集から24時間後にのみ有効になります。
データ管理におけるオブジェクト属性で許可されるアクティビティ
- カスタムユーザーまたはイベント属性のデータ型をオブジェクトまたはオブジェクトの配列として固定できます。
- オブジェクトまたはオブジェクトの配列データ型の場合、システムはオブジェクトの構造を自動的に検出し、セグメンテーションのためにメタデータとして保存します。
- 構造体は、オブジェクトのすべての子要素とそのデータ型を最大2レベルまで持っている必要があります。
- オブジェクトまたはオブジェクト型の配列属性に対して、各子ノードを手動で定義できます。
- オブジェクト属性のスキーマが手動で定義されている場合、24時間変更できません(実行中のキャンペーン/トリガーによる不要な問題を避けるため)。スキーマが手動で定義された後、受信するデータはそれに対して検証され、定義に準拠していない場合は拒否されます。
- オブジェクト型属性の任意のオブジェクトまたは配列について、定義されたオブジェクト構造を生成するためにサンプルJSONを貼り付けることができます。
-
各子ノードのデータ型を最大2レベルまで指定できます。サポートされているデータ型は以下の通りです:
- 数値
- ブール値
- 文字列
- 日付型
- プリミティブ配列
- JSON(任意のレベルのネストされたオブジェクトを取り込むため)
- 任意のオブジェクト定義に対して、100以上の子ノードを作成できます。オブジェクトに100以上の子ノードがある場合、MoEngageは以前に定義された最初の100の子ノードのみを受け入れます。
- 既存の属性がオブジェクトとしてピン留めされている場合、以前の値は型変換されず、そのまま残ります。
-
属性に対する新しい値は、シナリオに応じて異なる扱いを受けます。
- 受信する値が定義された制限内のオブジェクトである場合、それは受け入れられます。
- 受信する値がプリミティブデータ型(数値、文字列、ブール値)である場合、それはカプセル化され、オブジェクトとして型変換されます。
- オブジェクトとして固定された属性のデータ型を「Any」または任意のプリミティブデータ型に変更できます。
- オブジェクトデータ型のブロック/アンブロックおよび表示/非表示のサブ属性は、ルートレベルの属性にのみ変更できます。
-
オブジェクトデータ型属性のスキーマは、以下の方法で編集できます:
- 最大2レベルのネストのためにオブジェクトに新しいサブ属性を追加します。
- 既存のサブ属性を削除します。
例外
- 属性は、オブジェクトまたは任意のプリミティブデータ型としてデータを取り込むことができます。
- オブジェクトデータ型のデータポイントを取り込んだ属性は、暗号化できません。
- 任意の属性が、任意のプリミティブデータ型でデータを取り込んでおり、PII暗号化属性としてマークされている場合、今後はオブジェクトデータポイントを取り込むことはできません。
ユーザープロファイル
このセクションではユーザープロフィールについて説明します。
ユーザー情報
MoEngage にオブジェクトデータタイプの属性を取り込んだ後、MoEngage ダッシュボードの ユーザープロファイル セクションでそれらを表示できます。オブジェクト属性を表示するには、以下の手順に従ってください:
- MoEngageダッシュボードに移動し、オブジェクト属性を使用してセグメントを作成します。
- セグメント作成ページで、 クエリ結果 セクションまでスクロールダウンし、次にクエリを選択します。
- サンプルユーザーを選択して、ユーザープロフィールページに移動します。または、右上の検索バーを使用して、IDを持つユーザーを検索します。
-
ユーザープロフィールページの
トラッキングされたカスタム属性
セクションで、すべてのオブジェクトタイプの属性を表示できます。
Activity Info
イベントに関連付けられたオブジェクト属性をアクティビティ情報で表示するには、以下の手順に従ってください:
- MoEngage ダッシュボードに移動し、オブジェクト属性を使用してセグメントを作成します。
- セグメント作成ページで、 クエリ結果 セクションまでスクロールダウンし、次にクエリをクリックして展開します。
- サンプルユーザーを選択して、ユーザープロファイルページに移動します。または、セグメント作成ページの右上隅にあるユーザー検索ボックスでユーザーIDを使用してユーザーを検索します。
- ユーザープロファイルページから、 アクティビティ情報 タブに移動し、オブジェクトタイプセクションであなたのすべてのイベントとイベント属性を表示できます。
キャンペーンとチャネルにおけるオブジェクトデータ型のサポート
下記の表は、配送タイプを示し、異なるキャンペーンでオブジェクトデータタイプがサポートされているかどうかを示しています。
キャンペーンタイプ | プッシュ | SMS | コネクタ | ||
---|---|---|---|---|---|
一度 | Yes | Yes | Yes | Yes | Yes |
定期的 | Yes | Yes | Yes | Yes | Yes |
イベントがトリガーされました | Yes | Yes | Yes | Yes | Yes |
ビジネスイベントがトリガーされました | No | No | No | NA* | NA* |
デバイストリガー | No | NA* | NA* | NA* | NA* |
ロケーション トリガー | Yes | NA* | NA* | NA* | NA* |
NA* は、その特定のキャンペーンに対して配信タイプがサポートされていないことを示します。
以下の表には、チャネルが記載されており、オブジェクトデータ型がサポートされているかどうかが示されています。
チャンネル | アプリ内 | オンサイト | カード | Google 広告 | ウェブパーソナライゼーション | |
---|---|---|---|---|---|---|
オブジェクトデータ型はサポートされていますか? | Yes | Yes | No | No | No | Yes |
以下の表は、キャンペーン作成に関わるステップを示し、異なるキャンペーンでオブジェクトデータタイプがサポートされているかどうかを示しています。
キャンペーン作成手順 | オブジェクトデータ型はサポートされていますか? |
---|---|
ターゲットユーザー > 対象を選択 > すべてのユーザー、ユーザーをフィルター > ユーザーのプロパティ、ユーザーの行動 | Yes |
コンテンツ > リンクのパーソナライズ、画像のパーソナライズ、プレビュー | Yes |
コンテンツ > 新しいロケールを追加 > ユーザー プロパティ | No |
スケジュールと目標 > コンバージョン目標 > 新しい目標 > イベントを選択 | No |
以下の表は、フロー作成に関わるステップを示し、オブジェクトデータ型が異なるキャンペーンでサポートされているかどうかを示しています。
フロー作成手順 | Object Data Type Supported? |
---|---|
When will users enter the flow > On event trigger > IF user has executed > Select an event | Yes |
When will users enter the flow > On flow exit > When user has exited > Select by name | Yes |
Who will enter the flow > Audience > All users, Filter users by> User property, User behavior | Yes |
What's Next
Using Object Data Type in Segmentation .