Regelbasierte Artikelempfehlungen erstellen
Erfahren Sie, wie Sie ein regelbasiertes Empfehlungssystem aus Artikeln in Ihrem Katalog erstellen.
Über regelbasierte Artikelempfehlungen
Ein regelbasiertes Empfehlungssystem verwendet Nutzerdaten und Produktinformationen, um Nutzer:innen relevante Artikel in Nachrichten vorzuschlagen. Es verwendet Liquid und entweder Braze-Kataloge oder Connected-Content, um Inhalte auf Grundlage von Nutzerverhalten und Attributen dynamisch zu personalisieren.

Regelbasierte Empfehlungen basieren auf einer festen Logik, die Sie manuell festlegen müssen. Das bedeutet, dass sich Ihre Empfehlungen nicht an die Kaufhistorie und den Geschmack einer Nutzerin oder eines Nutzers anpassen, sofern Sie die Logik nicht aktualisieren.
Um personalisierte KI-Empfehlungen zu erstellen, die sich automatisch an den Verlauf von Nutzer:innen anpassen, sehen Sie sich KI-Artikelempfehlungen an.
Optionen des Empfehlungssystems
Bei der Entscheidung, welches Empfehlungssystem zu Ihren verfügbaren Ressourcen und Anwendungsfällen passt, orientieren Sie sich an dieser Tabelle:
| Empfehlungssystem | Keine Datenpunkte protokolliert | No-Code-Lösung | Kein fortgeschrittenes Liquid | Aktualisiert automatisch den Produkt-Feed | Generiert mit der Braze-UI | Kein Daten-Hosting und keine Fehlerbehebung |
|---|---|---|---|---|---|---|
| Kataloge CSV | ✔ | Ja, wenn Sie vorgeneriertes Liquid verwenden. | ✔ | Ja, wenn die Empfehlungen nicht häufig aktualisiert werden. | ✔ | ✔ |
| Kataloge API | ✔ | ✔ | Ja, wenn die Empfehlungen stündlich aktualisiert werden. | ✔ | ✔ | |
| Connected-Content | ✔ | ✔ (Empfehlungen werden in Realtime aktualisiert) |
Ja, wenn sie außerhalb von Braze erstellt wurden. | |||
| Liquid | ✔ | ✔ |
Erstellen eines Empfehlungssystems
Erstellen Sie Ihr Empfehlungssystem entweder mit einem Katalog oder mit Connected-Content:
So erstellen Sie Ihr Empfehlungssystem mithilfe eines Katalogs:
- Erstellen Sie einen Katalog mit Produkten.
- Fügen Sie für jedes Produkt eine Liste empfohlener Produkte als String hinzu, der durch ein Trennzeichen (z. B. ein Pipe-Zeichen
|) getrennt ist, in einer Spalte mit dem Namen „product_recommendations“. - Übergeben Sie dem Katalog die Produkt-ID, für die Sie Empfehlungen finden möchten.
- Rufen Sie den Wert
product_recommendationsfür diesen Katalogartikel ab und teilen Sie ihn mit einem Liquid-Split-Filter am Trennzeichen auf. - Geben Sie eine oder mehrere dieser IDs an den Katalog zurück, um die weiteren Produktdetails abzurufen.
Beispiel
Nehmen wir an, Sie haben eine App für gesunde Ernährung und möchten eine Content-Card-Kampagne erstellen, die verschiedene Rezepte versendet, je nachdem, wie lange Nutzer:innen bereits bei Ihrer App angemeldet sind. Erstellen Sie zunächst einen Katalog und laden Sie ihn über eine CSV-Datei hoch, die die folgenden Informationen enthält:
| Feld | Beschreibung |
|---|---|
| id | Eine eindeutige Zahl, die mit der Anzahl der Tage seit der Registrierung bei Ihrer App korreliert. Zum Beispiel entspricht 3 drei Tagen. |
| type | Die Rezeptkategorie, wie comfort, fresh und andere. |
| title | Der Titel der Content-Card, die für jede ID verschickt wird, z. B. „Bereiten Sie diese Woche das Mittagessen vor“ oder „Lassen Sie uns Tacos machen“. |
| link | Der Link zum Rezeptartikel. |
| image_url | Das Bild, das dem Rezept entspricht. |
Nachdem der Katalog in Braze hochgeladen wurde, bestätigen Sie die Richtigkeit der importierten Informationen, indem Sie Ihren Katalog auf der Katalogseite auswählen und den Tab Vorschau öffnen. Eine ausgewählte Anzahl von Artikeln wird in der Vorschau angezeigt und kann zufällig angeordnet sein, aber das hat keinen Einfluss auf die Ausgabe des Empfehlungssystems.
Erstellen Sie mit dem vorhandenen Katalog eine Content-Card-Kampagne. Geben Sie im Nachrichten-Editor die Liquid-Logik ein, um zu bestimmen, welche Nutzer:innen die Campaign erhalten sollen und welches Rezept und welches Bild angezeigt werden soll. In diesem Anwendungsfall ruft Braze das start_date (oder Registrierungsdatum) der Nutzerin oder des Nutzers ab und vergleicht es mit dem aktuellen Datum. Die Differenz in Tagen bestimmt, welche Content-Card gesendet wird.
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
{% 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 }}
Zum Beispiel:

Geben Sie im Abschnitt On click behavior die Liquid-Logik ein, wohin Nutzer:innen weitergeleitet werden sollen, wenn sie auf iOS-, Android- und Internet-Geräten auf die Content-Card klicken.
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 }}
Zum Beispiel:

Gehen Sie zum Tab Test und wählen Sie Custom user unter Preview message as user. Geben Sie ein Datum in das Feld Custom attribute ein, um eine Vorschau der Content-Card zu erhalten, die an Nutzer:innen gesendet wird, die sich an diesem Datum registriert haben.

Um Ihr Empfehlungssystem mit Connected-Content zu erstellen, erstellen Sie zunächst einen neuen Endpunkt mit einer der folgenden Methoden:
| Option | Beschreibung |
|---|---|
| Tabellenkalkulation konvertieren | Konvertieren Sie eine Tabellenkalkulation in einen JSON-API-Endpunkt, indem Sie einen Dienst wie SheetDP verwenden, und notieren Sie sich die API-URL, die dadurch erzeugt wird. |
| Einen angepassten Endpunkt erstellen | Erstellen, hosten und pflegen Sie einen speziell entwickelten internen Endpunkt. |
| Ein Drittanbieter-System verwenden | Verwenden Sie ein Empfehlungssystem eines Drittanbieters, z. B. eines unserer Technologie-Partner, darunter Amazon Personalise, Certona, Dynamic Yield und andere. |
Verwenden Sie als Nächstes Liquid in Ihrer Nachricht, die Ihren Endpunkt aufruft, um einen angepassten Attributwert mit dem Profil von Nutzer:innen abzugleichen und die entsprechende Empfehlung abzurufen.
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 %}
Ersetzen Sie Folgendes:
| Attribut | Ersetzung |
|---|---|
YOUR_API_URL |
Ersetzen Sie durch die tatsächliche URL Ihrer API. |
RECOMMENDED_ITEM_IDS |
Ersetzen Sie durch den tatsächlichen Namen Ihres angepassten Attributs, das die IDs der empfohlenen Artikel enthält. Dieses Attribut wird als eine durch Semikolon getrennte Zeichenkette von IDs erwartet. |
ITEM_ID |
Ersetzen Sie durch den tatsächlichen Namen des Attributs in Ihrer API-Antwort, das der Artikel-ID entspricht. |

Dies ist ein einfaches Beispiel, das Sie je nach Ihren spezifischen Anforderungen und Ihrer Datenstruktur möglicherweise weiter anpassen müssen. Ausführlichere Anleitungen finden Sie in der Liquid-Dokumentation oder wenden Sie sich an eine Entwicklerin oder einen Entwickler.
Beispiel
Nehmen wir an, Sie möchten Restaurantempfehlungen aus der Zomato-Restaurants-Datenbank abrufen und das Ergebnis als lokale Variable namens restaurants speichern. Sie können den folgenden Connected-Content-Aufruf tätigen:
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]}}
Nehmen wir als Nächstes an, Sie möchten Restaurantempfehlungen auf Grundlage des Orts und der Essensvorlieben von Nutzer:innen abrufen. Sie können dies tun, indem Sie die angepassten Attribute für den Ort und die Essensart dynamisch am Anfang des Aufrufs einfügen und dann den Wert von restaurants der Variablen city_food.restaurants zuweisen.
Der Connected-Content-Aufruf würde wie folgt aussehen:
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]}}
Wenn Sie die Antwort so anpassen möchten, dass nur der Name und die Bewertung des Restaurants abgerufen werden, können Sie am Ende des Aufrufs Filter hinzufügen, etwa so:
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}}
Nehmen wir abschließend an, Sie möchten die Restaurantempfehlungen nach Bewertung gruppieren. Gehen Sie wie folgt vor:
- Verwenden Sie
assign, um leere Arrays für die Bewertungskategorien „Excellent“, „Very Good“ und „Good“ zu erstellen. - Fügen Sie eine
for-Schleife hinzu, die die Bewertung jedes Restaurants in der Liste untersucht.- Wenn eine Bewertung „Excellent“ lautet, fügen Sie den Restaurantnamen an den String
excellent_restaurantsan und fügen Sie dann am Ende ein *-Zeichen hinzu, um die einzelnen Restaurantnamen voneinander zu trennen. - Wenn eine Bewertung „Very Good“ lautet, fügen Sie den Restaurantnamen an den String
very_good_restaurantsan und fügen Sie dann am Ende ein *-Zeichen hinzu. - Wenn eine Bewertung „Good“ lautet, fügen Sie den Restaurantnamen an den String
good_restaurantsan und fügen Sie dann am Ende ein *-Zeichen hinzu.
- Wenn eine Bewertung „Excellent“ lautet, fügen Sie den Restaurantnamen an den String
- Begrenzen Sie die Anzahl der zurückgegebenen Restaurantempfehlungen auf vier pro Kategorie.
So würde der endgültige Aufruf aussehen:
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: `*` %}
{% elsif {{list.restaurant.user_rating.rating_text}} == `Very Good` %}
{% assign very_good_restaurants = very_good_restaurants | append: list.restaurant.name | append: `*` %}
{% elsif {{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 %}
Im folgenden Screenshot sehen Sie ein Beispiel dafür, wie die Antwort auf dem Gerät von Nutzer:innen angezeigt wird.
