Assistants gs-helpers
Valeur de secours par défaut default-value
L’helper Default Fallback Value est utilisé pour renvoyer une valeur de secours par défaut si un attribut est vide ou nul. Ce mécanisme fonctionne pour les attributs de profil et les événements de parcours.
Syntaxe
Hello {%=profile.personalEmail.name.firstName ?: "there" %}!
Dans cet exemple, la valeur there s'affiche si l'attribut firstName de ce profil est vide ou nul.
Conditions if-function
L'helper if est utilisé pour définir un bloc conditionnel.
Si l'évaluation de l'expression renvoie true, le bloc est rendu, sinon il est ignoré.
Syntaxe
{%#if contains(profile.personalEmail.address, ".edu")%}
<a href="https://www.adobe.com/academia">Check out this link</a>
À la suite de l'helper if, vous pouvez saisir une instruction else pour spécifier un bloc de code à exécuter, si la même condition est false.
L'instruction elseif spécifie une nouvelle condition à tester si la première instruction renvoie false.
Format
{
{
{%#if condition1%} element_1
{%else if condition2%} element_2
{%else%} default_element
{%/if%}
}
}
Exemples
-
Générer différents liens de boutique en fonction d'expressions conditionnelles
code language-sql {%#if profile.homeAddress.countryCode = "FR"%} <a href="https://www.somedomain.com/fr">Consultez notre catalogue</a> {%else%} <a href="https://www.somedomain.com/en">Checkout our catalog</a> {%/if%} -
Déterminer l'extension d'adresse e-mail
code language-sql {%#if contains(profile.personalEmail.address, ".edu")%} <a href="https://www.adobe.com/academia">Checkout our page for Academia personals</a> {%else if contains(profile.personalEmail.address, ".org")%} <a href="https://www.adobe.com/orgs">Checkout our page for Non Profits</a> {%else%} <a href="https://www.adobe.com/users">Checkout our page</a> {%/if%} -
Ajout d'un lien conditionnel
L'opération suivante ajoutera un lien vers le site Web 'www.adobe.com/academia' pour les profils avec des adresses e-mail '.edu' uniquement, vers le site Web 'www.adobe.com/org' pour les profils avec des adresses e-mail '.org', et l'URL par défaut 'www.adobe.com/users' pour tous les autres profils :
code language-sql {%#if contains(profile.personalEmail.address, ".edu")%} <a href="https://www.adobe.com/academia">Checkout our page for Academia personals</a> {%else if contains(profile.personalEmail.address, ".org")%} <a href="https://www.adobe.com/orgs">Checkout our page for Non Profits</a> {%else%} <a href="https://www.adobe.com/users">Checkout our page</a> {%/if%} -
Contenu conditionnel basé sur l’appartenance à une audience
code language-sql {%#if profile.segmentMembership.get("ups").get("5fd513d7-d6cf-4ea2-856a-585150041a8b").status = "existing"%} Hi! Esteemed gold member. <a href="https://www.somedomain.com/gold">Checkout your exclusive perks </a> {%else if profile.segmentMembership.get("ups").get("5fd513d7-d6cf-4ea2-856a-585150041a8c").status = "existing"%} Hi! Esteemed silver member. <a href="https://www.somedomain.com/silver">Checkout your exclusive perks </a> {%/if%}
Unless unless
L'helper unless est utilisé pour définir un bloc conditionnel. Par opposition à l’assistant if, si l’évaluation de l’expression renvoie false, le bloc est rendu.
Syntaxe
{%#unless unlessCondition%} element_1 {%else%} default_element {%/unless%}
Exemple
Générer du contenu en fonction de l'extension d'adresse e-mail :
{%#unless endsWith(profile.personalEmail.address, ".edu")%}
Some Normal Content
{%else%}
Some edu specific content
{%/unless%}
Each each
L'helper each est utilisé pour effectuer une itération sur un tableau.
La syntaxe de l’assistant est {{#each ArrayName}} YourContent {{/each}}
Il est possible de se référer aux éléments individuels du tableau en utilisant le mot-clé this à l’intérieur du bloc. L’index de l’élément du tableau peut être rendu à l’aide de {{@index}}.
Syntaxe
{{#each profile.productsInCart}}
<li>{{this.name}}</li>
{{/each}}
Exemple
{{#each profile.homeAddress.city}}
{{@index}} : {{this}}<br>
{{/each}}
Exemple
Générer une liste de produits que cet utilisateur a dans son panier :
{{#each profile.products as |product|}}
<li>{{product.productName}} {{product.productRating}}</li>
{{/each}}
each pour effectuer une itération sur les tableaux renvoyés par les réponses d’action personnalisée. Pour un exemple d’itération sur des tableaux imbriqués à partir d’une réponse d’action personnalisée, consultez Utiliser des réponses d’action personnalisée dans des canaux natifs.Avec with
L'helper with permet de modifier le jeton d'évaluation d'une partie de modèle.
Syntaxe
{{#with profile.person.name}}
{{this.firstName}} {{this.lastName}}
{{/with}}
L'helper with est utile pour définir également une variable de raccourci.
Exemple
Utiliser l'option avec pour attribuer un alias aux noms de variables longs par rapport aux noms plus courts :
{{#with profile.person.name as |name|}}
Hi {{name.firstName}} {{name.lastName}}!
Checkout our trending products for today!
{{/with}}
Let let
La fonction let permet à une expression d'être stockée en tant que variable et d'être utilisé ultérieurement dans une requête.
Syntaxe
{% let variable = expression %} {{variable}}
Exemple
L'exemple suivant permet de calculer la somme totale des prix des produits du panier dont les prix sont compris entre 100 et 1 000.
{% let sum = 0%}
{{#each profile.productsInCart as |p|}}
{%#if p.price>100 and p.price<1000%}
{%let sum = sum + p.price %}
{%/if%}
{{/each}}
{{sum}}
Métadonnées d’exécution execution-metadata
L’assistant executionMetadata permet de capturer et de stocker dynamiquement des paires clé-valeur personnalisées dans le contexte d’exécution du message.
Syntaxe
{{executionMetadata key="your_key" value="your_value"}}
Dans cette syntaxe, key fait référence au nom des métadonnées et value correspond aux métadonnées à conserver.
Cas d’utilisation
Cette fonction vous permet d’ajouter des informations contextuelles à toute action native de vos campagnes ou parcours. Vous pouvez ainsi exporter des données contextuelles de diffusion en temps réel vers des systèmes externes à diverses fins telles que le suivi, l’analyse, la personnalisation et le traitement en aval.
- La fonction Métadonnées d’exécution n’est pas prise en charge par les actions personnalisées.
- La fonction Métadonnées d’exécution n’est pas visible lorsque le contenu est affiché.
Par exemple, vous pouvez utiliser l’assistant Métadonnées d’exécution pour ajouter un ID spécifique à chaque diffusion envoyée à chaque profil. Ces informations sont générées lors de l’exécution, puis vous pouvez importer les métadonnées d’exécution enrichies pour la réconciliation en aval à l’aide d’une plateforme de création de rapports externe.
Fonctionnement
Sélectionnez n’importe quel élément du contenu de votre canal dans une campagne ou un parcours et, à l’aide de l’éditeur de personnalisation, ajoutez l’assistant executionMetadata à cet élément.
Lors de l’exécution, la valeur des métadonnées est ajoutée au jeu de données d’événement de retour de message existant avec le schéma suivant :
"_experience": {
"customerJourneyManagement": {
"messageExecution": {
"metadata": {
"your_key": "your_value"
}
}
}
}
Limitations
La limite supérieure est de 2 Ko sur les paires clé-valeur par action. Si vous dépassez la limite de 2 Ko, le message est toujours diffusé, mais toutes les paires clé-valeur peuvent être tronquées.
Les métadonnées ne sont pas capturées pour les profils exclus de l’action. Lorsqu’un profil est exclu de la réception d’un message, aucune entrée de métadonnées n’est créée pour ce profil dans le jeu de données.
Exemple
{{executionMetadata key="firstName" value=profile.person.name.firstName}}
Dans cet exemple, en supposant que profile.person.name.firstName = « Alex », l’entité obtenue est :
{
"key": "firstName",
"value": "Alex"
}
Chiffrer url-parameter-encryption-helper
La fonction Encrypt vous permet de chiffrer n’importe quelle valeur d’expression au moment du rendu (généralement un attribut de profil, un jeton ou même une structure JSON rigidifiée que vous créez dans l’expression) avant qu’elle ne soit écrite dans un paramètre de requête sur les liens de suivi ou les pages de destination.
Les valeurs qui apparaissent en tant que texte brut dans l’URL (y compris les PII ou d’autres données sensibles) ne sont pas lisibles lorsque le lien est inspecté ou transféré. Seules les valeurs que vous encapsulez avec cet helper sont chiffrées ; le reste de l’URL reste inchangé.
Cas d’utilisation
Cet helper vous permet de protéger les données de profil sensibles (PII) avant de les inclure dans la sortie rendue.
Condition requise
Un administrateur doit créer au moins une clé active dans le registre des clés au niveau du sandbox. Découvrez comment créer et gérer des clés
Syntaxe
{{encrypt dataPath keyName="keyName" version="version" result="variableName"}}
Utilisation
Cet helper chiffre les données sensibles et stocke le résultat dans une variable de modèle.
Vous pouvez appliquer l’assistant à un, plusieurs ou tous les paramètres d’un lien, selon la conception de l’URL et les contraintes de longueur.
- Input :
dataPath(référence de données qui doit être résolue sur une chaîne),keyName(identifiant de clé de chiffrement),version(version de clé facultative),result(nom de variable pour la sortie chiffrée) - Output : rend la valeur chiffrée disponible dans la variable
resultspécifiée. - Format de résultat : la variable de résultat contient une chaîne séparée par des points :
keyName.version.nonce.authTag.cipherText(tous les segments, à l’exception dekeyNameetversion, sont codés en Base64 sécurisé par une URL sans marge intérieure). - Exigences relatives aux clés statiques : les
keyNameetversiondoivent être des littéraux de chaîne statiques (les références dynamiques ne sont pas prises en charge). - Version par défaut : le paramètre
versionest facultatif ; s’il est omis, le service de clé de chiffrement résout la version par défaut
Exemples
{{encrypt profile.person.email keyName="email-key" version="1" result="enc"}}{{enc}}email-key.1.RkFrZU5vbmNlQUJD.T3V0cHV0QXV0aFRhZ0Fh.am9obkBleGFtcGxlLmNvbQ{{encrypt profile.person.name.firstName keyName="pii-key" version="2" result="encName"}}{{encName}}pii-key.2.U29tZVJhbmRvbUlW.QXV0aGVudGljYXRpb25UYQ.Sm9obgMécanismes de sécurisation
-
Le déchiffrement est géré en dehors des Journey Optimizer sur vos pages de destination, applications ou API. Planifiez le cycle de vie et la rotation des clés avec votre équipe de sécurité afin que les payloads historiques puissent toujours être déchiffrées si nécessaire.
-
Les clés révoquées ne doivent pas être utilisées pour un nouveau chiffrement. Suivez votre politique de sécurité pour la rotation et le déclassement.