如何将处理来自 Twilio 函数的调用传递回 Twilio Studio 流程?

How to pass procesing a call from Twilio functions back to Twilio Studio flow?

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

你们知道我错过了什么吗?

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

它看起来很古怪,但该页面让您使用虚拟 "play/say" 小部件附加到 "run function" 小部件的成功转换,并使用 "FlowEvent=audioComplete" 继续您的流程。

mike 所说的对我有用,只需确保在 Twilio Studio 上调用函数后连接 "play/say" 并将其配置为 "Say a Message" 并将 "Text to Say" 留空。

在函数端使用:

twiml.redirect('https://webhooks.twilio.com/v1/Accounts/AC.../Flows/FW...?FlowEvent=audioComplete');

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

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

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

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

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

将参数传递给您的函数