因此,在本章節(jié)我們會介紹一下音樂等待中的SDP修改過程,同時介紹以下各種INVITE概念和區(qū)別。
1、大家都經(jīng)常使用到SIP物理電話的Hold 鍵,這個功能鍵會觸發(fā)一個事件讓對端處于音樂等待狀態(tài)。如果用戶第一次按Hold鍵以后,雙方的通話會被置于一個音樂等待的狀態(tài),語音流停止發(fā)送,對端可以聽到一個音樂等待的提示音。一定時間后,再次按Hold鍵會重新創(chuàng)建一個session來進行進行雙方的通話。雙方之間的SDP消息會發(fā)生更新以支持啟動或者重新啟動新session的功能需求。
以上圖例說明了客戶A和客戶B之間的SDP交互消息情況。大家需要注意兩次Hold按鍵以后的SDP的不同。
在下面的內(nèi)容中我們重點介紹啟動Hold事件的流程和重新觸發(fā)Hold事件的流程。
2、在正常的環(huán)境中,客戶A一直保持和客戶B的通話,因為其他的原因,可能客戶A會按Hold鍵觸發(fā)一個SDP的修改事件,同時一個PBX會發(fā)送一個消息到客戶B,客戶B則返回一個消息,IPPBX會斷開這個session,同時可以對客戶B發(fā)送一個音樂等待。PBX使用這個語音等待功能對客戶B播放音樂,具體音樂文件有PBX設(shè)置。
在以上的舉例中,我們可以看到。首先 客戶A按了Hold鍵,然后觸發(fā)了一個音樂等待的要求,SDP中的a為sendonly,PBX 會發(fā)送一個消息到客戶B,客戶在SDP中返回一個recvonly , PBX會停止雙方的語音流,然后對客戶B播放一個音樂等待文件,提示用戶處于音樂等待時間。音樂等待的文件用戶可以自己自定義,在PBX中獲得支持。
3、一段時間后,客戶A按Hold鍵以后,重新觸發(fā)一個事件,發(fā)送重新建立session的消息(a=sendrecv),PBX會重新發(fā)送一個消息到客戶B,客戶B重新發(fā)送消息,帶了一個新的SDP消息a=sendrecv,然后重新創(chuàng)建一個新的session來繼續(xù)進行通話流程。
以上圖例是結(jié)合置于音樂等待的狀態(tài)來繼續(xù)說明的。因為以前客戶A觸發(fā)了Hold語音等待,現(xiàn)在重新再次按Hold以后,SDP的a會更新到sendrecv, 同時通知PBX,PBX會通知客戶B?蛻鬊回復(fù)了一個SDP消息帶了a=sendrecv的新的狀態(tài)消息,PBX重新啟動一個新的會話,雙方通話重新開始。
4、INVITE 可能是我們用戶經(jīng)常看到的一種消息內(nèi)容,很多時候可能比較迷惑。這里的INVITE包括:原始的Original INVITE,Resent INVITE和reINVITE三種。
Original INVITE 是用戶發(fā)起的INVITE消息。
Resent INVITE仍然是以前的INVITE,包含了以前的Call-ID和以前的CSeq(),通常是100 trying 還沒有收到,然后發(fā)送到Proxy的INVITE。
reINVITE 是用來修改目前存在session呼叫參數(shù)或等待處理的呼叫參數(shù)。它使用當前的Call-ID,因為這是一個新的request,所以使用一個新的CSeq id。
在以上章節(jié)中我們主要介紹了MoH(音樂等待中的SDP狀態(tài)修改),包括啟動Hold,再次觸發(fā)新的會話。在這些過程中,SDP的狀態(tài)是完全不同的。另外,我們也簡單介紹了幾個INVITE的區(qū)別。希望通過本章節(jié)的介紹,大家對音樂等待中的SDP修改更新有更多的了解。當然,用戶需要結(jié)合實際的環(huán)境做進一步的測試。例如,用戶可以安裝FreePBX,配合兩臺話機做一個類似的實驗。
關(guān)注公眾號:asterisk-cn 獲得更多有價值的行業(yè)技術(shù)分享,訪問論壇:www.issabel.cn/forum 獲得技術(shù)幫助。