[Gäller även för v8]{class="badge positive" title="Gäller även Campaign v8"}

AB-testning: Skapa skriptet step-5--creating-the-script

Valet av leveransinnehåll som är avsett för den återstående populationen beräknas av ett skript. Det här skriptet återställer information om leveransen med det högsta antalet öppningar och kopierar innehållet till den slutliga leveransen.

Exempel på ett skript example-of-a-script

Följande skript kan användas på samma sätt som i målarbetsflödet. Mer information om detta finns i det här avsnittet.

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

En detaljerad förklaring av skriptet finns i det här avsnittet.

Implementering implementation

  1. Öppna din JavaScript code-aktivitet.

  2. Kopiera skriptet som finns i Exempel på ett skript till JavaScript code-fönstret.

  3. Ange skriptets namn i fältet Label, dvs.

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

  4. Stäng aktiviteten JavaScript code.

  5. Spara arbetsflödet.

Information om skriptet details-of-the-script

I det här avsnittet beskrivs de olika delarna av skriptet och deras operativsystem.

  • Den första delen av skriptet är en fråga. Med kommandot queryDef kan du från tabellen NmsDelivery återställa leveranser som skapats genom att målinriktningsarbetsflödet har körts och sortera dem baserat på deras beräknade öppningsfrekvens. Informationen från leveransen med den högsta öppningsfrekvensen återställs.

    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()
    
  • Leveransen med den högsta öppningsfrekvensen dupliceras.

    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)
    
  • Etiketten för den duplicerade leveransen ändras och ordet final läggs till i den.

    code language-none
    // append 'final' to the delivery label
    delivery.label = winner.@label + " final"
    
  • Leveransen kopieras till kampanjinstrumentpanelen.

    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
    
  • Leveransen sparas i databasen.

    code language-none
    // save the delivery in database
    delivery.save()
    
  • Den unika identifieraren för den duplicerade leveransen lagras i arbetsflödesvariabeln.

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

Andra urvalskriterier other-selection-criteria

I exemplet ovan kan du välja innehållet i en leverans baserat på öppningshastigheten för e-postmeddelanden. Du kan anpassa den efter andra leveransspecifika indikatorer:

  • Bästa klickgenomströmning: [indicators/@recipientClickRatio],
  • Högsta reaktivitetsfrekvens (öppna e-post och klicka i meddelandet): [indicators/@reactivity],
  • Lägsta antal klagomål: [indicators/@refusedRatio] (använd värdet false för attributet sortDesc),
  • Högsta konverteringsfrekvens: [indicators/@transactionRatio],
  • Antal sidor som besökts efter att ett meddelande tagits emot: [indicators/@totalWebPage],
  • Lägsta prenumerationshastighet: [indicators/@optOutRatio],
  • Transaktionsbelopp: [indicators/@amount].

Nu kan du definiera den slutliga leveransen. Läs mer.

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