[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

  1. Öffnen Sie die JavaScript-Code-Aktivität.

  2. Kopieren Sie das in Script-Beispiel angebotene Script in das Fenster JavaScript-Code.

  3. Geben Sie im Feld Titel den Script-Titel ein, d. h.

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

  4. Schließen Sie die JavaScript-Code-Aktivität.

  5. 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.

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