[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
-
Öppna din JavaScript code-aktivitet.
-
Kopiera skriptet som finns i Exempel på ett skript till JavaScript code-fönstret.
-
Ange skriptets namn i fältet Label, dvs.
code language-none <%= vars.deliveryId %>
-
Stäng aktiviteten JavaScript code.
-
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.