
Pub/Sub 経由でのイベントおよびユーザー属性の取り込み
概要
このドキュメントでは、Pub/Sub 上の Auxia システムを使用してユーザーイベントとユーザー属性をパブリッシュする方法を説明します。textproto データの正しい構造と、Pub/Sub からの結果メッセージについて解説します。
お客様側の要件
Pub/Sub 統合を設定するには、以下を提供してください。
-
トピック名(フルパス)
- 例:
projects/my-company/topics/user-events
- 例:
-
トピックに対する権限
- Auxia のサービスアカウント(
data-transfer@auxia-gcp.iam.gserviceaccount.com)に上記トピックのpubsub.subscriptions.create権限を付与してください。これにより、Auxia 側でサブスクリプションを作成できます。
- Auxia のサービスアカウント(
イベント:
ユーザーイベントのスキーマ:
Event Transaction データのドキュメントに記載されているスキーマを参照してください。以下のリンクで提供されている正確なスキーマを使用してください: Auxia ユーザーイベントスキーマ
イベントパブリッシュ用の Textproto フォーマット:
Auxia システムでユーザーイベントをパブリッシュするには、以下の textproto フォーマットを使用します。Event および LogEventsRequest メッセージのスキーマはドキュメントに従います。
サンプル textproto:
project_id: "1874"
user_id: "12345"
events {
event_name: "shop_transaction"
event_properties {
key: "spent_current_ammount"
value {
long_value: 200
}
}
event_properties {
key: "shop_id"
value {
long_value: 123
}
}
event_properties {
key: "shop_item_ids"
value {
string_value: "abc, def, ghi"
}
}
client_event_timestamp {
seconds: 1705932201
nanos: 915585000
}
server_received_timestamp {
seconds: 1705927421
nanos: 0
}
}
Pub/Sub からプルしたサンプルメッセージ:
{
"ackId": "<>",
"message": {
"attributes": {
"data_type": "EventData"
},
"data": "CgQxODc0EgUxMjM0NRp3ChBzaG9wX3RyYW5zYWN0aW9uGiAKDXNob3BfaXRlbV9pZHMSDxoNYWJjLCBkZWYsIGdoaRoNCgdzaG9wX2lkEgIIexocChVzcGVudF9jdXJyZW50X2FtbW91bnQSAwjIASoMCOnPw7wGEOjvyrQDMgYIyZfDvAY=",
"messageId": "<>",
"publishTime": "2025-01-22T12:43:22.345Z"
}
}
Pub/Sub からのメッセージのデコード:
Pub/Sub からメッセージをプルした後、読み取り可能なフォーマットにデコードする必要があります。メッセージの data フィールドには base64 エンコードされた文字列が含まれています。この文字列を LogEventsRequest のスキーマに一致する JSON 構造にデコードする必要があります。
サンプルデコード済みメッセージ:
{
"projectId": "1874",
"userId": "12345",
"events": [
{
"eventName": "shop_transaction",
"eventProperties": {
"spent_current_ammount": {
"longValue": "200"
},
"shop_id": {
"longValue": "123"
},
"shop_item_ids": {
"stringValue": "abc, def, ghi"
}
},
"clientEventTimestamp": "2025-01-22T12:43:21.915585Z",
"serverReceivedTimestamp": "2025-01-22T10:43:21Z"
}
]
}
ユーザー属性:
ユーザー属性のスキーマ:
ユーザー属性のドキュメントを参照してください。以下の正確なスキーマを使用してください。
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message AuxiaUserAttribute {
string user_id = 1;
map<string, PropertyValue> user_properties = 2;
google.protobuf.Timestamp update_timestamp = 3;
}
message PropertyValue {
oneof property_value {
int64 long_value = 1;
double double_value = 2;
string string_value = 3;
bool boolean_value = 4;
google.protobuf.Timestamp timestamp_value = 5;
}
}
ユーザー属性パブリッシュ用の Textproto フォーマット:
Auxia システムでユーザーイベントをパブリッシュするには、以下の textproto フォーマットを使用します。UserProperties メッセージのスキーマは上記のスキーマに従います。
サンプル textproto:
user_id: "12345"
user_properties {
key: "language"
value {
string_value: "en"
}
}
user_properties {
key: "last_access_country"
value {
string_value: "us"
}
}
user_properties {
key: "country"
value {
string_value: "ja"
}
}
update_timestamp {
seconds: 1705933702
nanos: 693271000
}
Pub/Sub からプルしたサンプルメッセージ:
{
"ackId": "<>",
"message": {
"attributes": {
"data_type": "UserAttribute"
},
"data": "CgUxMjM0NRIPCgdjb3VudHJ5EgQaAmphEhsKE2xhc3RfYWNjZXNzX2NvdW50cnkSBBoCdXMSEAoIbGFuZ3VhZ2USBBoCZW4aDAjG28O8BhDY88nKAg==",
"messageId": "<>",
"publishTime": "2025-01-22T13:08:23.141Z"
}
}
Pub/Sub からのメッセージのデコード:
Pub/Sub からメッセージをプルした後、読み取り可能なフォーマットにデコードする必要があります。メッセージの data フィールドには base64 エンコードされた文字列が含まれています。この文字列を AuxiaUserAttribute のスキーマに一致する JSON 構造にデコードする必要があります。
サンプルデコード済みメッセージ:
{
"userId": "12345",
"userProperties": {
"language": {
"stringValue": "en"
},
"last_access_country": {
"stringValue": "us"
},
"country": {
"stringValue": "ja"
}
},
"updateTimestamp": "2025-01-22T13:08:22.693271Z"
}