1

我有一些使用 NodeJS 进行呼叫筛选的工作代码,这些代码是我从官方 twilio 示例中修改的。

片段:

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.

执行此操作的最合适方法是执行 a<Redirect>而不是<Hangup/>然后<Hangup/>在重定向中执行?或者我应该statusCallback在原来的拨号盘上有一个地方并引用呼叫 ID?

在考虑在这里写出问题的可能性时,我可能已经发现了一个可行的解决方案(我会尝试一下),但我仍然想听听最佳实践方法。

4

1 回答 1

2

正如您所建议的,您应该将 替换<Hangup><Redirect>/twilio/voice/miss?foo=bar</Redirect>. 超时到期后(默认为 5 秒,但可通过timeoutGather 动词的属性进行配置),如果没有收到输入,它将转到下一条指令。

来自Twilio 文档<Gather>

如果在超时之前没有收到任何输入,则进入 TwiML 文档中的下一个动词。

在您重定向到的 URL 中,您可以记录未收集任何输入并返回您喜欢的任何 TwiML 以继续处理呼叫或返回空<Response></Response>(或挂断)以结束呼叫。

StatusCallback 仅在调用完成时使用,不能执行进一步的 TwiML 指令。

于 2013-07-30T18:36:38.207 回答