Skript erstellen

Die Auswahl der Inhaltsversion, die an die verbleibende Population gesendet wird, erfolgt mithilfe eines Skripts. Das Skript ruft die Information bezüglich der höchsten Öffnungsrate ab und kopiert den Inhalt der Siegerversion in den endgültigen Versand.

Skript-Beispiel

Das folgende Skript 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 Skripts finden Sie in diesem Abschnitt.

Implementierung

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

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

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

    <%= vars.deliveryId %>
    

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

  5. Speichern Sie den Workflow.

Skript-Details

Im Folgenden werden die verschiedenen Skript-Abschnitte und deren Funktionsweise erläutert.

  • Der erste Abschnitt des Skripts 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.

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

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

    // append 'final' to the delivery label
    delivery.label = winner.@label + " final"
    
  • Der Versand wird in das Kampagnen-Dashboard kopiert.

    // 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
    
  • Der Versand wird in der Datenbank gespeichert.

    // save the delivery in database
    delivery.save()
    
  • Die eindeutige Kennung des duplizierten Versands wird in der Workflow-Variable gespeichert.

    // store the new delivery Id in event variables
    vars.deliveryId = delivery.id
    

Andere Auswahlkriterien

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

Auf dieser Seite