我试图将工作室流程的某些部分迁移到Twilio Functions
,而不是全部,但是当我尝试将其重定向回工作室流程时,Twilio死于错误400或挂断电话。
我正在尝试以下代码:
exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
//twiml.doWhatINeed();
twiml.redirect('https://webhooks.twilio.com/v1/Accounts/AC.../Flows/FW...?FlowEvent=success');
callback(null, twiml);
};
我希望它能继续在成功分支上进行录音室工作,但是电话挂断了。我也尝试省略FlowEvent
,但这并不好。
当我输入无效的FlowEvent
(如helicopter
)时,会收到错误400。
你们知道我想念什么吗?
答案 0 :(得分:1)
在这里添加另一个答案,因为其他两个似乎不正确(不再正确?)。
为了在调用函数后返回活动流,您必须使用 TwiML Redirect widget 而不是 Run Function 小部件,并且您必须在重定向回来时将 ?FlowEvent=return
附加到您的流 webhook URL完成外部逻辑后转到 Studio。有关详细信息,请参阅链接的文档页面。
在重定向之前,您可以根据需要进行任意多轮 TwiML,因为 Studio 流会一直挂到调用(以及该调用在流中的位置)直到调用结束,即使它不再直接控制它.
要使用 TwiML 重定向小部件而不是运行函数,您需要做的就是手动获取您的函数 URL 并自行配置,而不是让运行函数小部件为您生成它。您可以通过使用液体变量将参数作为 URI 参数在 URL 字符串中编码,然后使用 GET 方法而不是 POST 将参数传递给您的函数。
答案 1 :(得分:0)
它看起来很古怪,但是在该页面上,您使用了一个虚拟的“播放/说”小部件,该部件附加到“运行功能”小部件的成功过渡,并使用“ FlowEvent = audioComplete”继续进行操作。
答案 2 :(得分:0)
迈克所说的对我有用,只需确保在Twilio Studio上的函数调用后连接一个“播放/说”,并将其配置为“说一条消息”,然后将“要说的文本”留空。
在功能方面,只需使用:
prod_dict = json.loads(str(product))
我仍然没有将变量用作URL参数方法。