[英]Twilio Flex - Send Call To IVR After Reject
使用 此插件作为参考,我将 Flex 配置为能够在座席接受呼叫后向 Twilio Studio IVR 发送呼叫。
我希望能够在座席拒绝呼叫时(即他们一单击拒绝按钮)将来电发送回 Studio。 我试图通过向插件的init
方法添加一个侦听器来做到这一点:
flex.Actions.addListener("afterRejectTask", async (payload, abortFunction) => {
let url: string = payload.task.attributes.transferToIvrUrl;
let menu: string = 'hangup';
await request(url, { CallSid: payload.sid, menu });
});
有关完整上下文,请参见此处——我几乎使用了那个确切的代码,并添加了这个侦听器。
我收到此错误消息,并且呼叫未转移到任何地方。
twilio-flex.unbundled-react.min.js:1574 Error on afterRejectTask: SyntaxError: Unexpected token < in JSON at position 0
如果有帮助,这是来自控制台的其他上下文:
附加信息:
被请求的 url 是一个 Twilio function,成功返回这样的响应:
<Response>
<Enqueue workflowSid="WWcc1a650e4175089538d754a6c2e15a98">
<Task>{"transferToIvrUrl": "https://my-twilio-function-service.twil.io/studio-flex-transfer-helper"}</Task>
</Enqueue>
</Response>
任何意见,将不胜感激。
啊,好吧,所以看着那个插件,我找到了可以使用它的示例 Twilio Function 。 据我所知,这个 function 旨在用于两个地方,要么在 Studio 中将呼叫转接到 Flex(尽管我不确定是否需要这样做),要么从 Flex 将呼叫转回 Studio。 触发不同响应的是您是否在请求中传递了一个名为transferToIVRMenu
的参数。
您当前的请求未传递该参数,您目前拥有:
await request(url, { CallSid: payload.sid, menu });
这看起来类似于原始插件的请求:
await request(transferToIvrUrl, { CallSid: call_sid, transferToIVRMenu });
不同之处在于 object 中的第二个属性。当您仅在 object 中传递变量名称时,它会扩展为调用与变量同名的属性并将值设置为变量内的值。 因此,原始请求扩展为:
await request(transferToIvrUrl, { CallSid: call_sid, transferToIVRMenu: transferToIVRMenu });
但您的要求仅扩展为:
await request(url, { CallSid: payload.sid, menu: menu });
因此,您传递的参数不是transferToIVRMenu
,而是一个名为menu
的参数,它会触发后端的 Function 返回 TwiML 而不是更新调用。
要解决此问题,您可以更新插件代码以发送transferToIVRMenu
参数,例如:
flex.Actions.addListener("afterRejectTask", async (payload, abortFunction) => {
let url: string = payload.task.attributes.transferToIvrUrl;
let menu: string = 'hangup';
await request(url, { CallSid: payload.sid, transferToIVRMenu: menu });
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.