Twilio自动驾驶仪字段

时间:2019-09-05 17:04:53

标签: twilio

我想我这里一定缺少简单的东西。我正在尝试找到一种在任务中创建条件收集语句的方法。

我创建了一个简单的自动驾驶任务,该任务要求提供礼物金额(礼物金额)。在训练屏幕中,我将短语之一设置为“ 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"
    	  }
    	}
      }
    }
  ]
}

2 个答案:

答案 0 :(得分:0)

欢迎来到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 });
}

答案 1 :(得分:0)

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

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);
}