【问题标题】:Twilio Autopilot FieldsTwilio 自动驾驶仪字段
【发布时间】:2019-09-14 06:50:20
【问题描述】:

我想我一定错过了一些简单的东西。我正在尝试找到一种在任务中创建条件收集语句的方法。

我创建了一个简单的 Autopilot 任务,它要求赠送金额 (gift_amount)。在训练屏幕中,我将其中一个短语设置为“Give {gift_amount}”。所以有人应该能够说“给”,然后它会要求一个金额。或者,他们可以说“给 10”,它应该跳过询问金额。但它似乎总是要求金额,即使我在灵态中给出。这是我创建的任务代码。

{
  "actions": [
    {
      collect": {
    	"name": "gift_amount",
    	"questions": [
    	  {
    	    "question": "Thank for your generosity. How much would you like to give?",
            "name": "gift_amount",
            "type": "Twilio.NUMBER"
    	  }
    	],
    	"on_complete": {
    	  "redirect": {
            "method": "POST",
            "uri": "https://webhook.site"
    	  }
    	}
      }
    }
  ]
}

【问题讨论】:

  • 另见预填充:@​​987654321@

标签: twilio


【解决方案1】:

根据文档,格式与之前给出的答案不同。

https://www.twilio.com/blog/intelligent-coffee-order-system-with-twilio-autopilot

这是有效的:

exports.handler = function(context, event, callback) {
   let actions = [];
   console.log(event.CurrentTask);
   console.log(event.Field_gift_amount_Value);
   let giftAmount = event.Field_gift_amount_Value;
   const response = {
       actions: []
   }
   if (giftAmount) {
       response.actions.push({ "say": "Thanks for donating!"});
   } else {
       response.actions.push({ "say": "Cheapskate!"});
   }
   callback(null, response);
}

【讨论】:

    【解决方案2】:

    欢迎来到 Stackoverflow!我在 Twilio 工作。

    我认为您可以通过Dynamic Action 完成您要查找的内容。您可以使用redirect 调用Twilio function,而不是在编辑器中使用静态 JSON,这将根据上下文返回不同的操作 JSON。

    您的操作应该类似于:

    {
        "actions": [
            {
                "redirect": "https://random-string-1234.twilio.com/functionname"
            }
        ]
    }
    

    在您的 Twilio 函数中,您可以检查金额是否已被收取。请注意,此代码未经测试,可能有拼写错误:

    exports.handler = function(context, event, callback) {
        let actions = [];
    
        let giftAmount = event.Field_gift_amount_Value;
    
        if (giftAmount) {
            actions.push({ "say": "Thanks for donating!"});
        } else {
            actions.push({ "collect" : { ... Collect JSON here }});
        }
    
        callback(null, { actions });
    }
    

    【讨论】:

    • 看起来 event.Memory 不包含“collected_data”对象。但是可以使用“event.CurrentTask”或“event.Field_custom_field_Value”访问表单发布参数。
    • @JeffDoolittle 感谢您的跟踪 - 我也更新了我的代码示例。
    • 谢谢@CharlieWeems
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多