[Ook van toepassing op v8]{class="badge positive" title="Ook van toepassing op campagne v8"}

AB testen: het script maken step-5--creating-the-script

De keus van de leveringsinhoud die voor de resterende bevolking wordt bestemd wordt berekend door een manuscript. Met dit script wordt de informatie over de levering met de hoogste snelheid van het openen hersteld en wordt de inhoud naar de uiteindelijke levering gekopieerd.

Voorbeeld van een script example-of-a-script

Het volgende script kan worden gebruikt zoals in de doelworkflow. Raadpleeg deze sectie voor meer informatie.

 // 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

Voor een gedetailleerde uitleg van het script raadpleegt u deze sectie.

Implementatie implementation

  1. Open uw JavaScript code activiteit.

  2. Het aangeboden script kopiëren in Voorbeeld van een script in de JavaScript code venster.

  3. In de Label Voer de naam van het script in, dus

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

  4. Sluit het dialoogvenster JavaScript code activiteit.

  5. Sla uw workflow op.

Details van het script details-of-the-script

In deze sectie worden de verschillende delen van het script en de bijbehorende uitvoermodus beschreven.

  • Het eerste deel van het script is een query. De queryDef kunt u herstellen vanaf de NmsDelivery de leveringen die worden gemaakt door de doelworkflow uit te voeren en deze te sorteren op basis van hun geschatte openingssnelheid, waarna de informatie uit de levering met de hoogste openingsfrequentie wordt hersteld.

    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()
    
  • De levering met de hoogste snelheid van opent wordt gedupliceerd.

    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)
    
  • Het label van de gedupliceerde levering wordt gewijzigd en het woord final wordt toegevoegd.

    code language-none
    // append 'final' to the delivery label
    delivery.label = winner.@label + " final"
    
  • De levering wordt gekopieerd naar het campagnedashboard.

    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
    
  • De levering wordt opgeslagen in de database.

    code language-none
    // save the delivery in database
    delivery.save()
    
  • De unieke id van de gedupliceerde levering wordt opgeslagen in de workflowvariabele.

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

Andere selectiecriteria other-selection-criteria

In het bovenstaande voorbeeld kunt u de inhoud van een levering selecteren op basis van de snelheid waarmee e-mails worden geopend. U kunt het aanpassen om zich op andere levering-specifieke indicatoren te baseren:

  • Best geklikt doorvoer: [indicators/@recipientClickRatio],
  • Hoogste reactiviteitspercentage (e-mail geopend en klik in het bericht): [indicators/@reactivity],
  • Laagste klachtenpercentage: [indicators/@refusedRatio] (gebruik de false-waarde voor het kenmerk sortDesc),
  • Hoogste omrekeningskoers: [indicators/@transactionRatio],
  • Aantal bezochte pagina's na ontvangst van een bericht: [indicators/@totalWebPage],
  • Laagste abonnement: [indicators/@optOutRatio],
  • Transactiebedrag: [indicators/@amount].

U kunt nu de uiteindelijke levering definiëren. Meer informatie.

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