根據 RFC3891的定義,Replaces header 簡(jiǎn)單來(lái)說(shuō)就是使用新的SIP dialog 替換當前的SIP dialog,通過(guò)REFER method來(lái)獲得支持。在實(shí)際的場(chǎng)景中,它所支持的主要功能包括:電話(huà)詢(xún)轉功能和電話(huà)駐留中的電話(huà)重接功能。這里需要特別說(shuō)明的是,在Replaces header 中必須包含一個(gè)明確的from-tag和一個(gè)明確的to-tag,否則proxy不會(huì )匹配到相應的終端和事件響應消息。如果Replaces header 匹配了一個(gè)dialog中的,這個(gè)dialog可能已經(jīng)結束,那么UA就會(huì )拒絕這個(gè)請求,發(fā)送一個(gè)603 Declined 響應消息。
1、電話(huà)駐留的舉例。電話(huà)駐留是PBX經(jīng)常使用的功能。通常情況下,如果用戶(hù)呼叫另外一個(gè)用戶(hù)時(shí),如果用戶(hù)忙或者到其他辦公室位置的話(huà),可能會(huì )把通話(huà)通過(guò)電話(huà)駐留的方式,把通話(huà)暫時(shí)駐留或者停靠在系統中。用戶(hù)在其他地方使用其他的電話(huà)終端再次通過(guò)系統熱鍵獲取重啟通話(huà)。電話(huà)駐留的使用場(chǎng)景則使用了replaces header來(lái)替換了當前的SIP dialog。

以下是消息內容,大家要注意查看refer,from-tag, to-tag 的消息內容:

2、電話(huà)轉接到功能也同樣使用了replaces header的方式來(lái)實(shí)現電話(huà)的轉接。在很多企業(yè)PBX的使用場(chǎng)景中,我們經(jīng)常看到可能因為電話(huà)系統的隊列繁忙,客戶(hù)不能直接呼叫到公司服務(wù)支持熱線(xiàn)或服務(wù)隊列中,有時(shí)通過(guò)接線(xiàn)員來(lái)轉接客戶(hù)電話(huà)到系統的隊列中。接線(xiàn)員呼叫隊列,PBX會(huì )讓接線(xiàn)員加入到隊列中,然后接線(xiàn)員把客戶(hù)的通話(huà)轉入到訪(fǎng)問(wèn)隊列。在這個(gè)場(chǎng)景中,replaces header 也發(fā)生了替換,同時(shí)最后增加了from-tag和to-tag。

我們通過(guò)以上兩個(gè)使用場(chǎng)景介紹了Replaces header 的使用方式和處理流程。用戶(hù)也可以自己通過(guò)FreePBX的場(chǎng)景,使用幾臺SIP話(huà)機來(lái)進(jìn)行驗證,通過(guò)打印SIP log來(lái)檢查Replaces 的變化。
獲得更多有價(jià)值的行業(yè)技術(shù)新聞,請關(guān)注公眾微信號:asterisk-cn, 訪(fǎng)問(wèn)www.issabel.cn/forum獲得技術(shù)幫助。