Show Menu
SUJETS×

Les points d'extension

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

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)
Le paramètre xmlInteraction contient à la fois les données d'appel et le profil du contact qui a été chargé par la requête d'usine.
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

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 :
    { 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 :
    { "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

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
Le système vérifie que l'identifiant de l'offre est le même en entrée et en sortie.
Exemple:
var product = getUrl("https://EXTERNAL_SYSTEM?offerCode=" + encodeURIComponent(xmlOffer.@code));
if( product )
  return [{offer_id: parseInt(String(xmlOffer.@id)), weight: dWeight, productId: product}];