[También se aplica a v8]{class="badge positive" title="También se aplica a Campaign v8"}
Prueba A/B: creación del script step-5--creating-the-script
La elección del contenido de entrega destinado a la población restante se calcula mediante una secuencia de comandos. Esta secuencia de comandos recupera la información relativa a la entrega con la mayor tasa de apertura y copia el contenido en la entrega final.
Ejemplo de un script example-of-a-script
El siguiente script se puede utilizar como se encuentra en el flujo de trabajo de direccionamiento. Para obtener más información, consulte esta sección.
// 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
Para ver un ejemplo detallado de un script, consulte esta sección.
Implementación implementation
-
Abra la actividad JavaScript code.
-
Copie la secuencia de comandos ofrecida en Ejemplo de secuencia de comandos en la ventana JavaScript code.
-
En el campo Label, introduzca el nombre de la secuencia de comandos, por ejemplo.
code language-none <%= vars.deliveryId %>
-
Cierre la actividad JavaScript code.
-
Guarde el flujo de trabajo.
Detalles del script details-of-the-script
En esta sección se detallan las distintas partes de la secuencia de comandos y su modo operativo.
-
La primera parte de la secuencia de comandos es una consulta. El comando queryDef permite recuperar desde la tabla NmsDelivery los envíos creados ejecutando el flujo de trabajo objetivo y ordenarlos en función de su tasa estimada de apertura. A continuación, se recupera la información de la entrega con la mayor tasa de apertura.
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()
-
Se duplica la entrega con la mayor tasa de apertura.
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)
-
La etiqueta de la entrega duplicado se modifica y la palabra final se añade a ella.
code language-none // append 'final' to the delivery label delivery.label = winner.@label + " final"
-
La entrega se copia en el tablero de campañas.
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
-
La entrega se guarda en la base de datos.
code language-none // save the delivery in database delivery.save()
-
El identificador único de la entrega duplicado se almacena en la variable del flujo de trabajo.
code language-none // store the new delivery Id in event variables vars.deliveryId = delivery.id
Otros criterios de selección other-selection-criteria
El ejemplo de arriba permite seleccionar el contenido de una entrega según la tasa de apertura de los correos electrónicos. Se puede adaptar para que poder basarse en otros indicadores específicos de entrega:
- Mejor rendimiento de los clics:
[indicators/@recipientClickRatio]
, - Tasa máxima de reacción (correo electrónico abierto y clics en el mensaje):
[indicators/@reactivity]
, - Tasa de quejas más baja:
[indicators/@refusedRatio]
(utilice el valor falso para el atributo sortDesc), - Tasa máxima de conversión:
[indicators/@transactionRatio]
, - Número de páginas visitadas después de la recepción de un mensaje:
[indicators/@totalWebPage]
, - Tasa mínima de cancelación de suscripciones:
[indicators/@optOutRatio]
, - Cantidad de transacciones:
[indicators/@amount]
.
Ahora puede definir la entrega final. Más información.