在 sipml5 调用 asterisk 期间可以听到 Early Media/Ringtone 吗?

Can Early Media/Ringtone be heard during sipml5 call to asterisk?

当我从使用 sipml5 注册的分机呼叫我的星号分机时。通话接通后我可以听到声音。但听不到 ringtone/early 媒体。

谁能想到在从 sipml5 注册分机呼叫 asterisk 时听到铃声。

总的来说,答案是肯定的。但是,您需要以某种形式从拨号方案中控制它。例如,让我们检查以下拨号方案:

exten => 1000,1,Noop(*** Starting call to extension 1000 ***)
same  =>      n,Progress()
same  =>      n,Wait(3)
same  =>      n,Answer()
same  =>      n,Wait(1)
same  =>      n,Playback(demo-congrats)
same  =>      n,hangup()

以上将在 Asterisk 端生成进度音并将它们发送到您的 SIPML 客户端。从 SIP 的角度来看,您希望生成 SIP 183,而不是 SIP 180。如果您直接通过 Asterisk 进行路由,从一个分机到另一个分机,您需要执行以下操作:

exten => 1000,1,Noop(*** Starting call to extension 1000 ***)
same  =>      n,Dial(SIP/1000,45,r)

拨号的"r"参数会产生本地铃声。如果您拨打远程运营商,您应该执行以下操作:

exten => _NXXXXXX,1,Noop(*** Starting call to extension 1000 ***)
same  =>      n,Dial(SIP/carrier/${EXTEN},45,R)

只要远程运营商还没有为早期媒体发送 SIP 183,就会导致 Asterisk 产生铃声。

通过编辑 sip conf 值可以在没有应答的情况下播放早期媒体。

1) 将“prematuremedia”参数设置为“no” 2) 将“progressinband”参数设置为'never'

然后在拨号计划开始时给出 Progress() 命令,然后是 Playback (demo-congrats,noanswer) 将在来电方播放音频。