Doorlopen van contextafhankelijke gegevens personalization-contexts

Leer hoe u de iteratiesyntaxis van Handlebars gebruikt om dynamische lijsten van gegevens uit diverse bronnen in uw berichten, met inbegrip van gebeurtenissen, de reacties van de douaneactie, en andere contextafhankelijke gegevens te tonen.

Overzicht overview

Journey Optimizer verleent toegang tot contextafhankelijke gegevens van veelvoudige bronnen tijdens ​ berichtverpersoonlijking ​. U kunt over series van deze bronnen herhalen gebruikend de syntaxis van Handlebars in inheemse kanalen (​ e-mail ​, ​ duw ​, ​ SMS ​) om dynamische inhoud zoals productlijsten, aanbevelingen, of andere herhalende elementen te tonen.

Beschikbare contextbronnen:

Deze gids toont u hoe te over series van elk van deze bronnen in uw berichten herhalen, en hoe te met series te werken wanneer het vormen van reisactiviteiten. Begin met ​ de iteratiesyntaxis van Handels ​ om de grondbeginselen van de berichtverpersoonlijking te begrijpen, of aan ​ het Werk met series in de uitdrukkingen van de Reis ​ te leren hoe te om seriegegevens tot douaneacties en datasetraadplegingen over te gaan.

Titeratiesyntaxis van werkbalken syntax

Handlebars verstrekt {{#each}} ​ helper ​ om over series te herhalen. De basissyntaxis is:

{{#each arrayPath as |item|}}
  <!-- Access item properties here -->
  {{item.property}}
{{/each}}

Zeer belangrijke punten:

  • Vervang arrayPath door het pad naar uw arraygegevens
  • Vervang item door de gewenste variabelenaam (bijvoorbeeld product , response , element )
  • Eigenschappen van elk item benaderen met {{item.propertyName}}
  • U kunt meerdere {{#each}} -blokken nesten voor arrays van meerdere niveaus

Gegevens herhalen over gebeurtenissen event-data

De gegevens van de gebeurtenis zijn beschikbaar wanneer uw reis door een ​ gebeurtenis ​ wordt teweeggebracht. Dit is handig voor het weergeven van gegevens die zijn vastgelegd op het moment dat de reis werd gestart, zoals inhoud van het winkelwagentje, orderitems of formulierverzendingen.

TIP
U kunt gebeurtenisgegevens combineren met andere bronnen. Zie ​ veelvoudige contextbronnen ​ voor voorbeelden combineren.

Contextpad voor gebeurtenissen

context.journey.events.<event_ID>.<fieldPath>
  • <event_ID>: De unieke id van uw gebeurtenis, zoals geconfigureerd tijdens de rit
  • <fieldPath>: Het pad naar het veld of de array in het gebeurtenisschema

Voorbeeld: Items starten van een gebeurtenis

Als uw ​ gebeurtenisschema ​ a productListItems serie (standaard ​ formaat XDM ​) omvat, kunt u wortelinhoud zoals die in de steekproef hieronder wordt gedetailleerd tonen.

Voorbeeldcode weergeven
code language-handlebars
{{#each context.journey.events.event_ID.productListItems as |product|}}
  <div class="product">
    <h3>{{product.name}}</h3>
    <p>Quantity: {{product.quantity}}</p>
    <p>Price: ${{product.priceTotal}}</p>
  </div>
{{/each}}

Voorbeeld: geneste arrays in gebeurtenissen

Gebruik geneste {{#each}} -blokken voor geneste structuren.

Voorbeeldcode weergeven
code language-handlebars
{{#each context.journey.events.event_ID.categories as |category|}}
  <h2>{{category.name}}</h2>
  <ul>
    {{#each category.items as |item|}}
      <li>{{item.title}}</li>
    {{/each}}
  </ul>
{{/each}}

Leer meer over het nesten in ​ Beste praktijken ​.

Doorlopen van aangepaste handelingsreacties custom-action-responses

​ de actie van de Douane ​ reacties bevatten gegevens die van externe API vraag zijn teruggekeerd. Dit is nuttig om informatie in real time van uw systemen, zoals loyaliteitspunten, productaanbevelingen, inventarisstatus, of gepersonaliseerde aanbiedingen te tonen.

NOTE
De acties van de douane moeten met een reactielading worden gevormd om deze eigenschap te gebruiken. Leer meer in ​ deze sectie ​. U kunt de reacties van de douaneactie met gebeurtenisgegevens of datasetraadplegingen ook combineren - zie ​ veelvoudige contextbronnen ​ voor voorbeelden combineren.

Contextpad voor aangepaste handelingen

context.journey.actions.<actionName>.<fieldPath>
  • <actionName>: De naam van uw ​ douaneactie ​ zoals gevormd in de reis
  • <fieldPath>: Het pad naar het veld of de array binnen de antwoordlading

Voorbeeld: productaanbevelingen van een API

Zie het onderstaande voorbeeld voor een herhaling over een array met productaanbevelingen die door een aangepaste handeling worden geretourneerd en om deze als afzonderlijke kaarten in uw bericht weer te geven.

Voorbeeldcode weergeven

API Reactie:

code language-json
{
  "recommendations": [
    {
      "productId": "12345",
      "productName": "Summer Jacket",
      "price": 89.99,
      "imageUrl": "https://example.com/jacket.jpg"
    },
    {
      "productId": "67890",
      "productName": "Running Shoes",
      "price": 129.99,
      "imageUrl": "https://example.com/shoes.jpg"
    }
  ]
}

verpersoonlijking van het Bericht:

code language-handlebars
<h2>Recommended for You</h2>
<div class="recommendations">
  {{#each context.journey.actions.GetRecommendations.recommendations as |item|}}
    <div class="product-card">
      <img src="{{item.imageUrl}}" alt="{{item.productName}}" />
      <h3>{{item.productName}}</h3>
      <p class="price">${{item.price}}</p>
    </div>
  {{/each}}
</div>

Voorbeeld: geneste arrays van aangepaste handelingen

Zie het onderstaande voorbeeld voor herhaling over een aangepaste actierespons met geneste arrays (een array met objecten waarin elk object een andere array bevat). Dit demonstreert het gebruik van geneste {{#each}} lussen voor toegang tot meerdere gegevensniveaus.

Voorbeeldcode weergeven

API Reactie:

code language-json
{
  "id": "84632848268632",
  "responses": [
    { "productIDs": [1111, 2222, 3333] },
    { "productIDs": [4444, 5555, 6666] },
    { "productIDs": [7777, 8888, 9999] }
  ]
}

verpersoonlijking van het Bericht:

code language-handlebars
<h2>Product Groups</h2>
{{#each context.journey.actions.GetProducts.responses as |response|}}
  <div class="product-group">
    <ul>
      {{#each response.productIDs as |productID|}}
        <li>Product ID: {{productID}}</li>
      {{/each}}
    </ul>
  </div>
{{/each}}

Voor complexere het nestelen patronen, zie ​ Beste praktijken ​.

Voorbeeld: Uitkeringen in het kader van het keuzerecht

Zie het onderstaande voorbeeld voor dynamische voordelen die zijn gebaseerd op de status van loyaliteit.

Voorbeeldcode weergeven

API Reactie:

code language-json
{
  "loyaltyTier": "gold",
  "benefits": [
    { "name": "Free shipping", "icon": "truck" },
    { "name": "20% discount", "icon": "percent" },
    { "name": "Priority support", "icon": "headset" }
  ]
}

verpersoonlijking van het Bericht:

code language-handlebars
<h2>Your {{context.journey.actions.GetLoyaltyInfo.loyaltyTier}} Member Benefits</h2>
<ul class="benefits">
  {{#each context.journey.actions.GetLoyaltyInfo.benefits as |benefit|}}
    <li>
      <span class="icon-{{benefit.icon}}"></span>
      {{benefit.name}}
    </li>
  {{/each}}
</ul>

Doorlopen van zoekresultaten van gegevensset dataset-lookup

De ​ activiteit van de Opzoeken van de Dataset ​ staat u toe om gegevens van ​ datasets van Adobe Experience Platform ​ tijdens reis runtime terug te winnen. De verrijkte gegevens worden opgeslagen als een array en kunnen in uw berichten worden herhaald.

AVAILABILITY
De opzoekactiviteit van de Dataset is slechts beschikbaar voor een beperkte reeks organisaties. Neem contact op met uw Adobe-vertegenwoordiger voor toegang.

Leer meer over het vormen van de activiteit van de Lookup van de Dataset in ​ deze sectie ​. De raadpleging van de Dataset is bijzonder krachtig wanneer gecombineerd met gebeurtenisgegevens - zie ​ Voorbeeld: de gegevens van de gebeurtenis die met datasetraadpleging ​ voor een praktisch gebruiksgeval worden verrijkt.

Contextpad voor raadpleging van gegevenssets

context.journey.datasetLookup.<activityID>.entities
  • <activityID>: De unieke id van uw opzoekactiviteit in de gegevensset
  • entities: De array met verrijkte gegevens die uit de gegevensset zijn opgehaald

Voorbeeld: Productgegevens uit een dataset

Als u een activiteit van de Opzoekmachine van de Dataset gebruikt om productinformatie terug te winnen die op SKUs wordt gebaseerd, zie hieronder steekproef.

Voorbeeldcode weergeven

Configuratie van de Opzoeken van de Dataset:

  • Toetsen opzoeken: list(@event{purchase_event.products.sku})
  • Te retourneren velden: ["SKU", "category", "price", "name"]

verpersoonlijking van het Bericht:

code language-handlebars
<h2>Product Details</h2>
<table>
  <thead>
    <tr>
      <th>Product Name</th>
      <th>Category</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
    {{#each context.journey.datasetLookup.3709000.entities as |product|}}
      <tr>
        <td>{{product.name}}</td>
        <td>{{product.category}}</td>
        <td>${{product.price}}</td>
      </tr>
    {{/each}}
  </tbody>
</table>

Voorbeeld: gefilterde herhaling met gegevenssetgegevens

Gebruik voorwaardelijke {{#if}} instructies in uw {{#each}} -lus om zoekresultaten van datasets tijdens herhaling te filteren en alleen items weer te geven die aan specifieke criteria voldoen (bijvoorbeeld producten van een bepaalde categorie). Zie het onderstaande voorbeeld.

Voorbeeldcode weergeven
code language-handlebars
<h2>Household Products</h2>
{{#each context.journey.datasetLookup.3709000.entities as |product|}}
  {{#if product.category = "household"}}
    <div class="product">
      <h3>{{product.name}}</h3>
      <p>Price: ${{product.price}}</p>
    </div>
  {{/if}}
{{/each}}

Leer meer over voorwaardelijk filtreren in ​ Beste praktijken ​.

Voorbeeld: totalen berekenen uit de zoekopdracht van de gegevensset

Om totalen te berekenen en te tonen terwijl het herhalen over de resultaten van de datasetraadpleging, zie het voorbeeld hieronder.

Voorbeeldcode weergeven
code language-handlebars
{% let householdTotal = 0 %}
{{#each context.journey.datasetLookup.3709000.entities as |product|}}
  {%#if product.category = "household"%}
    {% let householdTotal = householdTotal + product.price %}
  {%/if%}
{{/each}}

<p>Your household products total: ${{householdTotal}}</p>

Technische eigenschappen van reis gebruiken technical-properties

De technische eigenschappen van de reis verlenen toegang tot meta-gegevens over de reisuitvoering, zoals reis ID en supplementaire herkenningstekens. Deze kunnen nuttig zijn wanneer gecombineerd met iteratiepatronen, vooral voor het filteren van arrays op basis van specifieke trajectinstanties.

Beschikbare technische eigenschappen

context.journey.technicalProperties.journeyUID
context.journey.technicalProperties.supplementalId

Voorbeeld: arrayitems filteren met aanvullende id

Wanneer u aanvullende id's gebruikt bij een door een gebeurtenis geïnitieerde reis met een array, kunt u filteren om alleen het relevante item voor de huidige reisinstantie weer te geven. Leer meer over supplementaire herkenningstekens in ​ deze gids ​.

Scenario: Een reis wordt teweeggebracht met veelvoudige boekingen, maar u wilt informatie slechts voor het specifieke boeken (die door supplementaire identiteitskaart wordt geïdentificeerd) tonen die deze reisinstantie teweegbracht.

Voorbeeldcode weergeven
code language-handlebars
{{#each context.journey.events.event_ID.bookingList as |booking|}}
  {%#if booking.bookingInfo.bookingNum = context.journey.technicalProperties.supplementalId%}
    <div class="booking-details">
      <h3>Your Booking: {{booking.bookingInfo.bookingNum}}</h3>
      <p>Destination: {{booking.bookingInfo.bookingCountry}}</p>
      <p>Date: {{booking.bookingInfo.bookingDate}}</p>
    </div>
  {%/if%}
{{/each}}

Voorbeeld: reis-id opnemen voor tracering

Zie het onderstaande voorbeeld als u de reis-id in uw bericht wilt opnemen voor traceringsdoeleinden.

Voorbeeldcode weergeven
code language-handlebars
<footer>
  <p>Journey Reference: {{context.journey.technicalProperties.journeyUID}}</p>
</footer>

Meerdere contextbronnen combineren combine-sources

U kunt gegevens uit verschillende bronnen in het zelfde bericht combineren om rijke, gepersonaliseerde ervaringen tot stand te brengen. Deze sectie toont praktische voorbeelden om veelvoudige contextbronnen samen te gebruiken.

de bronnen van de context u kunt combineren:

Voorbeeld: Winkelobjecten met real-time voorraad

Bekijk het onderstaande voorbeeld om gebeurtenisgegevens (inhoud van winkelwagentje) te combineren met aangepaste actiegegevens (voorraadstatus).

Voorbeeldcode weergeven
code language-handlebars
<h2>Your Cart</h2>
{{#each context.journey.events.cartEvent.productListItems as |product|}}
  <div class="cart-item">
    <h3>{{product.name}}</h3>
    <p>Quantity: {{product.quantity}}</p>
    <p>Price: ${{product.priceTotal}}</p>
  </div>
{{/each}}

<h2>We Also Recommend</h2>
{{#each context.journey.actions.GetRecommendations.items as |recommendation|}}
  <div class="recommendation">
    <h4>{{recommendation.name}}</h4>
    <p>${{recommendation.price}}</p>
    {{#if recommendation.inStock}}
      <span class="badge">In Stock</span>
    {{else}}
      <span class="badge out-of-stock">Out of Stock</span>
    {{/if}}
  </div>
{{/each}}

Voorbeeld: Gebeurtenisgegevens die zijn verrijkt met zoekopdracht voor gegevenssets

Om ​ gebeurtenis SKUs ​ met gedetailleerde productinformatie van de raadpleging van de a ​ dataset ​ te combineren, bekijk hieronder de steekproef.

Voorbeeldcode weergeven
code language-handlebars
<h2>Your Order Details</h2>
{{#each context.journey.events.orderEvent.productListItems as |item|}}
  <div class="order-item">
    <p><strong>SKU:</strong> {{item.SKU}}</p>
    <p><strong>Quantity:</strong> {{item.quantity}}</p>

    <!-- Enrich with dataset lookup data -->
    {{#each context.journey.datasetLookup.1234567.entities as |enrichedProduct|}}
      {{#if enrichedProduct.SKU = item.SKU}}
        <p><strong>Product Name:</strong> {{enrichedProduct.name}}</p>
        <p><strong>Category:</strong> {{enrichedProduct.category}}</p>
        <img src="{{enrichedProduct.imageUrl}}" alt="{{enrichedProduct.name}}" />
      {{/if}}
    {{/each}}
  </div>
{{/each}}

Voorbeeld: Meerdere bronnen combineren met technische eigenschappen

Bekijk het onderstaande voorbeeld om meerdere contextbronnen (profielgegevens, gebeurtenisgegevens, aangepaste handelingen en technische eigenschappen) in één bericht te combineren.

Voorbeeldcode weergeven
code language-handlebars
<div class="personalized-content">
  <!-- Profile data -->
  <h1>Hello {{profile.person.name.firstName}},</h1>

  <!-- Event data iteration -->
  <h2>Your Recent Purchases</h2>
  {{#each context.journey.events.purchaseEvent.items as |purchase|}}
    <div class="purchase">
      <p>{{purchase.productName}} - ${{purchase.price}}</p>
    </div>
  {{/each}}

  <!-- Custom action response iteration -->
  <h2>Recommended for You</h2>
  {{#each context.journey.actions.GetPersonalizedRecs.recommendations as |rec|}}
    <div class="recommendation">
      <h3>{{rec.title}}</h3>
      <p>{{rec.description}}</p>
    </div>
  {{/each}}

  <!-- Technical properties -->
  <footer>
    <p class="fine-print">Journey ID: {{context.journey.technicalProperties.journeyUID}}</p>
  </footer>
</div>

Andere contexttypen other-contexts

Terwijl deze gids zich op herhaling over series concentreert, zijn andere contexttypes beschikbaar voor verpersoonlijking die typisch geen herhaling vereisen. Deze worden direct benaderd in plaats van via een lus te herhalen:

Voor volledige verpersoonlijkingssyntaxis en voorbeelden die deze bronnen gebruiken, verwijs naar:

Werken met arrays in Journey-expressies arrays-in-journeys

Terwijl de vorige secties zich bij herhaling over series in berichtverpersoonlijking gebruikend Handlebars concentreren, werkt u ook met series wanneer het vormen van reisactiviteiten. In deze sectie wordt uitgelegd hoe u arraygegevens uit gebeurtenissen in Journey-expressies kunt gebruiken, met name wanneer u gegevens doorgeeft aan aangepaste handelingen of wanneer u arrays met datasetlookups gebruikt.

IMPORTANT
Reisexpressies gebruiken een andere syntaxis dan Handlebars personalisatie. In reisconfiguratie (zoals parameters of voorwaarden van de douaneactie), gebruikt u de ​ redacteur van de de uitdrukkingsuitdrukking van de Reis ​ met functies zoals first, all, en serializeList. In berichtinhoud gebruikt u de syntaxis Handlebars met {{#each}} lussen.

Arraywaarden aan aangepaste actieparameters doorgeven arrays-to-custom-actions

Wanneer het vormen van ​ douaneacties ​, moet u vaak waarden uit gebeurtenisseries halen en hen als parameters overgaan. Deze sectie behandelt gemeenschappelijke patronen.

Leer meer over het overgaan van inzamelingen in ​ inzamelingen van de Pas in de parameters van de douaneactie ​.

Eén waarde uit een array extraheren

Geval van het Gebruik: Krijg een specifiek gebied van een gebeurtenisserie om als vraagparameter in een verzoek van GET over te gaan.

Voorbeeldcode weergeven

scenario van het Voorbeeld: Extraheer eerste SKU met een prijs groter dan 0 van een productlijst.

het schemavoorbeeld van de Gebeurtenis:

code language-json
{
  "commerce": {
    "productListItems": [
      { "SKU": "SKU-1", "priceTotal": 10.0 },
      { "SKU": "SKU-2", "priceTotal": 0.0 },
      { "SKU": "SKU-3", "priceTotal": 20.0 }
    ]
  }
}

de actieconfiguratie van de Douane:

  1. Configureer in uw aangepaste handeling een queryparameter (bijvoorbeeld sku ) met type string
  2. Markeer het als Variable om dynamische waarden toe te staan

uitdrukking van de Reis in actieparameter:

code language-javascript
@event{YourEventName.commerce.productListItems.first(currentEventField.priceTotal > 0).SKU}

Verklaring:

  • @event{YourEventName}: verwijst naar uw reisgebeurtenis
  • .first(currentEventField.condition): retourneert het eerste arrayitem dat overeenkomt met de voorwaarde
  • currentEventField: vertegenwoordigt elk item in de gebeurtenisarray terwijl u deze doorloopt
  • .SKU: extraheert het SKU-veld van het overeenkomende item
  • Resultaat: "SKU-1" (een tekenreeks die geschikt is voor de parameter action)

Leer meer over de first functie in ​ het beheersfuncties van de Inzameling ​.

Een lijst met waarden op basis van een array maken

geval van het Gebruik: Creeer een komma-gescheiden lijst van IDs om als vraagparameter over te gaan (b.v., /products?ids=sku1,sku2,sku3).

Voorbeeldcode weergeven

de actieconfiguratie van de Douane:

  1. Een queryparameter (bijvoorbeeld ids ) configureren met type string
  2. Markeren als Variable

uitdrukking van de Reis:

code language-javascript
serializeList(
  @event{YourEventName.commerce.productListItems.all(currentEventField.priceTotal > 0).SKU},
  ",",
  true
)

Verklaring:

  • .all(currentEventField.condition): retourneert alle arrayitems die overeenkomen met de voorwaarde (retourneert een lijst)

  • currentEventField: vertegenwoordigt elk item in de gebeurtenisarray terwijl u deze doorloopt

  • .SKU: hiermee wordt in de lijst alleen SKU-waarden opgenomen

  • serializeList(list, delimiter, addQuotes): Voegt de lijst samen tot een tekenreeks

    • ",": komma als scheidingsteken gebruiken
    • true: voeg aanhalingstekens toe rond elk tekenreekselement
  • Resultaat: "SKU-1,SKU-3" (geschikt voor een queryparameter)

Meer informatie over:

De behandeling van de inzameling voor douaneacties wordt behandeld in ​ inzamelingen van de Pas in de parameters van de douaneactie ​.

Een array van objecten doorgeven aan een aangepaste handeling

geval van het Gebruik: verzend een volledige serie van voorwerpen in een verzoeklichaam (voor POST of GET met lichaam).

Voorbeeldcode weergeven

het lichaamsvoorbeeld van het Verzoek:

code language-json
{
  "ctxt": {
    "products": [
      {
        "id": "productA",
        "name": "Product A",
        "price": 20.1,
        "color": "blue"
      }
    ]
  }
}

de actieconfiguratie van de Douane:

  1. Definieer in de hoofdtekst van de aanvraag products als type listObject
  2. Markeren als Variable
  3. Definieer de objectvelden: id , name , price , color (elk wordt toegewezen)

de configuratie van het canvas van de Reis:

  1. Stel in de modus Geavanceerd de verzamelingsexpressie in:

    code language-javascript
    @event{YourEventName.commerce.productListItems.all(currentEventField.priceTotal > 0)}
    
  2. In de interface voor verzamelingstoewijzing:

    • Kaart idproductListItems.SKU
    • Kaart nameproductListItems.name
    • Kaart priceproductListItems.priceTotal
    • Kaart colorproductListItems.color

Journey Optimizer maakt de array met objecten die overeenkomen met de payload-structuur van de handeling.

note note
NOTE
Wanneer u werkt met gebeurtenisarrays, gebruikt u currentEventField om naar elk item te verwijzen. Gebruik currentDataPackField voor gegevensbronverzamelingen (Adobe Experience Platform). Gebruik currentActionField voor aangepaste actieverzamelingen.

Leer meer in ​ inzamelingen van de pas in de parameters van de douaneactie ​.

Arrays met datasetraadplegingen gebruiken arrays-with-dataset-lookup

Wanneer het gebruiken van de ​ activiteit van de Lookup van de Dataset ​, kunt u een serie van waarden als raadplegingssleutels overgaan om verrijkte gegevens terug te winnen.

Voorbeeld: Bekijk productdetails voor alle SKUs in een gebeurtenisserie.

Voorbeeldcode weergeven

de configuratie van de Opzoekup van de 0} Dataset:

In het veld Opzoeksleutels gebruikt u list() om een arraypad om te zetten in een lijst:

code language-javascript
list(@event{purchaseEvent.productListItems.SKU})

Dit leidt tot een lijst van alle waarden van SKU omhoog in de dataset te kijken. De resultaten zijn beschikbaar als serie bij context.journey.datasetLookup.<activityID>.entities die u over in uw bericht kunt herhalen (zie ​ over de resultaten van de datasetraadpleging herhalen ​).

Beperkingen en patronen array-limitations

Houd rekening met deze beperkingen wanneer u werkt met arrays in ritten:

Geen dynamische lusbewerking over arrays in transportflow

De reizen kunnen geen dynamische lijnen tot stand brengen waar één actieknooppunt veelvoudige tijden voor elk punt in een serie wordt uitgevoerd. Dit is bedoeld om problemen met runaway-prestaties te voorkomen.

wat u niet kunt doen:

  • Een aangepaste handeling één keer per arrayitem dynamisch uitvoeren
  • Meerdere reistakken maken op basis van arraylengte

Aanbevolen patronen in plaats daarvan:

  1. verzend alle punten meteen: Ga de volledige serie of een geserialiseerde lijst tot één enkele douaneactie over die alle punten verwerkt. Zie ​ een lijst van waarden van een serie ​ bouwen.

  2. de externe samenvoeging van het Gebruik: Heb uw externe API veelvoudige IDs goedkeuren en gecombineerde resultaten in één enkele vraag terugkeren.

  3. pre-compute in AEP: Gebruik ​ gegevens verwerkte attributen ​ om waarden van series op het profielniveau vooraf te berekenen.

  4. Enige waardeextractie: Als u slechts één waarde nodig hebt, haal het gebruikend first of head. Zie ​ één enkele waarde van een serie ​ extraheren.

Leer meer in ​ Grafieken en beperkingen ​.

Overwegingen voor arraygrootte

Grote arrays kunnen de reisprestaties beïnvloeden:

  • de series van de Gebeurtenis: Houd gebeurtenislading onder totaal 50KB
  • de actieantwoorden van de Actie van de Douane: De nuttige lading van de reactie zou onder 100KB moeten zijn
  • de raadplegingsresultaten van de Dataset: Beperk het aantal raadplegingssleutels en teruggekeerde entiteiten

Volledig voorbeeld: gebeurtenisarray naar aangepaste handeling complete-example

Hier volgt een volledige workflow waarin wordt getoond hoe u een gebeurtenisarray kunt gebruiken met een aangepaste handeling.

Scenario: Wanneer een gebruiker hun kar verlaat, verzendt het kartgegevens naar een externe aanbeveling API om gepersonaliseerde suggesties te krijgen, dan hen in een e-mail te tonen.

Voorbeeldcode weergeven

Stap 1: Vorm de douaneactie

Maak een aangepaste handeling "GetCartRecommendations":

  • Methode: POST
  • URL: https://api.example.com/recommendations
  • het lichaam van het Verzoek:
code language-json
{
  "cartItems": [
    {
      "sku": "string",
      "price": 0,
      "quantity": 0
    }
  ]
}
  • cartItems markeren als type listObject en Variable
  • Definieer velden: sku (string), price (number), quantity (integer)

Leer meer in ​ een douaneactie ​ vormen.

Stap 2: Vorm antwoordlading

In de douaneactie, vorm de reactie:

code language-json
{
  "recommendations": [
    {
      "productId": "string",
      "productName": "string",
      "price": 0,
      "imageUrl": "string"
    }
  ]
}

Leer meer in ​ de vraagreacties van API van het Gebruik ​.

Stap 3: Bouw de actie in de reis

  1. Voeg de aangepaste handeling toe nadat de gebeurtenis waarmee u het winkelwagentje hebt verlaten, is uitgevoerd

  2. In de modus Geavanceerd voor de cartItems -verzameling:

    code language-javascript
    @event{cartAbandonment.commerce.productListItems.all(currentEventField.quantity > 0)}
    
  3. De verzamelingsvelden toewijzen:

    • skuproductListItems.SKU
    • priceproductListItems.priceTotal
    • quantityproductListItems.quantity

Stap 4: Gebruik de reactie in uw e-mail

Doorloop de aanbevelingen in uw e-mailinhoud:

code language-handlebars
<h2>We noticed you left these items in your cart</h2>
{{#each context.journey.events.cartAbandonment.productListItems as |item|}}
  <div class="cart-item">
    <p>{{item.name}} - Quantity: {{item.quantity}}</p>
  </div>
{{/each}}

<h2>You might also like</h2>
{{#each context.journey.actions.GetCartRecommendations.recommendations as |rec|}}
  <div class="recommendation">
    <img src="{{rec.imageUrl}}" alt="{{rec.productName}}" />
    <h3>{{rec.productName}}</h3>
    <p>${{rec.price}}</p>
  </div>
{{/each}}

Stap 5: Test uw configuratie

Alvorens een levende reis in werking te stellen, test de douaneactie gebruikend de "Send testverzoek"eigenschap in de actieconfiguratie om het gebouwde verzoek en de waarden te verifiëren.

  1. De wijze van de de reistest van het gebruik 🔗
  2. Trigger met voorbeeldgebeurtenisgegevens, inclusief een productListItems -array
  3. Controleren of de aangepaste handeling de juiste arraystructuur ontvangt
  4. Controle de ​ logboeken van de actietest ​
  5. Een voorbeeld van de e-mail bekijken om te controleren of beide arrays correct worden weergegeven

Leer meer in ​ problemen oplossen uw douaneacties ​.

Best practices best-practices

Volg deze tips en trucs bij het doorlopen van contextuele gegevens om een onderhoudsvriendelijke, krachtige personalisatie te maken.

Beschrijvende variabelenamen gebruiken

Kies variabelenamen die duidelijk aangeven waar u doorheen gaat. Hierdoor wordt uw code beter leesbaar en eenvoudiger te onderhouden. Leer meer over ​ verpersoonlijkingssyntaxis ​:

Voorbeeldcode weergeven
code language-handlebars
<!-- Good -->
{{#each products as |product|}}
{{#each users as |user|}}
{{#each recommendations as |recommendation|}}

<!-- Less clear -->
{{#each items as |item|}}
{{#each array as |element|}}

Fragmenten in lussen uitdrukken

Wanneer het gebruiken van ​ uitdrukkingsfragmenten ​ binnen {{#each}} lijnen, ben zich ervan bewust dat u geen lijn-scoped variabelen als fragmentparameters kunt overgaan. Fragmenten kunnen echter toegang krijgen tot algemene variabelen die buiten het fragment in de berichtinhoud zijn gedefinieerd.

Voorbeeldcode weergeven

Gesteund patroon - Gebruik globale variabelen:

code language-handlebars
{% let globalDiscount = 15 %}

{{#each context.journey.actions.GetProducts.items as |product|}}
  <div class="product">
    <h3>{{product.name}}</h3>
    {{fragment id='ajo:fragment123/variant456' mode='inline'}}
  </div>
{{/each}}

Het fragment kan naar globalDiscount verwijzen omdat het globaal in het bericht is gedefinieerd.

niet gesteund - het overgaan van lusvariabelen:

code language-handlebars
{{#each products as |product|}}
  <!-- This will NOT work as expected -->
  {{fragment id='ajo:fragment123/variant456' currentProduct=product}}
{{/each}}

Oplossing: Omvat direct de verpersoonlijkingslogica in uw lijn in plaats van het gebruiken van een fragment, of roep het fragment buiten de lijn.

Leer meer over ​ het gebruiken van uitdrukkingsfragmenten binnen lijnen ​, met inbegrip van gedetailleerde voorbeelden en extra aanraakpunten.

Lege arrays verwerken

Gebruik de component {{else}} om fallback-inhoud op te geven wanneer een array leeg is. Leer meer over ​ helperfuncties ​:

Voorbeeldcode weergeven
code language-handlebars
{{#each context.journey.actions.GetRecommendations.items as |item|}}
  <div>{{item.name}}</div>
{{else}}
  <p>No recommendations available at this time.</p>
{{/each}}

Combineren met voorwaardelijke hulplijnen

Gebruik {{#if}} binnen lussen voor voorwaardelijke inhoud. Leer meer over ​ voorwaardelijke regels ​ en zie voorbeelden in ​ de actieresultaten van de Douane ​ en ​ de raadplegings ​ secties van de Dataset.

Voorbeeldcode weergeven
code language-handlebars
{{#each context.journey.actions.GetProducts.items as |product|}}
  <div class="product">
    <h3>{{product.name}}</h3>
    {{#if product.onSale}}
      <span class="badge">On Sale!</span>
    {{/if}}
    {{#if product.newArrival}}
      <span class="badge">New</span>
    {{/if}}
  </div>
{{/each}}

Herhaling van prestaties beperken

Bij grote arrays kunt u het aantal herhalingen beperken:

Voorbeeldcode weergeven
code language-handlebars
<!-- Display only first 5 items -->
{{#each context.journey.actions.GetProducts.items as |product|}}
  {{#if @index < 5}}
    <div>{{product.name}}</div>
  {{/if}}
{{/each}}

Metagegevens van arrays openen

Handlebars verstrekt speciale variabelen binnen lijnen die met geavanceerde iteratiepatronen helpen:

  • @index: Huidige iteratie-index (op basis van 0)
  • @first: waar voor de eerste herhaling
  • @last: waar voor de laatste herhaling
Voorbeeldcode weergeven
code language-handlebars
{{#each products as |product|}}
  <div class="product {{#if @first}}featured{{/if}}">
    {{@index}}. {{product.name}}
  </div>
{{/each}}
NOTE
Deze Handlebars variabelen (@index, @first, @last) zijn slechts beschikbaar binnen {{#each}} lijnen in berichtverpersoonlijking. Wanneer u met arrays werkt in Journey-expressies (zoals wanneer u het eerste item van een array ophaalt voordat u doorgeeft aan een aangepaste handeling), gebruikt u arrayfuncties zoals head , first of all . Zie ​ Werk met series in de uitdrukkingen van de Reis ​ voor meer details.

Problemen oplossen troubleshooting

Heb je problemen met iteratie? In deze sectie worden gemeenschappelijke problemen en oplossingen besproken.

Array wordt niet weergegeven

Uitgave: Uw serieherhaling toont geen inhoud.

Mogelijke oorzaken en oplossingen weergeven

Mogelijke oorzaken en oplossingen:

  1. Onjuiste weg: Verifieer de nauwkeurige weg aan uw serie die op de contextbron wordt gebaseerd:

  2. Serie is leeg: Voeg een {{else}} clausule toe om te controleren als de serie geen gegevens heeft. Zie ​ Beste praktijken ​ voor voorbeelden.

  3. Gegevens nog niet beschikbaar: Verzeker de douaneactie, de gebeurtenis, of activiteit van de datasetraadpleging is uitgevoerd vóór de berichtactiviteit in uw reisstroom.

Syntaxisfouten

Uitgave: De bevestiging van de uitdrukking ontbreekt of het bericht geeft niet terug.

Algemene fouten weergeven

Gemeenschappelijke fouten:

  • Ontbrekende afsluitende tags: Elke {{#each}} moet een {{/each}} hebben. De iteratiesyntaxis van het overzicht ​ Handlebars ​ voor juiste structuur.
  • Onjuiste variabelenaam: zorg ervoor dat de variabelenaam overal in het blok consistent wordt gebruikt. Zie ​ Beste praktijken ​ voor het noemen van overeenkomsten.
  • Onjuiste padscheidingstekens: gebruik punten (.) geen schuine strepen of andere tekens

Expressiefragmenten werken niet in lussen

Uitgave: Een uitdrukkingsfragment toont geen verwachte inhoud wanneer gebruikt binnen een {{#each}} lijn, of toont lege/onverwachte output.

Mogelijke oorzaken en oplossingen weergeven

Mogelijke oorzaken en oplossingen:

  1. het Poging om lusvariabelen als parameters over te gaan: De fragmenten van de uitdrukking kunnen geen lijn-scoped variabelen (als het huidige herhalingspunt) als parameters ontvangen. Dit is een bekende beperking.

    Oplossing: Gebruik één van deze aangrijpingen:

    • Definieer algemene variabelen in uw bericht dat het fragment toegang kan krijgen
    • De logica voor personalisatie rechtstreeks in de lus opnemen in plaats van een fragment te gebruiken
    • Roep het fragment buiten de lus aan als het geen lusspecifieke gegevens nodig heeft
  2. het Fragment verwacht een parameter die niet beschikbaar is: Als uw fragment werd ontworpen om specifieke inputparameters te ontvangen, zal het niet correct werken wanneer die parameters niet van binnen een lijn kunnen worden overgegaan.

    Oplossing: Herstructureer uw benadering om globale variabelen te gebruiken die het fragment kan toegang hebben. Zie ​ Beste praktijken - de fragmenten van de Uitdrukking in lijnen ​ voor voorbeelden.

  3. Onjuist veranderlijk werkingsgebied: Het fragment zou kunnen proberen om een variabele van verwijzingen te voorzien die slechts binnen het lijnwerkingsgebied bestaat.

    Oplossing: Bepaal om het even welke variabelen de fragmentbehoeften op het berichtniveau (buiten de lijn) zodat zijn zij globaal toegankelijk.

Leer meer over ​ gebruikend uitdrukkingsfragmenten binnen lijnen ​, met inbegrip van gedetailleerde verklaringen, voorbeelden, en geadviseerde patronen.

Uw herhalingen testen

Gebruik ​ de wijze van de 0} reistest om uw herhalingen te verifiëren. ​ Dit is vooral belangrijk wanneer het gebruiken van ​ douaneacties ​ of ​ datasetraadplegingen ​:

Teststappen weergeven
  1. Begin uw reis op ​ testwijze ​
  2. De gebeurtenis of aangepaste handeling activeren met voorbeeldgegevens
  3. Controle de ​ berichtvoorproef ​ om de herhalingsvertoningen correct te verifiëren
  4. De logboeken van de de testwijze van het overzicht voor om het even welke fouten (zie ​ Logboeken van de actietest van de Douane van de actie ​)

fundamentals van Personalization: ​ begonnen met verpersoonlijking ​ | ​ voeg verpersoonlijking ​ toe | ​ syntaxis van Personalization ​ | ​ de functies van de Helper ​ | ​ creeer voorwaardelijke regels ​

configuratie van de Reis: ​ Ongeveer gebeurtenissen ​ | ​ vorm douaneacties ​ | ​ de inzamelingen van de pas in de parameters van de douaneactie ​ | ​ API van het Gebruik vraagreacties in douaneacties ​ | ​ los uw douaneacties ​ problemen op | ​ de gegevens van Adobe Experience Platform van het Gebruik in reizen ​ | ​ Aanvullende herkenningstekens van het Gebruik in reizen ​ | ​ Grafieken en beperkingen ​ | ​ Test uw reis ​

de uitdrukkingsfuncties van de Reis: ​ Geavanceerde uitdrukkingsredacteur ​ | ​ het beheersfuncties van de Inzameling ​ (eerst, allen, laatste) | ​ functies van de Lijst ​ (serializeList, filter, soort) | ​ de functies van de Serie ​ (hoofd, staart)

Personalization gebruiksgevallen: ​ de verlaten e-mail van de Kunst ​ | ​ de statusbericht van de Orde ​

ontwerp van het Bericht: ​ begonnen met e-mailontwerp ​ | ​ creeer dupberichten ​ | ​ creeer SMS berichten ​ | ​ Voorproef en test uw inhoud ​

recommendation-more-help
b22c9c5d-9208-48f4-b874-1cefb8df4d76