コンテンツにスキップ

メッセージのアーカイブ

メッセージのアーカイブ機能により、ユーザーに送信されたメッセージのコピーを、保存やコンプライアンス目的でAWS S3バケット、Azure Blob Storageコンテナ、またはGoogle Cloud Storageバケットに保存できます。

この記事では、メッセージのアーカイブの設定、JSONペイロード参照、およびよくある質問について説明します。

メッセージのアーカイブはアドオン機能として利用できます。メッセージのアーカイブを開始するには、Brazeのカスタマーサクセスマネージャーにお問い合わせください。

仕組み

この機能をオンにすると、Brazeは選択したチャネル(メール、SMS/MMS、プッシュ、またはアプリ内メッセージ)を通じてユーザーに送信されたメッセージごとに、gzip圧縮されたJSONファイルを書き込みます。Brazeはこれらのファイルをデフォルトのデータエクスポート先に書き込みます。これには各チャネルのすべてのキャンペーンタイプが含まれます。たとえば、トランザクションメールAPIを通じて送信されるトランザクションメールキャンペーンも対象です。

このファイルには、ファイルリファレンスで定義されたフィールドが含まれ、ユーザーに送信された最終的なテンプレート適用後のメッセージが反映されます。キャンペーンで定義したテンプレート値(たとえば、{{${first_name}}})には、ユーザーのプロファイル情報に基づいてユーザーが受け取った最終的な値が表示されます。これにより、コンプライアンス、監査、またはカスタマーサポートの要件を満たすために、送信されたメッセージのコピーを保持できます。

複数のクラウドストレージプロバイダーの認証情報を設定している場合、メッセージアーカイブはデフォルトのデータエクスポート先として指定されたプロバイダーにのみエクスポートされます。明示的なデフォルトを設定しておらず、AWS S3バケットが接続されている場合、メッセージアーカイブはそのバケットにアップロードされます。

JSONは、次のキー構造を使用してストレージバケットに保存されます。

sent_messages/{channel, one of: email, push, sms}/{MD5 digest of downcased: email address, push token, or E.164 phone number}/{campaign or キャンバス step API ID}/{dispatch ID}.json.gz

ファイルの例は次のとおりです。

sent_messages/email/819baa08d8d7e77e19d4666f5fc6050b/ee965cb2-8934-4b0a-acf1-91c899c2f915/651fd10b282850b39e1169c13975234b.json.gz

メッセージアーカイブの設定

このセクションでは、ワークスペースでメッセージアーカイブを設定する手順を説明します。作業を始める前に、会社でメッセージアーカイブを購入し、有効にしていることを確認してください。

ステップ1: クラウドストレージバケットを接続する

まだ接続していない場合は、クラウドストレージバケットを Braze に接続します。手順については、Amazon S3、Azure Blob Storage、または Google Cloud Storage のパートナードキュメントを参照してください。

ステップ2: メッセージアーカイブの対象チャネルを選択する

メッセージアーカイブの設定ページでは、送信済みメッセージのコピーをクラウドストレージバケットに保存するチャネルを指定します。

チャネルを選択するには、次の手順に従います。

  1. 設定 > メッセージアーカイブに移動します。
  2. チャネルを選択します。
  3. 変更を保存を選択します。

メッセージアーカイブページでは、メール、プッシュ、SMS の3つのチャネルを選択できます。

IPアローリスト

メッセージアーカイブがクラウドストレージバケットにファイルをアップロードする際、Brazeは当社のサーバーからお客様のAWS S3、Azure Blob Storage、またはGoogle Cloud Storageのエンドポイントにネットワークリクエストを送信します。IPアローリストを使用すると、これらのリクエストがBrazeから送信されていることを確認でき、セキュリティを一層強化できます。

Brazeは、Connected ContentおよびCurrentsで使用されているものと同じIPアドレスから、メッセージアーカイブのアップロードを送信します。インスタンスごとのIPの完全なリストについては、Connected ContentのIPアローリストを参照してください。

ファイル参照

以下は、メッセージが送信されるたびにクラウドストレージバケットに配信される JSON ペイロードのリファレンスです。メッセージアーカイブのサンプルファイルについては、コード例のリポジトリを参照してください。

{
  "version": 1 //numerical version of the JSON structure
  "to": PhoneNumber, ("+15555555555"),
  "body": Body ("Hi there!"),
  "subscription_group": SubscriptionGroupExternalId,
  "provider": StringOfProviderName,
  "media_urls": ArrayOfString, // indicates a message is MMS
  "sent_at": UnixTimestamp,
  "dispatch_id": DispatchIdFromBraze,
  "campaign_id": CampaignApiId, // may not be available
  "canvas_id": CanvasApiId, // may not be available
  "canvas_step_id": CanvasStepApiId, // may not be available
  "canvas_variation_id" : CanvasVariationApiId, // may not be available
  "message_variation_id": MessagVariationApiId, // may not be available
  "user_id": String,
  "campaign_name": String, // will only be available if the message is from a campaign
  "canvas_name": String, // will only be available if the message is from a Canvas
  "canvas_step_name": String, // will only be available if the message is from a Canvas
  "external_id": String
}
{
  "version": 1, //numerical version of the JSON structure
  "to": PushToken,
  "payload": JsonOfEntirePushPayload,
  "platform": one of "android_push" | "ios_push" | "kindle_push" | "web_push",
  "app_id": ApiKeyOfApp,
  "sent_at": UnixTimestamp,
  "dispatch_id": DispatchIdFromBraze,
  "campaign_id": CampaignApiId, // may not be available
  "canvas_id": CanvasApiApiId, // may not be available
  "canvas_step_id": CanvasStepApiId, // may not be available
  "canvas_variation_id" : CanvasVariationApiId, // may not be available
  "message_variation_id": MessagVariationApiId, // may not be available
  "user_id": String,
  "campaign_name": String, // will only be available if the message is from a campaign
  "canvas_name": String, // will only be available if the message is from a Canvas
  "canvas_step_name": String, // will only be available if the message is from a Canvas
  "external_id": String
}

プッシュペイロード構造のバリエーション

メッセージアーカイブはメッセージペイロード自体をキャプチャしますが、FCM または APNs に送信される配信メタデータは含まれません。配信メタデータには以下が含まれます。

  • デバイストークン
  • 優先度の設定
  • 有効期間 (TTL)
  • 折りたたみ ID
  • APNs ヘッダー
  • 有効期限のタイムスタンプ
  • その他の配信設定フィールド

これらのフィールドは、プッシュプロバイダーへの配信指示として機能します。通常、メッセージコンテンツの一部とは見なされません。

例:

  • iOS のプッシュ通知では、リッチ通知 (aps.alert が title や body などのフィールドを含むオブジェクトの場合) とシンプルな通知 (aps.alert が文字列の場合) で構造が異なることがあります。
  • Android のプッシュ通知 (FCM など) では、カスタムキーを含むデータメッセージを使用します。ペイロード構造には、プッシュボタン、カルーセル、追加のメタデータなど、メッセージの設定に応じてさまざまなオプションフィールドが含まれる場合があります。

また、ダッシュボードからのテスト送信では、本番のメッセージとは異なるペイロード構造が生成される場合があります。

JSON ペイロードの形式はメッセージごとに異なる場合があり、時間の経過とともに変更される可能性があります。アーカイブされたプッシュペイロードを解析する際は、構造が固定されていることや、常に同じフィールドが存在することを前提にしないでください。さまざまなペイロード形式に対応できる柔軟な解析ロジックを実装してください。

{
  "version": 1, //numerical version of the JSON structure
  "to": UserId, // the message recipient's identifier, typically matches user_id
  "payload": JsonOfEntireInAppMessagePayload,
  "platform": StringOfPlatformName, ("web")
  "device_identifier": DeviceIdentifier, // may not be available
  "app_id": ApiKeyOfApp,
  "sent_at": UnixTimestamp,
  "dispatch_id": DispatchIdFromBraze,
  "campaign_id": CampaignApiId, // may not be available
  "canvas_id": CanvasApiId, // may not be available
  "canvas_step_id": CanvasStepApiId, // may not be available
  "canvas_variation_id" : CanvasVariationApiId, // may not be available
  "message_variation_id": MessageVariationApiId, // may not be available
  "user_id": String,
  "campaign_name": String, // will only be available if the message is from a campaign
  "canvas_name": String, // will only be available if the message is from a Canvas
  "canvas_step_name": String, // will only be available if the message is from a Canvas
  "external_id": String
}

アプリ内メッセージペイロード構造のバリエーション

JSON ペイロードの形式はメッセージごとに異なる場合があり、時間の経過とともに変更される可能性があります。アーカイブされたアプリ内メッセージペイロードを解析する際は、構造が固定されていることや、常に同じフィールドが存在することを前提にしないでください。さまざまなペイロード形式に対応できる柔軟な解析ロジックを実装してください。

よくある質問

アプリ内メッセージのメッセージアーカイブをオンにするとどうなりますか?

アプリ内メッセージのメッセージアーカイブをオンにすると、すべてのアプリ内メッセージがテンプレート化されたアプリ内メッセージになります。そのため、Braze がメッセージを表示する前にネットワークリクエストが必要になります。

ペイロードに含まれないテンプレートは何ですか?

メッセージが Braze から送信された後に行われた変更は、クラウドストレージバケットに保存されるファイルには反映されません。これには、クリックトラッキングのためのリンクのラップやトラッキングピクセルの挿入など、メール配信パートナーが行う変更が含まれます。

キャンペーンパスの「unassociated」値の下にあるメッセージは何ですか?

キャンペーンやキャンバスの外部でメッセージが送信された場合、ファイル名のキャンペーン ID は「unassociated」になります。これは、ダッシュボードからテストメッセージを送信した場合、Braze が SMS/MMS の自動応答を送信した場合、または API 経由で送信されたメッセージにキャンペーン ID が指定されていない場合に発生します。

この送信に関する詳細情報を確認するにはどうすればよいですか?

external_id または dispatch_id のいずれかを user_id と組み合わせて使用し、テンプレート化されたメッセージを Currents のデータと照合することで、配信されたタイムスタンプや、ユーザーがメッセージを開封またはクリックしたかどうかなど、詳細情報を確認できます。

再試行はどのように処理されますか?

クラウドストレージバケットにアクセスできない場合、Braze はバックオフジッターを使用して最大 3 回再試行します。AWS S3 のレート制限による再試行は Braze によって自動的に処理されます。

認証情報が無効な場合はどうなりますか?

クラウドストレージの認証情報が無効になると、Braze はクラウドストレージバケットにメッセージを保存できなくなり、それらのメッセージは失われます。認証情報の問題に関するアラートを受け取れるよう、Amazon Web Services、Google Cloud Services、または Azure (Microsoft Cloud Services) の通知設定を構成することをお勧めします。

アーカイブファイルの sent_at タイムスタンプが Currents の送信タイムスタンプとわずかに異なるのはなぜですか?

レンダリングされたコピーは、ユーザーにメッセージを送信する直前にアップロードされます。クラウドストレージへのアップロード時間により、レンダリングされたコピーの sent_at タイムスタンプと実際に送信が行われた時刻との間に数秒の遅延が生じる場合があります。

Currents データ用の現在のバケットを維持したまま、メッセージアーカイブ専用の新しいバケットを作成できますか?

いいえ。dedicated message archiving buckets while keeping a separate Currents bucketにご興味がある場合は、製品フィードバックを送信してください。

Currents のデータエクスポートの構造と同様に、アーカイブされたデータは既存のバケット内の専用フォルダーに書き込まれますか?

データはバケットの sent_messages セクションに書き込まれます。詳細については、仕組みを参照してください。

メッセージアーカイブを使用して、ファイルをワークスペースごとにグループ化できますか?

いいえ。メッセージアーカイブは、ワークスペースに基づくファイルのグループ化をサポートしていません。代わりに、キャンペーンまたはキャンバスステップの API ID がどのワークスペースに属しているかを特定し、その情報に基づいてグループ化できます。

New Stuff!