12 Dialogs
對用戶代理來說,一個重要的概念是 dialog。一個dialog表示兩個用戶代理之間 在特定時間內(nèi)保持的一個點對點關(guān)系。 Dialog用來支持用戶代理之間一系列的消 息,并且在它們之間提供正確的請求路 由。dialog通過SIP消 息解析,表示為文本 內(nèi)容。Section 8討論過針對外部dialog的 請求和響應(yīng)環(huán)境中對于method獨立的UA 場景的處理流程。此章節(jié)討論如何使用請 求和響應(yīng)來構(gòu)建一個dialog,以及如何在 dialog中發(fā)送后續(xù)的請求和響應(yīng)。
在每個UA中,dialog 是通過dialog ID來確 認(rèn)的,它由一個Call-ID值,一個本地標(biāo)簽 和遠端標(biāo)簽構(gòu)成。在此dialog中,每個UA涉及的dialog ID是不同的。具體來說,在-端UA的本地標(biāo)簽等同于在對端點UA的遠 端標(biāo)簽。此標(biāo)簽是一個不透明度標(biāo)識符 號,此標(biāo)識符號支持唯一的dialog IDs生 成。
對于UAS來說,dialog ID中的Call-ID值設(shè)置為消息的Call-ID,遠端標(biāo)簽設(shè)置為消息中From頭中的標(biāo)簽,本地標(biāo)簽設(shè)置為消息中To頭中的標(biāo)簽。
Dialog ID不但關(guān)聯(lián)所有的響應(yīng)消息,并且 關(guān)聯(lián)任何請求,此請求在To頭中含有一個 標(biāo)簽。一個消息的dialogID計算規(guī)則取決 于SIP要素是一個UAC還是UAS。對于UAC 來說,dialog ID的Call-ID設(shè)置為此消息的 Call-ID,遠端標(biāo)簽設(shè)置為消息中To頭中的 這個標(biāo)簽,本地標(biāo)簽設(shè)置為消息中From頭 中的標(biāo)簽(此規(guī)則適用于請求和響應(yīng) 中)
一個dialog包含某些特別狀態(tài)消息,這些消息用來支持在此dialog中的后續(xù)的消息傳輸。這個狀態(tài)消息由這個dialog ID,一個本地序列號(用來支持從UA發(fā)送到對端的請求的順序),一個遠端序列號(用來支持從遠端到UA請求的順序),一個本地URL,一個遠端URL,遠端目的地,一個命名為“secure”的布爾flag,和一個路由組,此路由組是一個按續(xù)排列的URL列表。路由組是一個服務(wù)器列表,請求需要通過此列表服務(wù)器路徑發(fā)送到對端。
Dialog可以是一種“早期”狀態(tài),這種早期狀態(tài)發(fā)生在當(dāng)它創(chuàng)建時,它攜帶了一個臨時響應(yīng),當(dāng)收到一個2xx最終響應(yīng)消息后,此狀態(tài)會轉(zhuǎn)化為一個“確認(rèn)”狀態(tài)。在上面的dialog中,對于其他響應(yīng)或者完全沒有收到任何響應(yīng),這個早期dialog就會結(jié)束。
12.1 Creation of a Dialog
Dialogs是通過具體的methods來創(chuàng)建的,由一系列對請求的非失敗響應(yīng)生成。在此規(guī)范中,僅2xx和101-199響應(yīng)攜帶To標(biāo)簽的,請求是INVITE請求的響應(yīng)將會創(chuàng)建dialog。對于由非最終響應(yīng)創(chuàng)建的dialog來說,這種dialog是處于“早期”狀態(tài),稱之為一個早期dialog。拓展可定義其他含義支持創(chuàng)建dialogs。Section 13 列出了更多細(xì)節(jié),這些細(xì)節(jié)提供了針對INVITE method的說明。這里,我們討論dialog狀態(tài)創(chuàng)建的流程,不依賴于這個method。
關(guān)注微信公眾號:asterisk-cn,獲得有價值的通信行業(yè)技術(shù)分享
AsteriskFreepbx/FreeSBC技術(shù)文檔: www.freepbx.org.cn
融合通信/IPPBX/FreePBX商業(yè)解決方案:www.hiastar.com
如何使用FreeSBC,qq技術(shù)分享群:334023047