讀者通過(guò)SIP-SDP經(jīng)典示例-呼叫等待是如何實(shí)現的-關(guān)于Call Hold-呼叫等待處理流程-RFC2543和RFC3264兼容性處理,可能已經(jīng)了解了呼叫等待的過(guò)程。其實(shí),音樂(lè )等待是一個(gè)呼叫等待的高級功能或者一個(gè)高級的呼叫等待,只是在呼叫等待過(guò)程中,IPPBX對等待發(fā)進(jìn)行了一段語(yǔ)音播放,等另外一方摁了Hold鍵以后,雙方的SDP重新協(xié)商,IPPBX停止了音樂(lè )播放,然后重新創(chuàng )建雙方之間的直接RTP流。以下的圖例說(shuō)明了呼叫等待的簡(jiǎn)單流程,我們這里再回顧一下。

在IPPBX或者B2BUA環(huán)境中,特別是基于開(kāi)源的Asterisk或者FreeSWITCH開(kāi)發(fā)的通信服務(wù)中,用戶(hù)可以非常靈活自定義很多的音樂(lè )文件或者語(yǔ)音文件,支持了非常豐富的特性。如果讀者有興趣的話(huà),可以閱讀筆者關(guān)于
最常用的18個(gè)SIP呼叫業(yè)務(wù)流程詳解完整版,此文章中介紹了關(guān)于呼叫等待,音樂(lè )等待等關(guān)于SDP交互的詳解流程。
在音樂(lè )等待過(guò)程中,音樂(lè )等待同時(shí)結合了IPPBX自定義的音樂(lè )播放實(shí)現了對等待方的處理。讀者可以參考:SIP講座系列-關(guān)于音樂(lè )等待中的SDP變化。以下圖例說(shuō)明了MOH的處理流程。這里用戶(hù)特別注意SDP中的a行參數的變化。

觸發(fā)了呼叫等待,開(kāi)始執行MoH音樂(lè )等待。系統然后停止音樂(lè )等待,重新創(chuàng )建RTP流,雙方重啟呼叫,a行參數發(fā)生了變化,重新設置為sendrecv, 雙方都能支持發(fā)送和接收RTP語(yǔ)音流。

如果讀者需要深入了解MOH的規范流程,可以參考RFC7088。
參考資料:
https://www.rfc-editor.org/rfc/rfc7088.html
www.asterisk.org.cn
www.asterisk.org
www.dinstar.cn