ルールベースの推奨事項
ルールベースのレコメンデーションエンジンは、ユーザーデータと製品情報を使用して、メッセージ内でユーザーに関連するアイテムを提案します。それはLiquidとBraze カタログまたはコネクテッドコンテンツのいずれかを使用して、ユーザーの行動と属性に基づいてコンテンツを動的にパーソナライズします。
Liquid、カタログ、コネクテッドコンテンツについて詳しく知るには、これらのBraze学習コースをチェックしてください:
ルールベースの推奨事項は、手動で設定する必要がある固定ロジックに基づいています。これは、ロジックを更新しない限り、あなたの推奨事項がユーザーの購入履歴や好みに調整されないことを意味します。
ユーザーの履歴に自動的にAdjustするパーソナライズされたAIレコメンデーションを作成するには、AI item recommendationsをチェックしてください。
カタログのレコメンデーションエンジンを作成する
- 製品のカタログを作成する
- 各製品について、区切り文字(パイプ
|
など)で区切られた文字列として推奨製品のリストを「product_recommendations」という列に追加します。 - 製品IDをカタログに渡して、推奨事項を見つけてください。
- そのカタログアイテムの
product_recommendations
値を取得し、Liquid分割フィルターでデリミタで分割します。 - それらのIDの1つ以上をカタログに戻して、他の製品の詳細を収集します。
カタログのユースケース
たとえば、健康食品アプリを持っていて、ユーザーがアプリにサインアップしてからの期間に応じて異なるレシピを送信するコンテンツカードキャンペーンを作成したいとします。
- CSVを介して次の情報を含むカタログを作成してアップロードします:
- id:ユーザーがあなたのアプリにサインアップしてからの日数に相当するユニークな番号。例えば、3
は3日間に相当します。
タイプ:レシピのカテゴリ、例えばcomfort
、fresh
、その他。
タイトル:各IDに送信されるコンテンツカードのタイトルは、「今週のランチのために作り置き」や「タコスについて話そう」などです。
リンク:レシピ記事へのリンク。
画像_url:レシピに対応する画像。
2.カタログがBrazeにアップロードされた後、カタログアイテムの一部のプレビューを確認して、情報が正確にインポートされたことを確認してください。アイテムはプレビューでランダム化される場合がありますが、レコメンデーションエンジンの出力には影響しません。
3.コンテンツカードキャンペーンを作成します。コンポーザーで、どのユーザーがキャンペーンを受け取るべきか、どのレシピと画像を表示するべきかを決定するためにLiquidロジックを入力します。このユースケースでは、Braze はユーザーのstart_date
(またはサインアップ日)を取得し、現在の日付と比較します。日数の違いによって、どのコンテンツカードが送信されるかが決まります。
Title:
1
2
3
4
5
6
{% assign start_date = {{custom_attribute.${start_date}}} | date: "%s" %}
{% assign current_date = "now" | date: "%s" %}
{% assign diff = {{current_date}} | minus: {{start_date}} | divided_by: 86400 %}
{% assign days = {{diff}} | round %}
{% catalog_items Healthy_Recipe_Catalog_SMB {{days}} %}
{{ items[0].title }}
メッセージ:
1
2
3
4
5
6
7
8
9
10
{% assign start_date = {{custom_attribute.${start_date}}} | date: "%s" %}
{% assign current_date = "now" | date: "%s" %}
{% assign diff = {{current_date}} | minus: {{start_date}} | divided_by: 86400 %}
{% assign days = {{diff}} | round %}
{% catalog_items Healthy_Recipe_Catalog_SMB {{days}} %}
{% if items[0].title != blank %}
{{ items[0].body }}
{% else %}
{% abort_message('no card for today') %}
{% endif %}
画像:
1
2
3
4
5
6
{% assign start_date = {{custom_attribute.${start_date}}} | date: "%s" %}
{% assign current_date = "now" | date: "%s" %}
{% assign diff = {{current_date}} | minus: {{start_date}} | divided_by: 86400 %}
{% assign days = {{diff}} | round %}
{% catalog_items Healthy_Recipe_Catalog_SMB {{days}} %}
{{ items[0].image_url }}
4.「クリック時の動作」セクションで、iOS、Android、およびWebデバイスでコンテンツカードをクリックしたときにユーザーがリダイレクトされる場所のLiquidロジックを入力します。
1
2
3
4
5
6
{% assign start_date = {{custom_attribute.${start_date}}} | date: "%s" %}
{% assign current_date = "now" | date: "%s" %}
{% assign diff = {{current_date}} | minus: {{start_date}} | divided_by: 86400 %}
{% assign days = {{diff}} | round %}
{% catalog_items Healthy_Recipe_Catalog_SMB {{days}} %}
{{ items[0].link }}
5.テスト タブに移動し、ユーザーとしてメッセージをプレビュー の下の カスタムユーザー を選択します。日付をカスタム属性フィールドに入力して、その日にサインアップしたユーザーに送信されるコンテンツカードをプレビューします。
コネクテッドコンテンツレコメンデーションエンジンの作成
- 次のいずれかの方法でコネクテッドコンテンツエンドポイントを作成します:
- スプレッドシートをJSON APIエンドポイントに変換するには、SheetDPのようなサービスを使用し、生成されるAPI URLに注意してください。
- カスタムビルドの社内エンドポイントを構築、ホスト、および維持する
- サードパーティのパートナーを通じてレコメンデーションエンジンを購入します。例えば、Alloyパートナーの1つであるAmazon Personalise、Certona、ダイナミックなYieldなどがあります。
- メッセージ本文またはコンテンツブロックHTMLエディタにコネクテッドコンテンツLiquidを記述して、データベースを検索するエンドポイントを呼び出します。
- 与えられたユーザーのプロファイルで見つけたカスタム属性の値にLiquidを合わせます。
- 正しい推奨事項を結果として引き出します。
1
2
3
4
5
6
7
8
{% connected_content YOUR-API-URL :save items %}
{% assign recommended_item_ids_from_user_profile = custom_attribute.${RECOMMENDED_ITEM_IDS} | split: ';' %}
{% for item_id in recommended_item_ids_from_user_profile %}
{% assign recommended_item = items | where: "ITEM_ID", ITEM_ID | first %}
recommended_item.item_name
{% endfor %}
属性 | 交換 |
---|---|
YOUR-API-URL |
APIの実際のURLに置き換えてください。 |
RECOMMENDED_ITEM_IDS |
推奨アイテムのIDを含むカスタム属性の実際の名前に置き換えてください。この属性は、セミコロンで区切られたIDの文字列であることが期待されます。 |
ITEM_ID |
APIレスポンス内のアイテムIDに対応する属性の実際の名前に置き換えてください。 |
これは基本的な例であり、特定のニーズやデータ構造に基づいてさらに修正する必要があるかもしれません。詳細なガイダンスについては、Liquidドキュメントを参照するか、開発者に相談してください。
コネクテッドコンテンツ ユースケース
レストランの推薦をZomatoレストランデータベースから引き出し、その結果をrestaurants
というローカル変数として保存したいとしましょう。次のコネクテッドコンテンツ呼び出しを行うことができます:
1
2
3
4
{% connected_content https://developers.zomato.com/api/v2.1/search?entity_id={{city_id}}&entity_type=city&count=20&cuisines={{food_type}}&sort=rating:headers{“user-key”:“USER_KEY”} :save restaurants %}
{{city_food.restaurants[0]}}
次に、ユーザーの市区町村と食べ物の種類に基づいてレストランの推薦を引き出したいとしましょう。ユーザーの市区町村と食べ物の種類のカスタム属性を動的に挿入し、restaurants
の値を変数city_food.restaurants
に割り当てることで、これを行うことができます。
コネクテッドコンテンツの呼び出しは次のようになります:
1
2
3
4
5
6
7
8
{% assign city_id = {{custom_attribute.${city_id} | default: ‘306’}} %}
{% assign food_type = {{custom_attribute.${food_type} | default: ‘471’}} %}
{%- connected_content https://developers.zomato.com/api/v2.1/search?entity_id={{city_id}}&entity_type=city&count=20&cuisines={{food_type}}&sort=rating:headers{“user-key”:“USER_KEY”} :save restaurants %}
{% assign restaurants = city_food.restaurants %}
{{city_food.restaurants[0]}}
応答をレストランの名前と評価のみに絞りたい場合は、次のように呼び出しの最後にフィルターを追加できます:
1
2
3
4
5
6
7
8
{% assign city_id = {{custom_attribute.${city_id} | default: ‘306’}} %}
{% assign food_type = {{custom_attribute.${food_type} | default: ‘471’}} %}
{%- connected_content https://developers.zomato.com/api/v2.1/search?entity_id={{city_id}}&entity_type=city&count=20&cuisines={{food_type}}&sort=rating:headers{“user-key”:”USER_KEY”} :save restaurants %}
{% assign restaurants = city_food.restaurants %}
{{city_food.restaurants[0].restaurant.name}}
{{city_food.restaurants[0].restaurant.user_rating.rating_text}}
最後に、レストランのおすすめを評価ごとにグループ化したいとしましょう。次のことを行ってください:
- 「優秀」、「非常に良い」、「良い」の評価カテゴリの空の配列を作成するには
assign
を使用します。 - リスト内の各レストランの評価を調べる
for
ループを追加します。- 評価が「優れている」場合は、レストラン名を
excellent_restaurants
文字列に追加し、各レストラン名を区切るために最後に*文字を追加します。 - 評価が「非常に良い」の場合は、レストラン名を
very_good_restaurants
文字列に追加し、最後に*文字を追加します。 - 評価が「良い」の場合、レストラン名を
good_restaurants
文字列に追加し、最後に*文字を追加します。
- 評価が「優れている」場合は、レストラン名を
- カテゴリごとのレストランの推薦数を4つに制限する。
これは最終的な呼び出しがどのように見えるかです:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{% assign city_id = {{custom_attribute.${city_id} | default: ‘306’}} %}
{% assign food_type = {{custom_attribute.${food_type} | default: ‘471’}} %}
{%- connected_content https://developers.zomato.com/api/v2.1/search?entity_id={{city_id}}&entity_type=city&count=20&cuisines={{food_type}}&sort=rating:headers{“user-key”:”USER_KEY”} :save restaurants %}
{% assign restaurants = city_food.restaurants %}
{% assign excellent_restaurants = “” %}
{% assign very_good_resturants = “” %}
{% assign good_restaurants = “” %}
{% for list in restaurants %}
{% if {{list.restaurant.user_rating.rating_text}} == `Excellent` %}
{% assign excellent_restaurants = excellent_restaurants | append: list.restaurant.name | append: `*` %}
{% elseif {{list.restaurant.user_rating.rating_text}} == `Very Good` %}
{% assign very_good_restaurants = very_good_restaurants | append: list.restaurant.name | append: `*` %}
{% elseif {{list.restaurant.user_rating.rating_text}} == `Good` %}
{% assign good_restaurants = good_restaurants | append: list.restaurant.name | append: `*` %}
{% endif %}
{% endfor %}
{% assign excellent_array = excellent_restaurants | split: `*` %}
{% assign very_good_array = very_good_restaurants | split: `*` %}
{% assign good_array = good_restaurants | split: `*` %}
Excellent places
{% for list in excellent_array %}
{{list}}
{% assign total_count = total_count | plus:1 %}
{% if total_count >= 4 %}
{% break %}
{% endif %}
{% endfor %}
Very good places
{% for list in very_good_array %}
{{list}}
{% assign total_count = total_count | plus:1 %}
{% if total_count >= 4 %}
{% break %}
{% endif %}
{% endfor %}
Good places
{% for list in good_array %}
{{list}}
{% assign total_count = total_count | plus:1 %}
{% if total_count >= 4 %}
{% break %}
{% endif %}
{% endfor %}
ユーザーのデバイスに応答が表示される例については、以下のスクリーンショットを参照してください。
考慮事項
どのレコメンデーションエンジンが利用可能なリソースとユースケースに適しているかを決定する際には、この考慮事項の表を参照してください。
考慮事項 | Liquid | カタログ CSV | カタログ API | コネクテッドコンテンツ |
---|---|---|---|---|
データポイントを消費しません | サポートされていません | サポートされている | サポートされている | サポートされている |
コードなしソリューション | サポートされていません | 事前生成されたLiquidがサポートされている場合 | サポートされていません | サポートされていません |
高度なLiquidが必要な場合が多い | サポートされている | サポートされていません | サポートされていません | サポートされている |
製品フィードのデータの更新 | サポートされていません | 推奨事項が頻繁に更新されない場合にサポートされます | 推奨事項が毎時更新される場合にサポートされます | サポートと推奨事項はリアルタイムまで更新されます |
Braze UI内で推奨事項を生成する | サポートされている | サポートされている | サポートされている | Braze 以外で生成された場合はサポートされません |
ホスティング、管理、トラブルシューティングの推奨データはありません | サポートされている | サポートされている | サポートされている | サポートされていません |