我的目标
将来电直接传递给 Stasis,并允许应用决定是否向来电者播放振铃音或忙音。
问题
在我的 ARI 应用程序中,如果我在拨号方案中省略了same => n,Ringing
线路,如果呼叫者挂断,Stasis 应用程序会返回错误。channel.play()
在我通过 ARI传递命令之前,我可以在没有任何早期媒体的情况下挂断电话。
此解决方案有 2 个问题:
- 当呼叫者挂断时,Stasis 应用程序会收到第二个 StasisStart,并返回
Channel not found
错误。 - 没有命令
channel.busy
有没有人有什么建议?
我目前可以看到的唯一选择是确保所有用户都有语音邮件并且永远不会播放忙音。不是每个人都想要/喜欢语音邮件,并且在来电者不知道他们的电话已接通的情况下接听电话并播放忙音是不道德的。
更新
使用以下拨号方案,我可以让它以所需的方式工作(如果用户不可用,则对用户播放忙碌),但出现错误:
extensions.conf
[public]
exten => _.,1,NoOp()
same => n,Stasis(myStasisApp, ${SIP_HEADER(to)})
same => n,Busy(10)
same => n,Hangup()
myApp.js
// The user is available
channel.ring();
// The user is busy
channel.continueInDialplan();
错误
当呼叫者挂断时发送另一个 StasisStart,然后是:
Unhandled rejection Error: {
"message": "Channel not found"
}