メッセージのアーカイブ
メッセージのアーカイブ機能により、ユーザーに送信されたメッセージのコピーを、保存やコンプライアンス目的で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

MD5ダイジェストは、既知の小文字化されたメールアドレス、プッシュトークン、またはE.164形式の電話番号を使用してのみ計算できます。既知のMD5ダイジェストから逆算して、小文字化されたメールアドレス、プッシュトークン、またはE.164形式の電話番号を取得することはできません。

バケット内でプッシュトークンが見つからない場合
Brazeはプッシュトークンをハッシュ化する前に小文字に変換します。そのため、プッシュトークンTest_Push_Token12345はキーパス内でtest_push_token12345に小文字化され、ハッシュは32b802170652af2b5624b695f34de089になります。
メッセージアーカイブの設定
このセクションでは、ワークスペースでメッセージアーカイブを設定する手順を説明します。作業を始める前に、会社でメッセージアーカイブを購入し、有効にしていることを確認してください。
ステップ1: クラウドストレージバケットを接続する
まだ接続していない場合は、クラウドストレージバケットを Braze に接続します。手順については、Amazon S3、Azure Blob Storage、または Google Cloud Storage のパートナードキュメントを参照してください。

メッセージアーカイブには Currents の設定は不要です。パートナードキュメントに記載されているこの前提条件は省略できます。
ステップ2: メッセージアーカイブの対象チャネルを選択する
メッセージアーカイブの設定ページでは、送信済みメッセージのコピーをクラウドストレージバケットに保存するチャネルを指定します。
チャネルを選択するには、次の手順に従います。
- 設定 > メッセージアーカイブに移動します。
- チャネルを選択します。
- 変更を保存を選択します。


設定にメッセージアーカイブが表示されない場合は、会社でメッセージアーカイブを購入し、有効にしていることを確認してください。

アプリ内メッセージのメッセージアーカイブを有効にすると、すべてのアプリ内メッセージがテンプレート化されたアプリ内メッセージに変換されます。つまり、Braze がメッセージを表示する前にネットワークリクエストが必要になります。詳しくは、アプリ内メッセージのメッセージアーカイブを有効にするとどうなりますか?を参照してください。
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": ToAddress, ("customer@example.com")
"subject": SubjectLine ("20% off coupon inside!"),
"from_name": DisplayName ("Braze"),
"from_address": FromAddress ("no-reply@example.com"),
"html_body": HtmlBody,
"plaintext_body": PlainTextBody,
"amp_body": AMPEmailBody,
"extras": Hash of key-value pairs from Email Extras configured in the email editor,
"headers": HashOfHeaders,
"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,
"attachments": Array of JSON Objects containing 'bytes' and 'file_name', // 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
}
extras フィールドには、HTML エディターでメールを作成する際に メールエクストラフィールドで設定したキーと値のペアが含まれます。メールエクストラはすべてのメールサービスプロバイダー (ESP) (SendGrid や Sparkpost を含む) で機能し、使用するプロバイダーに関係なくアーカイブされたメッセージに含まれます。メールエクストラの設定について詳しくは、メールキャンペーンの作成を参照してください。Currents にデータを送り返す方法については、メッセージエクストラを参照してください。

{
"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
}
プッシュペイロード構造のバリエーション

プッシュ通知アーカイブのトップレベルの payload フィールドには、デバイスに送信されたプロバイダーペイロード全体が含まれます。この JSON 内の aps (APNs の場合) や notification と data (FCM の場合) などのキーは、メッセージの種類、プラットフォーム、設定によって大きく異なる場合があります。
メッセージアーカイブはメッセージペイロード自体をキャプチャしますが、FCM または APNs に送信される配信メタデータは含まれません。配信メタデータには以下が含まれます。
- デバイストークン
- 優先度の設定
- 有効期間 (TTL)
- 折りたたみ ID
- APNs ヘッダー
- 有効期限のタイムスタンプ
- その他の配信設定フィールド
これらのフィールドは、プッシュプロバイダーへの配信指示として機能します。通常、メッセージコンテンツの一部とは見なされません。
例:
- iOS のプッシュ通知では、リッチ通知 (
aps.alertがtitleやbodyなどのフィールドを含むオブジェクトの場合) とシンプルな通知 (aps.alertが文字列の場合) で構造が異なることがあります。 - Android のプッシュ通知 (FCM など) では、カスタムキーを含むデータメッセージを使用します。ペイロード構造には、プッシュボタン、カルーセル、追加のメタデータなど、メッセージの設定に応じてさまざまなオプションフィールドが含まれる場合があります。
また、ダッシュボードからのテスト送信では、本番のメッセージとは異なるペイロード構造が生成される場合があります。
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 がどのワークスペースに属しているかを特定し、その情報に基づいてグループ化できます。