您當前的位置是:  首頁 > 新聞 > 國內 >
 首頁 > 新聞 > 國內 >

SIP講座系列-關于音樂等待中的SDP變化

2017-11-28 16:25:18   作者: james.zhu    來源:Asterisk微信公眾號   評論:0  點擊:


  前面的講座中我們談到了SDP和SDP的修改的問題。在當前的企業(yè)通信中,我們會經(jīng)常遇到一個功能叫語音等待功能,這個功能就涉及了SDP的修改問題。
  因此,在本章節(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的不同。
  在下面的內容中我們重點介紹啟動Hold事件的流程和重新觸發(fā)Hold事件的流程。
  2、在正常的環(huán)境中,客戶A一直保持和客戶B的通話,因為其他的原因,可能客戶A會按Hold鍵觸發(fā)一個SDP的修改事件,同時一個PBX會發(fā)送一個消息到客戶B,客戶B則返回一個消息,IPPBX會斷開這個session,同時可以對客戶B發(fā)送一個音樂等待。PBX使用這個語音等待功能對客戶B播放音樂,具體音樂文件有PBX設置。
  在以上的舉例中,我們可以看到。首先 客戶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ù)進行通話流程。
  以上圖例是結合置于音樂等待的狀態(tài)來繼續(xù)說明的。因為以前客戶A觸發(fā)了Hold語音等待,現(xiàn)在重新再次按Hold以后,SDP的a會更新到sendrecv, 同時通知PBX,PBX會通知客戶B?蛻鬊回復了一個SDP消息帶了a=sendrecv的新的狀態(tài)消息,PBX重新啟動一個新的會話,雙方通話重新開始。
  4、INVITE 可能是我們用戶經(jīng)?吹降囊环N消息內容,很多時候可能比較迷惑。這里的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修改更新有更多的了解。當然,用戶需要結合實際的環(huán)境做進一步的測試。例如,用戶可以安裝FreePBX,配合兩臺話機做一個類似的實驗。
  關注公眾號:asterisk-cn 獲得更多有價值的行業(yè)技術分享,訪問論壇:www.issabel.cn/forum 獲得技術幫助。
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題