读者通过SIP-SDP经典示例-呼叫等待是如何实现的-关于Call Hold-呼叫等待处理流程-RFC2543和RFC3264兼容性处理,可能已经了解了呼叫等待的过程。其实,音乐等待是一个呼叫等待的高级功能或者一个高级的呼叫等待,只是在呼叫等待过程中,IPPBX对等待发进行了一段语音播放,等另外一方摁了Hold键以后,双方的SDP重新协商,IPPBX停止了音乐播放,然后重新创建双方之间的直接RTP流。以下的图例说明了呼叫等待的简单流程,我们这里再回顾一下。
![](http://www.ctiforum.com/uploadfile/2021/1115/20211115094018455.jpg)
在IPPBX或者B2BUA环境中,特别是基于开源的Asterisk或者FreeSWITCH开发的通信服务中,用户可以非常灵活自定义很多的音乐文件或者语音文件,支持了非常丰富的特性。如果读者有兴趣的话,可以阅读笔者关于
最常用的18个SIP呼叫业务流程详解完整版,此文章中介绍了关于呼叫等待,音乐等待等关于SDP交互的详解流程。
在音乐等待过程中,音乐等待同时结合了IPPBX自定义的音乐播放实现了对等待方的处理。读者可以参考:SIP讲座系列-关于音乐等待中的SDP变化。以下图例说明了MOH的处理流程。这里用户特别注意SDP中的a行参数的变化。
![](http://www.ctiforum.com/uploadfile/2021/1115/20211115094018754.jpg)
触发了呼叫等待,开始执行MoH音乐等待。系统然后停止音乐等待,重新创建RTP流,双方重启呼叫,a行参数发生了变化,重新设置为sendrecv, 双方都能支持发送和接收RTP语音流。
![](http://www.ctiforum.com/uploadfile/2021/1115/20211115094018998.jpg)
如果读者需要深入了解MOH的规范流程,可以参考RFC7088。
参考资料:
https://www.rfc-editor.org/rfc/rfc7088.html
www.asterisk.org.cn
www.asterisk.org
www.dinstar.cn