[レポート]Brazeで Liquid と Connected Content を使ったリアルタイムパーソナライズの方法 #devio2022

2022.08.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、アライアンス統括部のまつおかです。

本ブログは DevelopersIO 2022 ~技術で心を揺さぶる3日間~ にてビデオセッションとして参加いただいたBraze社の発表をレポートしたものです。 動画はYoutubeで公開されていますので、詳細はぜひそちらをご視聴ください。

セッション概要

概要

Brazeでエンゲージメントを行う際に、肝となるパーソナライズ施策をより高度に実践するためにLiquidとConnected Contentと呼ばれる仕組みを使う方法を技術的観点からご紹介します。

登壇者

  • Braze株式会社 最高技術 & プロダクト責任者 新田 達也氏

動画

Brazeとは

Brazeは カスタマーエンゲージメントプラットフォーム

  • 以下の方法で顧客データを取込み
    • アプリ内に埋め込んだSDK、またはAPI経由
    • パートナー企業で用意されているコネクタ
  • セグメント化
    • 顧客プロファイルをもとに誰にどんなメッセージを送るのか
  • オーケストレーション
    • 配信タイミング、コンテンツなどシナリオ作成
  • パーソナライゼーション
    • LiquidとConnected Contentを使用
  • アクション
    • 様々なチャネルへ配信(プッシュ通知、アプリ内メッセージ、電子メールなど)

今回ご紹介するのは パーソナライゼーション のレイヤーの話になります。

Brazeについてはこちらのブログでもご紹介しておりますのでご参照ください。

パーソナライズメッセージの作成方法

パーソナライズメッセージの作成手法は3種類

  1. 顧客の属性情報を差し込み
    • Braze内で保持している顧客情報の中の属性情報をメッセージエディター内で差し込む
  2. テンプレート言語 Liquid を使った制御
    • 高度なパーソナライズを行う場合
    • メッセージの出し分けや制御
  3. Connected Contents で外部データをリアルタイム参照
    • 更に高度なパーソナライズを行いたい場合
    • 外部データをリアルタイムに参照

メッセージ作成画面のエディター部分でロジックを組んでいく

LiquidとConnected Content

Liquidとは

Brazeのメッセージエディタ上で使える主要なタグ

Connected Contentとは

  • {% connected_content %} タグを使い外部URLに対してHTTPリクエストを実行
    JSON形式のデータを受け取り「:save」オプションのあとに指定した変数にデータが格納される

    {% connected_content https://www.metaweather.com/api/location/1118370/ :save melweather %}

  • {% assign %} タグを使いJSON形式のデータから目的の項目の値を変数に格納

    {% assign condition = {{melweather.consolidated_weather[0].weather_state_name}} %}

  • Braze内の属性情報を使い、エンドポイントのURLを動的に変更することも可能

Connected Contentの使用上の注意

Basic認証が必要な場合

  • あらかじめBrazeダッシュボードの「設定の管理>Connected Contents」でクレデンシャル情報を追加しておく

TokenやOAuthが必要な場合

  • Connected Contentコール内で指定
  • Tokenによる認証の場合
    :headers に続いて、IDやトークンをオブジェクト形式で含める

  • OAuthによる認証の場合
    Connected Contentコールを2回呼ぶ

    • 1回目(アクセストークン取得)
      :headers に続いて、トークンをオブジェクト形式で含めトークンを要求
      取得したトークンは token_response に格納される
    • 2回目(ターゲットのエンドポイントをコール)
      1回目のコールで取得したトークンを :headers 内で指定

その他

  • Connected Contentコール先のエンドポイントは2秒以内にレスポンスを返す必要あり
    • Saasの性質上、Braze内でのリソース確保に制限を設けている
    • 2秒以内に返せなかった場合はタイムアウト
    • リトライさせたい場合は :retry オプションを指定
      • デフォルトで5回まで自動的にリトライ
      • 5回試行しても失敗する場合は処理を中止
        {% connected_content https://www.yourwebsite.com/api/endpoint :retry %}
  • キャッシュ機構あり
    • GETリクエストはデフォルト5分(:cache_max_ageオプションにて変更可能)
    • POSTリクエストはデフォルトキャッシュなし(:cache_max_ageオプションにて変更可能)
      • POSTリクエストのキャッシュは認証用のトークンを取得する場合を想定
      • URLが同じかどうかでキャッシュするかどうか判断するため、リクエスト先のURLが同じでBODYが異なる場合はキャッシュしないのがベストプラクティス

さいごに

以上、Braze社のビデオセッションレポートでした。
Brazeが得意とするリアルタイムなパーソナライズを実現させるためには欠かせない Liquid と Connected Content についてとてもわかりやすく説明いただいており、私も勉強になりました。

DevelopersIO 2022イベントの全セッションはこちらからご覧いただけますので、ぜひこちらもご覧ください!