售前電話
135-3656-7657
售前電話 : 135-3656-7657
一、基于會話啟動協(xié)議的事件通告機(jī)制
1.事件通告機(jī)制的概念
所謂事件通告機(jī)制是指網(wǎng)絡(luò)中的一些實體可以訂閱網(wǎng)絡(luò)中某些資源或呼叫的狀態(tài)信息, 當(dāng)那些被訂閱的資源的狀態(tài)發(fā)生改變時,負(fù)責(zé)這一資源的網(wǎng)絡(luò)實體將向訂閱者發(fā)送通告,通 報當(dāng)前資源狀態(tài)的變化情況。
為了實現(xiàn)這一機(jī)制,Internet工程任務(wù)組(IETF)的SIP工作組對基本的會話啟動協(xié)議進(jìn) 行了擴(kuò)充,提出了基于會話啟動協(xié)議的事件通告機(jī)制規(guī)范:RFC 3265。在規(guī)范中定義了兩個 擴(kuò)展方法:訂閱(SUBSCRIBE)和通告(NOTIFY)。SUBSCRIBE方法用于發(fā)起訂閱請求, NOTIFY方法用于通告當(dāng)前資源狀態(tài)。
會話啟動協(xié)議事件通告機(jī)制涉及以下幾個概念:
♦訂閱者
訂閱者負(fù)責(zé)接收NOTIFY消息的會話啟動協(xié)議用戶代理(SIP UA)。這些NOTIFY消息中 包含訂閱者訂閱的資源信息。訂閱者典型的動作是向通告者發(fā)送SUBSCRIBE消息以請求創(chuàng)建 一次訂閱關(guān)系。
♦通告者
通告者負(fù)責(zé)產(chǎn)生NOTIFY請求的SIPUAo通告者在NOTIFY消息中向訂閱者回饋當(dāng)前資 源的狀態(tài)。通告者典型的動作是接收SUBSCRIBE消息并創(chuàng)建相應(yīng)的訂閱關(guān)系。
♦訂閱
所謂訂閱就是一組與某個對話相關(guān)聯(lián)的應(yīng)用狀態(tài)的集合。訂閱關(guān)系既存在于訂閱者中, 又存在于通告者中。
♦事件包
事件包是通告者向訂閱者發(fā)送的一組資源的狀態(tài)信息。RFC 3265中給出了抽象的事件包 模板定義,對應(yīng)具體業(yè)務(wù)可定義相應(yīng)的事件包類型,例如:在席事件包、對話事件包等,這 些事件包可使用不同的語法并具有各自的語義。這種框架賦予會話啟動協(xié)議事件通告機(jī)制極 大的生命力和靈活性,有助于快速提供新的業(yè)務(wù)。
2.事件通告機(jī)制的流程
典型的會話啟動協(xié)議事件通告機(jī)制流程如圖3-2所示。
SUBSCRIBE方法和會話啟動協(xié)議基本規(guī)范中定義的邀請(INVITE)方法都可以創(chuàng)建一 個對話。當(dāng)訂閱者想得到網(wǎng)絡(luò)中某一資源的狀態(tài)時,便向負(fù)責(zé)這一資源的會話啟動協(xié)議實體 發(fā)起SUBSCRIBE請求,如圖3-2中的F1所示。SUBSCRIBE消息中的請求統(tǒng)一資源標(biāo)識符 (Request-URI)就是所要請求的資源的統(tǒng)一資源標(biāo)識符(URI),這一 URI同時還為會話啟動 協(xié)議代理服務(wù)器路由請求提供線索。SUBSCRIBE請求中必須包含一個擴(kuò)展的Event頭部,其 中注明要訂閱的事件類型,即事件包標(biāo)記,如,dialog (用于代答業(yè)務(wù))、refer (用于呼叫轉(zhuǎn)交) 等。還可包含擴(kuò)展的Allowed-Event頭部,指示本節(jié)點能夠支持的事件包類型。如果在一個對 話中有多次訂閱,則如圖3-3所示,在Event頭部還要增設(shè)標(biāo)識參數(shù)ID予以區(qū)分。
對于訂閱者來說,它總是在一定的時間段內(nèi)對它感興趣的某一資源進(jìn)行觀察。因此, SUBSCRIBE消息中應(yīng)包含expires頭部,這一頭部值表明訂閱者期望的有效訂閱時長。為了 延長某一訂閱的時間,訂閱者可以在有效期內(nèi)再次發(fā)送SUBSCRIBE消息來刷新這一訂閱。具 體某次訂閱的有效時長,最終是由對SUBSCRIBE請求的2XX響應(yīng)中的expires •頭部值或 NOTIFY消息中的Subscription-State頭部的expires參數(shù)決定的。expires頭部值等于0的 SUBSCRIBE請求表示撤銷訂閱。如果訂閱關(guān)系能夠建立,SUBSCRIBE消息將會觸發(fā)通告資 源狀態(tài)的NOTIFY消息立即回送。訂閱者想要獲得的資源狀態(tài)信息封裝在后繼通告消息 NOTIFY的消息體中,為了能夠正確地解釋這部分信息,訂閱者應(yīng)該向通告者指明自己支持的 消息體格式,因此,在SUBSCRIBE消息中應(yīng)攜帶Accept頭部,例如,Accept: application/dialog-info+xml,這表明訂閱者支持用可擴(kuò)展標(biāo)識語言(XML)描述的對話事件包, 實際上就是一種通用Internet郵件擴(kuò)展(MIME)格式消息體。如果SUBSCRIBE消息中沒有 攜帶Accept頭部,則通告者根據(jù)SUBSCRIBE消息中Event頭部指明的事件包標(biāo)記選擇默認(rèn) 的格式傳送資源狀態(tài)信息。
SUBSCRIBE請求通過2XX響應(yīng)確認(rèn),如圖3-2中的F2所示。不同的2XX響應(yīng)具有不 同的語義:
•200 OK表示訂閱已被接受且用戶已被授權(quán)訂閱請求的資源.
•202 Accepted (接受)是事件通知機(jī)制擴(kuò)展的響應(yīng)碼,表示訂閱請求已被理解,但是 否授權(quán)給訂閱者未確定。