Iteration über kontextuelle Daten personalization-contexts
Erfahren Sie, wie Sie mit der Handlebars-Iterationssyntax dynamische Listen von Daten aus verschiedenen Quellen in Ihren Nachrichten anzeigen können, einschließlich Ereignissen, benutzerdefinierten Aktionsantworten und anderen kontextuellen Daten.
Überblick overview
Journey Optimizer bietet während der Nachrichtenpersonalisierung“ Zugriff auf kontextuelle Daten aus mehreren . Sie können Arrays aus diesen Quellen mithilfe der Handlebars-Syntax in nativen Kanälen (E-Mail, Push, SMS) durchlaufen, um dynamische Inhalte wie Produktlisten, Empfehlungen oder andere sich wiederholende Elemente anzuzeigen.
Verfügbare Kontextquellen:
- Ereignisse: Daten aus Journey-Ereignissen (Geschäftsereignisse, unitäre Ereignisse)
- Benutzerdefinierte Aktionsantworten: Daten, die von externen API-Aufrufen über benutzerdefinierte Aktionen zurückgegeben werden
- Datensatzsuche: Angereicherte Daten, die aus Adobe Experience Platform-Datensätzen abgerufen wurden
- Technische Eigenschaften: Journey von Metadaten wie Journey-ID und zusätzliche Kennungen
- Journey-Kontext: Andere Journey-bezogene Daten, die während der Ausführung zugänglich sind
In diesem Handbuch erfahren Sie, wie Sie die Arrays aus den einzelnen Quellen in Ihren Nachrichten durchlaufen und wie Sie beim Konfigurieren von Journey-Aktivitäten mit Arrays arbeiten. Beginnen Sie mit Handlebars-Iterationssyntax um die Grundlagen der Nachrichtenpersonalisierung zu verstehen, oder gehen Sie zu Arbeiten mit Arrays in Journey-Ausdrücken um zu erfahren, wie Sie Array-Daten an benutzerdefinierte Aktionen und Datensatzsuchen übergeben.
Handlebars-Iterationssyntax syntax
Handlebars bietet die {{#each}} Helper zum Iterieren über Arrays. Die grundlegende Syntax lautet:
Wichtigste Punkte:
- Ersetzen Sie
arrayPathdurch den Pfad zu Ihren Array-Daten. - Ersetzen Sie
itemdurch einen beliebigen Variablennamen (z. B.product,response,element) - Zugreifen auf Eigenschaften jedes Elements über
{{item.propertyName}} - Sie können mehrere
{{#each}}für Arrays mit mehreren Ebenen verschachteln
Iteration der Ereignisdaten event-data
Ereignisdaten sind verfügbar, wenn Ihr Journey durch ein „Ereignis ausgelöst . Dies ist nützlich, um Daten anzuzeigen, die zum Zeitpunkt des Starts der Journey erfasst wurden, wie z. B. den Inhalt des Warenkorbs, Bestellelemente oder Formularübermittlungen.
Kontextpfad für Ereignisse
<event_ID>: Die eindeutige ID Ihres Ereignisses, wie auf der Journey konfiguriert<fieldPath>: Der Pfad zum Feld oder Array in Ihrem Ereignisschema
Beispiel: Artikel aus einem Warenkorb-Ereignis
Wenn Ihr Ereignisschema ein productListItems-Array enthält (XDM-Format), können Sie den Inhalt des Warenkorbs wie im folgenden Beispiel beschrieben anzeigen.
| code language-handlebars |
|---|
|
Beispiel: Verschachtelte Arrays in Ereignissen
Verwenden Sie für verschachtelte Strukturen verschachtelte {{#each}}.
| code language-handlebars |
|---|
|
Erfahren Sie mehr über die Verschachtelung in Best Practices.
Iteration über benutzerdefinierte Aktionsantworten custom-action-responses
Benutzerdefinierte Aktion Antworten enthalten Daten, die von externen API-Aufrufen zurückgegeben werden. Dies ist nützlich für die Anzeige von Echtzeitinformationen aus Ihren Systemen, z. B. Treuepunkte, Produktempfehlungen, Bestandsstatus oder personalisierte Angebote.
Kontextpfad für benutzerdefinierte Aktionen
<actionName>: Der Name Ihrer benutzerdefinierten Aktion wie auf der Journey konfiguriert<fieldPath>: Der Pfad zum Feld oder Array in der Antwort-Payload
Beispiel: Produktempfehlungen von einer API
Um eine Reihe von Produktempfehlungen zu durchlaufen, die von einer benutzerdefinierten Aktion zurückgegeben wurden, und sie als individuelle Karten in Ihrer Nachricht anzuzeigen, sehen Sie sich das folgende Beispiel an.
API-Antwort:
| code language-json |
|---|
|
Nachrichtenpersonalisierung:
| code language-handlebars |
|---|
|
Beispiel: Verschachtelte Arrays aus benutzerdefinierten Aktionen
Um über eine benutzerdefinierte Aktionsantwort zu iterieren, die verschachtelte Arrays enthält (ein Array von Objekten, wobei jedes Objekt ein anderes Array enthält), sehen Sie sich das folgende Beispiel an. Dies zeigt die Verwendung verschachtelter {{#each}}-Schleifen für den Zugriff auf mehrere Datenebenen.
API-Antwort:
| code language-json |
|---|
|
Nachrichtenpersonalisierung:
| code language-handlebars |
|---|
|
Informationen zu komplexeren Verschachtelungsmustern finden Sie unter Best Practices.
Beispiel: Vorteile der Treuestufe
Um dynamische Vorteile basierend auf dem Treuestatus anzuzeigen, sehen Sie sich das folgende Beispiel an.
API-Antwort:
| code language-json |
|---|
|
Nachrichtenpersonalisierung:
| code language-handlebars |
|---|
|
Iteration der Ergebnisse der Datensatzsuche dataset-lookup
Mit Aktivität „Datensatzsuche können Sie während des Journey- Daten aus Adobe Experience Platform-Datensätzen abrufen. Die angereicherten Daten werden als Array gespeichert und können in Ihren Nachrichten iteriert werden.
Weitere Informationen zum Konfigurieren der Aktivität „Datensatzsuche“ finden Sie diesem Abschnitt. Die Datensatzsuche ist besonders leistungsstark in Kombination mit Ereignisdaten. Ein praktischer Anwendungsfall finden Sie unter Beispiel: angereicherte Ereignisdaten mit Datensatzsuche .
Kontextpfad für die Datensatzsuche
<activityID>: Die eindeutige ID Ihrer Aktivität „Datensatzsuche“entities: Das Array der angereicherten Daten, die aus dem Datensatz abgerufen werden
Beispiel: Produktdetails aus einem Datensatz
Wenn Sie eine Aktivität zur Datensatzsuche verwenden, um Produktinformationen basierend auf SKUs abzurufen, finden Sie unten ein Beispiel.
Konfiguration der Datensatzsuche:
- Lookup keys:
list(@event{purchase_event.products.sku}) - Zurückzugebende Felder:
["SKU", "category", "price", "name"]
Nachrichtenpersonalisierung:
| code language-handlebars |
|---|
|
Beispiel: Gefilterte Iteration mit Datensatzdaten
Verwenden Sie bedingte {{#if}}-Anweisungen in Ihrer {{#each}}-Schleife, um die Suchergebnisse des Datensatzes während der Iteration zu filtern und nur Elemente anzuzeigen, die bestimmten Kriterien entsprechen (z. B. Produkte aus einer bestimmten Kategorie). Siehe folgendes Beispiel.
| code language-handlebars |
|---|
|
Weitere Informationen zur bedingten Filterung finden Sie unter Best Practices.
Beispiel: Gesamtwerte aus der Datensatzsuche berechnen
Informationen zum Berechnen und Anzeigen von Gesamtsummen bei der Iteration durch die Ergebnisse der Datensatzsuche finden Sie im folgenden Beispiel.
| code language-handlebars |
|---|
|
Verwenden technischer Journey-Eigenschaften technical-properties
Technische Journey-Eigenschaften ermöglichen den Zugriff auf Metadaten über die Journey-Ausführung, z. B. die Journey-ID und zusätzliche Kennungen. Diese können in Kombination mit Iterationsmustern nützlich sein, insbesondere zum Filtern von Arrays basierend auf bestimmten Journey-Instanzen.
Verfügbare technische Eigenschaften
Beispiel: Filtern von Array-Elementen mithilfe einer zusätzlichen Kennung
Bei Verwendung zusätzlicher IDs in ereignisgesteuerten Journey mit Arrays können Sie so filtern, dass nur das für die aktuelle Journey-Instanz relevante Element angezeigt wird. Weitere Informationen zu zusätzlichen Kennungen finden Sie in diesem Handbuch.
Szenario: Bei mehreren Buchungen wird eine Journey ausgelöst, Sie möchten jedoch nur Informationen zu der spezifischen Buchung anzeigen (identifiziert durch eine zusätzliche ID), die diese Journey-Instanz ausgelöst hat.
| code language-handlebars |
|---|
|
Beispiel: Journey-ID für Tracking einschließen
Um die Journey-ID zu Tracking-Zwecken in Ihre Nachricht aufzunehmen, sehen Sie sich das folgende Beispiel an.
| code language-handlebars |
|---|
|
Kombinieren mehrerer Kontextquellen combine-sources
Sie können Daten aus verschiedenen Quellen in derselben Nachricht kombinieren, um umfassende, personalisierte Erlebnisse zu schaffen. Dieser Abschnitt zeigt praktische Beispiele für die gemeinsame Verwendung mehrerer Kontextquellen.
Kontextquellen, die Sie kombinieren können:
Beispiel: Artikel im Warenkorb mit Echtzeit-Inventar
Um Ereignisdaten (Warenkorbinhalte) mit benutzerdefinierten Aktionsdaten (Inventarstatus) zu kombinieren, sehen Sie sich das folgende Beispiel an.
| code language-handlebars |
|---|
|
Beispiel: Ereignisdaten angereichert mit Datensatzsuche
Um Ereignis-SKUs mit detaillierten Produktinformationen aus einer Datensatzsuche zu kombinieren, sehen Sie sich das folgende Beispiel an.
| code language-handlebars |
|---|
|
Beispiel: Kombinieren mehrerer Quellen mit technischen Eigenschaften
Um mehrere Kontextquellen (Profildaten, Ereignisdaten, benutzerdefinierte Aktionen und technische Eigenschaften) in einer einzigen Nachricht zu kombinieren, sehen Sie sich das folgende Beispiel an.
| code language-handlebars |
|---|
|
Andere Kontexttypen other-contexts
Während sich dieses Handbuch auf die Iteration über Arrays konzentriert, stehen andere Kontexttypen für die Personalisierung zur Verfügung, die in der Regel keine Iteration erfordert. Auf diese wird direkt zugegriffen, anstatt sie in Schleifen zu überschreiben:
- Profilattribute (
profile.*): Einzelne Profilfelder aus Adobe Experience Platform - Audiences (
inAudience()): Prüfungen der Zielgruppenzugehörigkeit - Angebotsentscheidungen: Entscheidungs-Management-Angebote
- Zielattribute (nur orchestrierte Kampagnen): Auf der Kampagnen-Arbeitsfläche berechnete Attribute
- Token (
context.token): Sitzungs- oder Authentifizierungs-Token
Die vollständige Personalisierungssyntax und Beispiele, die diese Quellen verwenden, finden Sie unter:
Arbeiten mit Arrays in Journey-Ausdrücken arrays-in-journeys
Während sich die vorherigen Abschnitte auf die Iteration über Arrays bei der Nachrichtenpersonalisierung mithilfe von Handlebars konzentrieren, können Sie beim Konfigurieren von Journey-Aktivitäten auch mit Arrays arbeiten. In diesem Abschnitt wird erläutert, wie Sie Array-Daten aus Ereignissen in Journey-Ausdrücken verwenden, insbesondere wenn Sie Daten an benutzerdefinierte Aktionen übergeben oder Arrays mit Datensatzsuchen verwenden.
first, all und serializeList. Im Nachrichteninhalt verwenden Sie die Handlebars-Syntax mit {{#each}}.Übergeben von Array-Werten an benutzerdefinierte Aktionsparameter arrays-to-custom-actions
Beim Konfigurieren benutzerdefinierter Aktionen müssen Sie häufig Werte aus Ereignis-Arrays extrahieren und als Parameter übergeben. In diesem Abschnitt werden gängige Muster behandelt.
Weitere Informationen zum Übergeben von Sammlungen in Übergeben von Sammlungen in benutzerdefinierte Aktionsparameter.
Extrahieren eines einzelnen Werts aus einem Array
Anwendungsfall: Abrufen eines bestimmten Felds aus einem Ereignis-Array, das als Abfrageparameter in einer GET-Anfrage übergeben wird.
Beispielszenario: Extrahieren Sie die erste SKU mit einem Preis größer als 0 aus einer Produktliste.
Beispiel für ein:
| code language-json |
|---|
|
Konfiguration benutzerdefinierter Aktionen:
- Konfigurieren Sie in Ihrer benutzerdefinierten Aktion einen Abfrageparameter (z. B.
sku) vom Typstring - Als
Variablemarkieren, um dynamische Werte zuzulassen
Journey-Ausdruck im Aktionsparameter:
| code language-javascript |
|---|
|
Erläuterung:
@event{YourEventName}: Verweist auf Ihr Journey-Ereignis.first(currentEventField.condition): Gibt das erste Array-Element zurück, das der Bedingung entsprichtcurrentEventField: Stellt jedes Element im Ereignis-Array dar, während Sie es durchlaufen.SKU: Extrahiert das SKU-Feld aus dem zugeordneten Element- Ergebnis:
"SKU-1"(eine für den Aktionsparameter geeignete Zeichenfolge)
Erfahren Sie mehr über die first in Funktionen zur Sammlungsverwaltung.
Erstellen einer Werteliste aus einem Array
Anwendungsfall: Erstellen einer kommagetrennten Liste von IDs, die als Abfrageparameter übergeben werden (z. B. /products?ids=sku1,sku2,sku3).
Konfiguration benutzerdefinierter Aktionen:
- Konfigurieren Sie einen Abfrageparameter (z. B.
ids) vom Typstring - Als
Variablemarkieren
Journey-Ausdruck:
| code language-javascript |
|---|
|
Erläuterung:
-
.all(currentEventField.condition): Gibt alle Array-Elemente zurück, die der Bedingung entsprechen (gibt eine Liste zurück) -
currentEventField: Stellt jedes Element im Ereignis-Array dar, während Sie es durchlaufen -
.SKU: Projekte in der Liste, die nur SKU-Werte enthalten sollen -
serializeList(list, delimiter, addQuotes): Fügt die Liste zu einer Zeichenfolge zusammen",": Komma als Trennzeichen verwendentrue: Hinzufügen von Anführungszeichen um jedes Zeichenfolgenelement
-
Ergebnis:
"SKU-1,SKU-3"(für einen Abfrageparameter geeignet)
Weitere Informationen über:
Die Verarbeitung von Sammlungen für benutzerdefinierte Aktionen wird unter Übergeben von Sammlungen an benutzerdefinierte Aktionsparameter beschrieben.
Übergeben eines Arrays von Objekten an eine benutzerdefinierte Aktion
Anwendungsfall: Senden eines vollständigen Arrays von Objekten in einem Anfrageinhalt (für POST oder GET mit Hauptteil).
Beispiel für einen Anfragetext:
| code language-json |
|---|
|
Konfiguration benutzerdefinierter Aktionen:
- Definieren Sie im Anfragetext
productsals TyplistObject - Als
Variablemarkieren - Definieren der Objektfelder:
id,name,price,color(jedes wird zuordnungsfähig)
Journey-Arbeitsfläche-Konfiguration:
-
Legen Sie im erweiterten Modus den Sammlungsausdruck fest:
code language-javascript @event{YourEventName.commerce.productListItems.all(currentEventField.priceTotal > 0)} -
In der Benutzeroberfläche für die Sammlungszuordnung:
id→productListItems.SKUzuordnenname→productListItems.namezuordnenprice→productListItems.priceTotalzuordnencolor→productListItems.colorzuordnen
Journey Optimizer erstellt das Array von Objekten, die Ihrer Aktions-Payload-Struktur entsprechen.
| note note |
|---|
| NOTE |
Verwenden Sie beim Arbeiten mit Ereignis-Arrays currentEventField , um auf jedes Element zu verweisen. Verwenden Sie für Datenquellensammlungen (Adobe Experience Platform) currentDataPackField. Verwenden Sie für Sammlungen von benutzerdefinierten Aktionsantworten currentActionField. |
Weitere Informationen finden Sie unter Übergeben von Sammlungen an benutzerdefinierte Aktionsparameter.
Verwenden von Arrays mit Datensatzabfragen arrays-with-dataset-lookup
Bei Verwendung der Aktivität Datensatzsuche können Sie ein Array von Werten als Lookup-Schlüssel übergeben, um angereicherte Daten abzurufen.
Beispiel: Produktdetails für alle SKUs in einem Ereignis-Array nachschlagen.
Konfiguration der Datensatzsuche:
Verwenden Sie im Feld Suchschlüssel list() , um einen Array-Pfad in eine Liste zu konvertieren:
| code language-javascript |
|---|
|
Dadurch wird eine Liste aller SKU-Werte erstellt, die im Datensatz nachgeschlagen werden sollen. Die Ergebnisse sind als Array context.journey.datasetLookup.<activityID>.entities verfügbar, über das Sie in Ihrer Nachricht iterieren können (siehe Iterieren der Ergebnisse der Datensatzsuche).
Einschränkungen und Muster array-limitations
Beachten Sie diese Einschränkungen beim Arbeiten mit Arrays in Journey:
Keine dynamische Schleife über Arrays im Journey-Fluss
Journey können keine dynamischen Schleifen erstellen, bei denen ein Aktionsknoten mehrmals für jedes Element in einem Array ausgeführt wird. Dadurch sollen Ausreißer-Leistungsprobleme verhindert werden.
Was Sie nicht tun können:
- Eine benutzerdefinierte Aktion einmal pro Array-Element dynamisch ausführen
- Erstellen mehrerer Journey-Verzweigungen basierend auf der Array-Länge
Empfohlene Muster stattdessen:
-
Alle Elemente gleichzeitig senden: Übergeben Sie das gesamte Array oder eine serialisierte Liste an eine einzelne benutzerdefinierte Aktion, die alle Elemente verarbeitet. Siehe Erstellen einer Werteliste aus einem Array.
-
Externe Aggregation verwenden: Lassen Sie Ihre externe API mehrere IDs akzeptieren und kombinierte Ergebnisse in einem einzigen Aufruf zurückgeben.
-
Vorberechnen in AEP: Verwenden Sie berechnete Attribute um Werte aus Arrays auf Profilebene vorab zu berechnen.
-
Einzelwertextraktion: Wenn Sie nur einen Wert benötigen, extrahieren Sie ihn mithilfe von
firstoderhead. Siehe Extrahieren eines einzelnen Werts aus einem Array.
Weitere Informationen finden Sie unter Leitplanken und Einschränkungen.
Überlegungen zur Array-Größe
Große Arrays können die Journey-Leistung beeinträchtigen:
- Ereignis-Arrays: Ereignis-Payloads unter insgesamt 50 KB halten
- Benutzerdefinierte Aktionsantworten: Antwort-Payloads sollten unter 100 KB sein
- Ergebnisse der Datensatzsuche: Anzahl der Lookup-Schlüssel und zurückgegebenen Entitäten begrenzen
Vollständiges Beispiel: Ereignis-Array für benutzerdefinierte Aktion complete-example
Im Folgenden finden Sie einen vollständigen Workflow, der zeigt, wie ein Ereignis-Array mit einer benutzerdefinierten Aktion verwendet wird.
Szenario: Wenn ein Benutzer seinen Warenkorb verlässt, senden Sie Warenkorbdaten an eine externe Recommendations-API, um personalisierte Vorschläge zu erhalten, und zeigen Sie diese dann in einer E-Mail an.
Schritt 1: Konfigurieren der benutzerdefinierten Aktion
Erstellen Sie eine benutzerdefinierte Aktion „GetCartRecommendations“:
- Methode: POST
- URL:
https://api.example.com/recommendations - Anfragetext:
| code language-json |
|---|
|
cartItemsals TyplistObjectundVariablemarkieren- Felder definieren:
sku(Zeichenfolge),price(Zahl),quantity(Ganzzahl)
Weitere Informationen finden Sie unter Konfigurieren einer benutzerdefinierten Aktion.
Schritt 2: Antwort-Payload konfigurieren
Konfigurieren Sie in der benutzerdefinierten Aktion die Antwort:
| code language-json |
|---|
|
Weitere Informationen finden Sie unter Verwenden von API-Aufrufantworten.
Schritt 3: Verdrahten Sie die Aktion in der Journey
-
Fügen Sie nach dem Warenkorbabbruch-Ereignis die benutzerdefinierte Aktion hinzu
-
Im erweiterten Modus für die
cartItems:code language-javascript @event{cartAbandonment.commerce.productListItems.all(currentEventField.quantity > 0)} -
Zuordnen der Sammlungsfelder:
sku→productListItems.SKUprice→productListItems.priceTotalquantity→productListItems.quantity
Schritt 4: Antwort in E-Mail verwenden
Iterieren Sie in Ihrem E-Mail-Inhalt über die Empfehlungen:
| code language-handlebars |
|---|
|
Schritt 5: Testen Sie Ihre Konfiguration
Bevor Sie eine Live-Journey ausführen, testen Sie die benutzerdefinierte Aktion mit der Funktion „Testanfrage senden“ in der Aktionskonfiguration, um die erstellte Anfrage und die Werte zu überprüfen.
- Journey-Testmodus verwenden
- Trigger mit Beispielereignisdaten, einschließlich eines
productListItemsArrays - Überprüfen, ob die benutzerdefinierte Aktion die richtige Array-Struktur erhält
- Überprüfen Sie die Aktionstestprotokolle
- Vorschau der E-Mail zur Bestätigung, dass beide Arrays korrekt angezeigt werden
Weitere Informationen finden Sie unter Fehlerbehebung bei benutzerdefinierten Aktionen.
Best Practices best-practices
Befolgen Sie diese Best Practices bei der Iteration über kontextuelle Daten, um eine verwaltbare, leistungsstarke Personalisierung zu erstellen.
Verwenden beschreibender Variablennamen
Wählen Sie Variablennamen, die klar angeben, worüber Sie iterieren. Dadurch wird der Code besser lesbar und leichter zu verwalten. Weitere Informationen über Personalisierungssyntax:
| code language-handlebars |
|---|
|
Ausdrucksfragmente in Schleifen
Wenn Sie Ausdrucksfragmente in {{#each}} Schleifen verwenden, beachten Sie, dass Sie keine Variablen mit Schleifenbereich als Fragmentparameter übergeben können. Fragmente können jedoch auf globale Variablen zugreifen, die im Nachrichteninhalt außerhalb des Fragments definiert sind.
Unterstütztes Muster - Globale Variablen verwenden:
| code language-handlebars |
|---|
|
Das Fragment kann auf globalDiscount verweisen, da es global in der Nachricht definiert ist.
Nicht unterstützt - Übergeben von Schleifenvariablen:
| code language-handlebars |
|---|
|
Problemumgehung: Fügen Sie die Personalisierungslogik direkt in Ihre Schleife ein, anstatt ein Fragment zu verwenden, oder rufen Sie das Fragment außerhalb der Schleife auf.
Erfahren Sie mehr über Verwendung von Ausdrucksfragmenten in Schleifen einschließlich detaillierter Beispiele und zusätzlicher Problemumgehungen.
Verarbeiten leerer Arrays
Verwenden Sie die {{else}}-Klausel, um Fallback-Inhalte bereitzustellen, wenn ein Array leer ist. Weitere Informationen zu Hilfsfunktionen:
| code language-handlebars |
|---|
|
Kombinieren mit bedingten Helfern
Verwenden Sie {{#if}} in Schleifen für bedingte Inhalte. Weitere Informationen zu bedingten Regeln und Beispiele finden Sie den Abschnitten Benutzerdefinierte und Datensatzsuche.
| code language-handlebars |
|---|
|
Iteration auf Leistung begrenzen
Bei großen Arrays sollten Sie die Anzahl der Iterationen einschränken:
| code language-handlebars |
|---|
|
Zugriff auf Array-Metadaten
Handlebars bieten spezielle Variablen in Schleifen, die bei erweiterten Iterationsmustern helfen:
@index: Aktueller Iterationsindex (0-basiert)@first: True für die erste Iteration@last: True für die letzte Iteration
| code language-handlebars |
|---|
|
@index, @first, @last) sind nur in {{#each}} Schleifen der Nachrichtenpersonalisierung verfügbar. Verwenden Sie zum Arbeiten mit Arrays in Journey-Ausdrücken (z. B. Abrufen des ersten Elements aus einem Array vor der Übergabe an eine benutzerdefinierte Aktion) Array-Funktionen wie head, first oder all. Weitere finden Sie unter „Arbeiten mit Arrays Journey-Ausdrücken“.Fehlerbehebung troubleshooting
Haben Sie Probleme mit der Iteration? In diesem Abschnitt werden gängige Probleme und Lösungen behandelt.
Array wird nicht angezeigt
Problem: Ihre Array-Iteration zeigt keine Inhalte an.
Mögliche Ursachen und:
-
Falscher Pfad: Überprüfen Sie den genauen Pfad zu Ihrem Array basierend auf der Kontextquelle:
- Für Ereignisse:
context.journey.events.<event_ID>.<fieldPath> - Für benutzerdefinierte Aktionen:
context.journey.actions.<actionName>.<fieldPath> - Für Datensatzsuche:
context.journey.datasetLookup.<activityID>.entities
- Für Ereignisse:
-
Array ist leer: Fügen Sie eine
{{else}}hinzu, um zu überprüfen, ob das Array keine Daten enthält. Beispiele finden unter Practices . -
Daten noch nicht verfügbar: Stellen Sie sicher, dass die benutzerdefinierte Aktion, das Ereignis oder die Datensatz-Suchaktivität vor der Nachrichtenaktivität in Ihrem Journey-Fluss ausgeführt wurde.
Syntaxfehler
Problem: Die Ausdrucksvalidierung schlägt fehl oder die Nachricht wird nicht gerendert.
Häufige:
- Fehlende schließende Tags: Jedes
{{#each}}muss über ein{{/each}}verfügen. Überprüfen Sie Handlebars-Iterationssyntax auf die richtige Struktur. - Falscher Variablenname: Stellen Sie sicher, dass der Variablenname im gesamten Block konsistent verwendet wird. Siehe Best Practices für Namenskonventionen.
- Falsche Pfadtrennzeichen: Verwenden Sie Punkte (
.) anstelle von Schrägstrichen oder anderen Zeichen
Ausdrucksfragmente funktionieren nicht in Schleifen
Problem: Ein Ausdrucksfragment zeigt nicht den erwarteten Inhalt an, wenn es in einer {{#each}} verwendet wird, oder zeigt eine leere/unerwartete Ausgabe an.
Mögliche Ursachen und:
-
Versuch, Schleifenvariablen als Parameter zu übergeben: Ausdrucksfragmente können keine Variablen mit Schleifenumfang (wie das aktuelle Iterationselement) als Parameter empfangen. Dies ist eine bekannte Einschränkung.
Lösung: Verwenden Sie eine der folgenden Problemumgehungen:
- Definieren Sie globale Variablen in Ihrer Nachricht, auf die das Fragment zugreifen kann
- Personalisierungslogik direkt in die Schleife einbinden, anstatt ein Fragment zu verwenden
- Rufen Sie das Fragment außerhalb der Schleife auf, wenn es keine schleifenspezifischen Daten benötigt
-
Fragment erwartet einen Parameter, der nicht verfügbar ist: Wenn Ihr Fragment für den Empfang bestimmter Eingabeparameter konzipiert wurde, funktioniert es nicht ordnungsgemäß, wenn diese Parameter nicht aus einer Schleife heraus übergeben werden können.
Lösung: Strukturieren Sie Ihren Ansatz so um, dass globale Variablen verwendet werden, auf die das Fragment zugreifen kann. Beispiele finden unter „Best Practices - Ausdrucksfragmente in ".
-
Falscher Variablenbereich: Das Fragment versucht möglicherweise, auf eine Variable zu verweisen, die nur innerhalb des Schleifenbereichs vorhanden ist.
Lösung: Definieren Sie alle Variablen, die das Fragment benötigt, auf Nachrichtenebene (außerhalb der Schleife), damit sie global zugänglich sind.
Erfahren Sie mehr über Verwendung von Ausdrucksfragmenten in Schleifen einschließlich detaillierter Erläuterungen, Beispiele und empfohlener Muster.
Testen von Iterationen
Verwenden Sie den Journey-Testmodus um Ihre Iterationen zu überprüfen. Dies ist besonders wichtig bei der Verwendung von benutzerdefinierten Aktionen oder Datensatzsuchen:
- Journey im starten
- Trigger des Ereignisses oder der benutzerdefinierten Aktion mit Beispieldaten
- Überprüfen Sie die Nachrichtenvorschau, um sicherzustellen, dass die Iteration korrekt angezeigt wird
- Überprüfen Sie die Testmodusprotokolle auf Fehler (siehe Testmodusprotokolle für benutzerdefinierte Aktionen)
Verwandte Themen related-topics
Personalization-Grundlagen: Erste Schritte mit der Personalisierung | Personalisierung hinzufügen | Personalization-Syntax | Hilfsfunktionen | Erstellen von bedingten Regeln
Journey-Konfiguration: Über Ereignisse | Konfigurieren von benutzerdefinierten Aktionen | Übergeben von Sammlungen in benutzerdefinierte Aktionsparameter | Verwenden von API-Aufrufantworten in benutzerdefinierten Aktionen | Fehlerbehebung bei benutzerdefinierten Aktionen | Verwenden von Adobe Experience Platform-Daten in Journey | Zusätzliche Kennungen in Journey verwenden | Leitplanken und Einschränkungen | Journey testen
Journey-Ausdrucksfunktionen: Erweiterter Ausdruckseditor | Funktionen zur Sammlungsverwaltung (zunächst alle, zuletzt) | Listenfunktionen (serializeList, filter, sort) | Array-Funktionen (Kopf, Schwanz)
Personalization-Anwendungsfälle: E-Mail zu Warenkorbabbruch | Benachrichtigung zum Bestellstatus
Nachrichtendesign: Erste Schritte beim Gestalten von E-Mails | Push-Benachrichtigungen erstellen | Erstellen von SMS-Nachrichten | Vorschau und Testen von Inhalten