[S’applique également à la v8.]{class="badge positive" title="S’applique également à Campaign v8."}

AB Testing : créer le script step-5--creating-the-script

Le choix du contenu de la diffusion destinée à la population restante est calculé par un script. Ce script récupère l'information quant à la diffusion qui a obtenu le plus fort taux d'ouverture et copie le contenu dans la diffusion finale.

Exemple de script example-of-a-script

Le script suivant peut être utilisé tel quel dans le workflow de ciblage. Pour plus d’informations, consultez cette section.

 // query the database to find the winner (best open rate)
   var winner = xtk.queryDef.create(
     <queryDef schema="nms:delivery" operation="get">
       <select>
         <node expr="@id"/>
         <node expr="@label"/>
         <node expr="[@operation-id]"/>
         <node expr="[@workflow-id]"/>
       </select>
       <where>
         <condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/>
       </where>
       <orderBy>
         <node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/>
       </orderBy>
     </queryDef>).ExecuteQuery()

   // create a new delivery object and initialize it by doing a copy of
   // the winner delivery
   var delivery = nms.delivery.create()
   delivery.Duplicate("nms:delivery|" + winner.@id)

   // append 'final' to the delivery label
   delivery.label = winner.@label + " final"

   // link the delivery to the operation to make sure it will be displayed in
   // the campaign dashboard. This attribute needs to be set manually here since
   // the Duplicate() method has reset it to its default value => 0
   delivery.operation_id = winner.@["operation-id"]
   delivery.workflow_id = winner.@["workflow-id"]

   // adjust some delivery parameters to make it compatible with the
   // "Prepare and start" option selected in the Delivery tab of this activity
   delivery.scheduling.validationMode = "manual"
   delivery.scheduling.delayed = 0

   // save the delivery in database
   delivery.save()

   // store the new delivery Id in event variables
   vars.deliveryId = delivery.id

Pour une explication détaillée du script, reportez-vous à cette section.

Mise en œuvre implementation

  1. Ouvrez votre activité Code JavaScript,

  2. Copiez le script proposé dans Exemple de script dans la fenêtre Code JavaScript.

  3. Dans le champ Libellé, entrez le nom du script, soit

    code language-none
    <%= vars.deliveryId %>
    

  4. Fermez l'activité Code JavaScript.

  5. Sauvegardez votre workflow.

Détails du script details-of-the-script

Cette section détaille les différentes parties du script et leur fonctionnement.

  • La première partie du script est une requête. La commande queryDef vous permet de récupérer à partir de la table NmsDelivery les diffusions créées par l'exécution du workflow de ciblage et de les classer selon l'estimation du taux d'ouverture, puis les informations de la diffusion qui a eu le meilleur taux d'ouverture sont également récupérées.

    code language-none
    // query the database to find the winner (best open rate)
       var winner = xtk.queryDef.create(
         <queryDef schema="nms:delivery" operation="get">
           <select>
             <node expr="@id"/>
             <node expr="@label"/>
             <node expr="[@operation-id]"/>
           </select>
           <where>
             <condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/>
           </where>
           <orderBy>
             <node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/>
           </orderBy>
         </queryDef>).ExecuteQuery()
    
  • La diffusion qui a eu le meilleur taux d'ouverture est dupliquée.

    code language-none
     // create a new delivery object and initialize it by doing a copy of
     // the winner delivery
    var delivery = nms.delivery.create()
    delivery.Duplicate("nms:delivery|" + winner.@id)
    
  • Le libellé de la diffusion dupliquée est modifié en y ajoutant le terme final.

    code language-none
    // append 'final' to the delivery label
    delivery.label = winner.@label + " final"
    
  • La diffusion est copiée dans le tableau de bord de l'opération.

    code language-none
    // link the delivery to the operation to make sure it will be displayed in
    // the campaign dashboard. This attribute needs to be set manually here since
    // the Duplicate() method has reset it to its default value => 0
    delivery.operation_id = winner.@["operation-id"]
    delivery.workflow_id = winner.@["workflow-id"]
    
    code language-none
    // adjust some delivery parameters to make it compatible with the
    // "Prepare and start" option selected in the Delivery tab of this activity
    delivery.scheduling.validationMode = "manual"
    delivery.scheduling.delayed = 0
    
  • La diffusion est enregistrée dans la base.

    code language-none
    // save the delivery in database
    delivery.save()
    
  • L'identifiant unique de la diffusion dupliquée est stockée dans la variable du workflow.

    code language-none
    // store the new delivery Id in event variables
    vars.deliveryId = delivery.id
    

Autres critères de sélection other-selection-criteria

L'exemple présenté ci-dessus permet de sélectionner le contenu d'une diffusion en fonction du taux d'ouverture des emails. Vous pouvez l'adapter pour vous baser sur d'autres indicateurs propres aux diffusions :

  • Meilleur taux de clic publicitaire :[indicators/@recipientClickRatio],
  • Meilleure réactivité (email ouvert et clics dans le message) : [indicators/@reactivity],
  • Taux de plainte le plus bas : [indicators/@refusedRatio] (mettre la valeur « false » pour l’attribut sortDesc),
  • Meilleur taux de conversion : [indicators/@transactionRatio];
  • Nombre de pages web visitées suite à la réception d'un message : [indicators/@totalWebPage],
  • Taux de désinscription le plus bas : [indicators/@optOutRatio],
  • Montant des transactions : [indicators/@amount].

Vous pouvez maintenant définir la diffusion finale. En savoir plus.

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1