Modifier le comportement standard du moteur hooks
Les points d'extension (hooks) permettent de modifier le comportement standard du moteur.
Les points d'extension Chargement de la cible et Post-traitement des propositions sont configurés, dans Adobe Campaign, au niveau de l'emplacement :
Le point d'extension Offre dynamique est configuré, dans Adobe Campaign, au niveau du poids de l'offre :
Chargement de la cible target-loading
Ce point d'extension permet d'enrichir le profil du contact (qui a été chargé par la requête d'usine) avec des données additionnelles provenant d'un système externe.
Les données collectées doivent être insérées dans le nœud des données d'appel (noeud Interaction). L'intégrateur doit, au préalable, avoir étendu le schéma des données d'appel pour définir la structure des données collectées. L'utilisateur peut accéder à ces données de la même façon que pour des données d'appel standard (au niveau des règles d'éligibilité et au niveau de la personnalisation).
Paramètres d'entrée:
- xmlInteraction (type xml) : noeud Interaction
- aTargetId (type tableau) : identifiant de la cible
- sUuid230 (type chaîne) : valeur du cookie permanent uuid230
- sNlid (type chaîne) : valeur du cookie de session nlid
Paramètres de retour :
- noeud Interaction enrichi (premier paramètre du point d'extension)
Exemple:
// Call an external system to get additional data for the target
var additionalData = getUrl("https://EXTERNAL_SYSTEM?target=" + encodeURIComponent(aTargetId.join("|")));
// Enrich the context with this data
interaction.@additionalData = additionalData;
Post-traitement des propositions proposition-post-processing-
Ce point d'extension permet de vérifier la cohérence et la compatibilité des propositions éligibles au sein d'une même interaction. Il permet également de définir une nouvelle fonction de calcul d'un score ou d'une probabilité.
Exemple d'utilisation des règles de cohérence :
- Limiter le nombre de propositions, au sein d'un même appel, associées à un même produit ou une même catégorie.
- Proposer uniquement les offres relatives à un produit dans une même interaction.
Le post-traitement est exécuté après l'application des règles de typologie et le tri des propositions éligibles, et avant l'étape de priorisation.
Paramètres d'entrée:
-
aProposition : tableau des propositions éligibles. Voici un exemple de structure d'un élément de ce tableau :
code language-none { offer_id:1234, weight:2}
-
dicOffer (type xml) : dictionnaire de tous les attributs des offres éligibles (code de l'offre, identifiant de la catégorie, nom complet de la catégorie, date de début, date de fin, libellé, nom interne, identifiant de l'offre, champs additionnels de l'offre). Exemple :
code language-none { "1242": <offer category-id="61242" categoryFullName="/FULL/PATH/TO/CATEGORY/" code="CODE" endDate="" id="62473" label="LABEL" name="OFR38_OE4" product-id="43" startDate=""/>, "1243": ...}
-
xmlTarget : noeud des données de profil (type xml)
-
xmlInteraction : noeud des données d'appel (type xml)
-
iPropNumber : nombre d'offres attendues (type entier)
Paramètres de retour :
- liste des propositions modifiée (premier paramètre du point d'extension)
- noeud Interaction modifié
Exemple:
var aReturnedProps = [];
if( aProposition.length > 0 )
{
var iReturnedProps = 0;
for( var iPropIdx = 0; iPropIdx < aProposition.length && iReturnedProps < iPropNumber; iPropIdx ++ )
{
// Check a consistency rule for instance
if( true )
{
aReturnedProps.push(aProposition[iPropIdx]);
iReturnedProps++;
}
}
}
return aReturnedProps;
Offre dynamique dynamic-offer
Ce point d'extension permet d'appeler un moteur externe pour sélectionner une liste de produits associés à une offre. L'exécution s'effectue dans l'offre après l'application des règles d'éligibilité, et avant l'application des règles de typologie.
L'intégrateur doit, au préalable, avoir étendu le schéma des propositions PropositionRcp avec les données additionnelles du produit qu'il souhaite stocker avec la proposition. Pour définir le stockage de ces données (code produit, par exemple), un lien Proposition en cours de traitement est disponible dans l'onglet Stockage de l'emplacement.
Paramètres d'entrée:
- xmlOffer (type xml) : offre (code de l'offre, identifiant de la catégorie, nom complet de la catégorie, date de début, date de fin, libellé, nom interne, identifiant de l'offre, champs additionnels de l'offre)
- dWeight : poids du contexte (type double)
- xmlTarget : noeud des données de profil (type xml)
- xmlInteraction : noeud des données d'appel (type xml)
Paramètres de retour :
Un tableau des propositions à générer est retourné. Chaque élément de ce tableau est composé des informations suivantes :
- identifiant de l'offre
- données additionnelles du produit (par exemple, code produit)
- poids
Exemple:
var product = getUrl("https://EXTERNAL_SYSTEM?offerCode=" + encodeURIComponent(xmlOffer.@code));
if( product )
return [{offer_id: parseInt(String(xmlOffer.@id)), weight: dWeight, productId: product}];