有時,代理服務(wù)器將單個SIP呼叫轉(zhuǎn)發(fā)到多個SIP端點。這個過程被稱為分叉。這里單個呼叫可以同時響鈴多個端點。
使用SIP分叉,您可以讓您的桌面電話與手機上的軟件電話或SIP電話同時響鈴,從而可以輕松地從任一設(shè)備接聽電話。
一般來說,在辦公室里,假設(shè)老板無法接聽電話或離開,SIP分機允許秘書接聽電話他的分機。
如果有一個有狀態(tài)的代理可用,因為它需要執(zhí)行和響應(yīng)從它收到的許多,分叉將是可能的。
我們有兩種類型的分叉 -
在這種情況下,代理服務(wù)器將把INVITE分叉到例如兩個設(shè)備(UA2,UA3)。兩個設(shè)備將產(chǎn)生180響鈴,并且接收呼叫的任何人將產(chǎn)生200 OK。首先到達發(fā)起者的響應(yīng)(假設(shè)UA2)將與UA2建立會話。對于其他響應(yīng),將觸發(fā)CANCEL。
如果發(fā)起者同時接收到這兩個響應(yīng),則基于q值,它將轉(zhuǎn)發(fā)響應(yīng)。
在這種情況下,代理服務(wù)器將INVITE分叉到一個設(shè)備(UA2)。如果UA2在那時不可用或忙,則代理將它分配到另一個設(shè)備(UA3)。
分支標(biāo)識幫助代理匹配對分叉請求的響應(yīng)。沒有分支ID,代理服務(wù)器將無法了解分叉響應(yīng)。分支標(biāo)識將在Via標(biāo)頭中可用。
標(biāo)簽由UAC使用以區(qū)分來自不同UAS的多個最終響應(yīng)。UAS無法解析請求是否已分叉。因此,它需要添加一個標(biāo)簽。
代理還可以添加標(biāo)簽,如果它生成最終響應(yīng),他們從來不插入標(biāo)簽到請求或響應(yīng)他們轉(zhuǎn)發(fā)。
也有可能單個請求也可以由多個代理服務(wù)器分叉。因此,fork的代理將向它創(chuàng)建的分支添加自己的唯一ID。
呼叫支路是指兩個用戶代理之間的一對一信令關(guān)系。呼叫ID是參考呼叫的SIP消息中攜帶的唯一標(biāo)識符。呼叫是呼叫線路的集合。
UAC通過發(fā)送INVITE開始。由于分叉,它可以從不同的UA接收多個200OK。每個對應(yīng)于相同呼叫中的不同呼叫支路。
因此,呼叫是一組呼叫支路。呼叫支路是指UA之間的端到端連接。
呼叫支路的兩個方向上的CSeq空間是獨立的。 在單個方向上,序列號對于每個事務(wù)遞增。
對于企業(yè)用戶來說,語音郵件是非常普遍的。這是一個電話應(yīng)用程序。談到圖片,當(dāng)被叫方不可用或無法接收呼叫時,PBX將通知主叫方留下語音消息。
如果被叫方的號碼不可達,用戶代理將獲得3xx響應(yīng)或重定向到語音郵件服務(wù)器。然而,需要某種SIP分機來向語音郵件系統(tǒng)指示要使用哪個郵箱 - 即,播放哪個問候語以及在哪里存儲所記錄的消息。有兩種方法來實現(xiàn)這一點 -
通過使用SIP頭字段擴展
通過使用Request-URI來發(fā)信號通知這個信息
假設(shè)用戶sip:Tom@tutorialspoint.com在sip:voicemail.w3cschool.cn有一個語音郵件系統(tǒng),它提供語音郵件,當(dāng)轉(zhuǎn)發(fā)到語音郵件服務(wù)器時,INVITE的Request-URI可能看起來像 -
sip:voicemail.tutorialspoint.com;target = sip:Tom@tutorialspoint.com;cause = 486
下圖顯示了Request-URI如何攜帶郵箱標(biāo)識符和原因(這里為486)。
更多建議: