[也适用于v8]{class="badge positive" title="也适用于Campaign v8"}

AB测试:创建脚本 step-5--creating-the-script

由脚本计算预定用于剩余群体的投放内容的选择。 此脚本可恢复有关打开率最高的投放的信息,并将内容复制到最终投放中。

脚本示例 example-of-a-script

以下脚本可在定位工作流中按原样使用。 如需详细信息,请参阅此小节

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

有关脚本的详细说明,请参阅 本节.

实现 implementation

  1. 打开您的 JavaScript code 活动。

  2. 复制中提供的脚本 脚本示例JavaScript code 窗口。

  3. Label 字段中,输入脚本的名称,即

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

  4. 关闭 JavaScript code 活动。

  5. 保存您的工作流。

脚本的详细信息 details-of-the-script

此部分详细介绍脚本的各个部分及其操作模式。

  • 脚本的第一部分是查询。 此 queryDef 命令允许您从 NmsDelivery 对通过执行定位工作流创建的投放进行表,并根据预计的打开率对它们进行排序,然后恢复打开率最高的投放中的信息。

    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()
    
  • 将复制打开率最高的投放。

    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)
    
  • 已复制投放的标签已修改,并且单词 最终 会添加到其中。

    code language-none
    // append 'final' to the delivery label
    delivery.label = winner.@label + " final"
    
  • 投放将会复制到活动仪表板中。

    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
    
  • 投放将保存在数据库中。

    code language-none
    // save the delivery in database
    delivery.save()
    
  • 重复投放的唯一标识符存储在工作流变量中。

    code language-none
    // store the new delivery Id in event variables
    vars.deliveryId = delivery.id
    

其他选择标准 other-selection-criteria

以上示例允许您根据电子邮件打开率选择投放的内容。 您可以根据其他特定于投放的指标对其进行调整:

  • 最佳点击吞吐量: [indicators/@recipientClickRatio]
  • 最高反应率(电子邮件打开数和邮件点击数): [indicators/@reactivity]
  • 最低投诉率: [indicators/@refusedRatio] (对sortDesc属性使用false值),
  • 最高转化率: [indicators/@transactionRatio]
  • 收到消息后访问的页面数: [indicators/@totalWebPage]
  • 最低退订率: [indicators/@optOutRatio]
  • 交易金额: [indicators/@amount].

您现在可以定义最终投放。 了解详情

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