[Gilt auch für v8]{class="badge positive" title="Gilt auch für Campaign v8"}
A/B-Tests: Erstellen des Skripts step-5--creating-the-script
Die Auswahl der Inhaltsversion, die an die verbleibende Population gesendet wird, erfolgt mithilfe eines Scripts. Das Script ruft die Information bezüglich der höchsten Öffnungsrate ab und kopiert den Inhalt der Siegerversion in den endgültigen Versand.
Script-Beispiel example-of-a-script
Das folgende Script kann wie im Zielgruppenbestimmungs-Workflow verwendet werden. Weiterführende Informationen hierzu finden Sie in diesem Abschnitt.
// 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
Eine detaillierte Erklärung des Scripts finden Sie in diesem Abschnitt.
Implementierung implementation
-
Öffnen Sie die JavaScript-Code-Aktivität.
-
Kopieren Sie das in Script-Beispiel angebotene Script in das Fenster JavaScript-Code.
-
Geben Sie im Feld Titel den Script-Titel ein, d. h.
code language-none <%= vars.deliveryId %>
-
Schließen Sie die JavaScript-Code-Aktivität.
-
Speichern Sie den Workflow.
Script-Details details-of-the-script
Im Folgenden werden die verschiedenen Script-Abschnitte und deren Funktionsweise erläutert.
-
Der erste Abschnitt des Scripts ist eine Abfrage. Mit dem queryDef-Befehl werden aus der Tabelle NmsDelivery die durch die Ausführung des Workflows erstellten Sendungen abgerufen und nach ihren geschätzten Öffnungsraten geordnet. Im Anschluss werden die Informationen des Versands abgerufen, der die beste Öffnungsrate erzielt hat.
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()
-
Der Versand mit der besten Öffnungsrate wird dupliziert.
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)
-
Der Titel des duplizierten Versands wird durch Hinzufügung von final angepasst.
code language-none // append 'final' to the delivery label delivery.label = winner.@label + " final"
-
Der Versand wird in das Kampagnen-Dashboard kopiert.
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
-
Der Versand wird in der Datenbank gespeichert.
code language-none // save the delivery in database delivery.save()
-
Die eindeutige Kennung des duplizierten Versands wird in der Workflow-Variable gespeichert.
code language-none // store the new delivery Id in event variables vars.deliveryId = delivery.id
Andere Auswahlkriterien other-selection-criteria
Im zuvor dargestellten Beispiel wird die endgültige Version anhand der Öffnungsraten der Testversionen bestimmt. Es besteht jedoch die Möglichkeit, andere Kriterien zu verwenden und das Script entsprechend anzupassen:
- Höchste Klickrate:
[indicators/@recipientClickRatio]
, - Höchste Reaktionsrate (Öffnung der E-Mail und Klicks in der Nachricht):
[indicators/@reactivity]
, - Niedrigste Beschwerderate:
[indicators/@refusedRatio]
(Attribut sortDesc auf „false“ setzen), - Höchste Konversionsrate:
[indicators/@transactionRatio]
, - Höchste Anzahl an besuchten Webseiten nach Erhalt der Nachricht:
[indicators/@totalWebPage]
, - Niedrigste Abmelderate:
[indicators/@optOutRatio]
, - Höchster Gesamtumsatz infolge des Erhalts der Nachricht:
[indicators/@amount]
.
Jetzt können Sie den endgültigen Versand definieren. Weitere Informationen.