很多情況下,我們會看到SIP header中支持了timer和Replacs header。我們在前面的講座中已經提到了timer的用法,今天我們來介紹一下replaces header的使用場景和控制流程。
根據 RFC3891的定義,Replaces header 簡單來說就是使用新的SIP dialog 替換當前的SIP dialog,通過REFER method來獲得支持。在實際的場景中,它所支持的主要功能包括:電話詢轉功能和電話駐留中的電話重接功能。這裡需要特別說明的是,在Replaces header 中必須包含一個明確的from-tag和一個明確的to-tag,否則proxy不會匹配到相應的終端和事件響應消息。如果Replaces header 匹配了一個dialog中的,這個dialog可能已經結束,那麼UA就會拒絕這個請求,發送一個603 Declined 響應消息。
1、電話駐留的舉例。電話駐留是PBX經常使用的功能。通常情況下,如果用戶呼叫另外一個用戶時,如果用戶忙或者到其他辦公室位置的話,可能會把通話通過電話駐留的方式,把通話暫時駐留或者停靠在系統中。用戶在其他地方使用其他的電話終端再次通過系統熱鍵獲取重啟通話。電話駐留的使用場景則使用了replaces header來替換了當前的SIP dialog。
以下是消息內容,大家要注意查看refer,from-tag, to-tag 的消息內容:
2、電話轉接到功能也同樣使用了replaces header的方式來實現電話的轉接。在很多企業PBX的使用場景中,我們經常看到可能因為電話系統的隊列繁忙,客戶不能直接呼叫到公司服務支持熱線或服務隊列中,有時通過接線員來轉接客戶電話到系統的隊列中。接線員呼叫隊列,PBX會讓接線員加入到隊列中,然後接線員把客戶的通話轉入到訪問隊列。在這個場景中,replaces header 也發生了替換,同時最後增加了from-tag和to-tag。
我們通過以上兩個使用場景介紹了Replaces header 的使用方式和處理流程。用戶也可以自己通過FreePBX的場景,使用幾臺SIP話機來進行驗證,通過列印SIP log來檢查Replaces 的變化。
獲得更多有價值的行業技術新聞,請關注公眾微信號:asterisk-cn, 訪問www.issabel.cn/forum獲得技術幫助。