如何将处理呼叫从Twilio函数传递回Twilio Studio流?

时间:2019-04-12 14:57:44

标签: twilio twilio-functions twilio-studio

我试图将工作室流程的某些部分迁移到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。

你们知道我想念什么吗?

3 个答案:

答案 0 :(得分:1)

在这里添加另一个答案,因为其他两个似乎不正确(不再正确?)。

为了在调用函数后返回活动流,您必须使用 TwiML Redirect widget 而不是 Run Function 小部件,并且您必须在重定向回来时将 ?FlowEvent=return 附加到您的流 webhook URL完成外部逻辑后转到 Studio。有关详细信息,请参阅链接的文档页面。

在重定向之前,您可以根据需要进行任意多轮 TwiML,因为 Studio 流会一直挂到调用(以及该调用在流中的位置)直到调用结束,即使它不再直接控制它.

要使用 TwiML 重定向小部件而不是运行函数,您需要做的就是手动获取您的函数 URL 并自行配置,而不是让运行函数小部件为您生成它。您可以通过使用液体变量将参数作为 URI 参数在 URL 字符串中编码,然后使用 GET 方法而不是 POST 将参数传递给您的函数。

答案 1 :(得分:0)

看看https://support.twilio.com/hc/en-us/articles/360019580493-Using-Twilio-Functions-to-Enhance-Studio-Voice-Calls-with-Custom-TwiML上的页面。

它看起来很古怪,但是在该页面上,您使用了一个虚拟的“播放/说”小部件,该部件附加到“运行功能”小部件的成功过渡,并使用“ FlowEvent = audioComplete”继续进行操作。

答案 2 :(得分:0)

迈克所说的对我有用,只需确保在Twilio Studio上的函数调用后连接一个“播放/说”,并将其配置为“说一条消息”,然后将“要说的文本”留空。

在功能方面,只需使用:

prod_dict = json.loads(str(product))

我仍然没有将变量用作URL参数方法。