日本語版はAIによる翻訳です。正確な情報については英語版をご参照ください。 英語版を表示
メインコンテンツまでスキップ

Pub/Sub 経由でのイベントおよびユーザー属性の取り込み

Pub/Sub を使用したユーザーイベントおよび属性のパブリッシュガイド

概要

このドキュメントでは、Pub/Sub 上の Auxia システムを使用してユーザーイベントとユーザー属性をパブリッシュする方法を説明します。textproto データの正しい構造と、Pub/Sub からの結果メッセージについて解説します。

お客様側の要件

Pub/Sub 統合を設定するには、以下を提供してください。

  1. トピック名(フルパス)

    • 例: projects/my-company/topics/user-events
  2. トピックに対する権限

    • Auxia のサービスアカウント(data-transfer@auxia-gcp.iam.gserviceaccount.com)に上記トピックの pubsub.subscriptions.create 権限を付与してください。これにより、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"
}