我有一些使用NodeJS进行呼叫筛选的工作代码,我从官方的twilio示例中进行了修改。
SNIPPIT:
response += ""
+ '<Response><Gather action="/twilio/voice/connect' + search + '" finishOnKey="any digit" numDigits="1">'
+ '<Say>Press any key to accept this call</Say>'
+ '</Gather>'
// TODO instead of hanging up, redirect to voicemail?
// otherwise it's left to the fallback url to pickup the voicemail and that takes a while
+ '<Hangup/>'
+ '</Response>'
;
如果筛选成功完成,我会收到/twilio/voice/connect?foo=bar
的回电。
如果筛选失败,我还希望回复/twilio/voice/miss?foo=bar
。
最合适的方法是执行<Redirect>
而不是<Hangup/>
,然后在重定向中执行<Hangup/>
吗?或者我应该在原始拨号盘中的某处statusCallback
并引用呼叫ID?
在考虑在这里写出问题的可能性时,我可能已经发现了一个有效的解决方案(我会去尝试),但我仍然希望听到最佳实践方法。
答案 0 :(得分:2)
根据您的建议,您应该将<Hangup>
替换为<Redirect>/twilio/voice/miss?foo=bar</Redirect>
。超时到期后(默认为5秒,但可以通过Gather动词的timeout
属性进行配置),如果没有收到任何输入,它将转到下一条指令。
如果在超时之前没有收到任何输入,则转到TwiML文档中的下一个动词。
在您重定向到的URL中,您可以记录没有收集任何输入并返回您希望继续处理呼叫的任何TwiML,或返回空<Response></Response>
(或挂断)以结束呼叫。
StatusCallback仅在调用完成时使用,不能再执行TwiML指令。