溝通與共同作業

語音如何發揮 OCS 2007 的功力

Rajesh Ramanathan

 

綜覽:

  • 在 OCS 2007 中打電話
  • 通話如何獲得保全
  • OCS 中的多樣式交談
  • 與 Exchange UM 整合以利用語音信箱

目錄

基本語音電話
使用電話號碼
保護通話安全
周遊 NAT 和防火牆
路由電話號碼
輸入路由
品質報告和疑難排解
整體回顧
多樣式行為和交談
語音信箱
總結

Microsoft Office Communication Server (OCS) 2007 這一系列的第一篇說明了 OCS 如何以 Live Communication Server (LCS) 2005 的優點為基礎建置而成,

以提供增強的企業級立即訊息 (IM) 與目前狀態功能,另外也介紹了進階的媒體和電話功能 (請參閱 2008 年 2 月份《TechNet Magazine》,網址是 technet.microsoft.com/magazine/cc194409)。本文則更加深入地探索 VoIP 這一面。我將解釋如何在 OCS 系統中進行簡單的語音通話,並且分層討論技術,以便在新增每個元件的同時加入相對應的功能。

如前文所述,您可以設定讓 OCS 以各種不同的設定,提供電話語音功能給使用者。

企業語音 這是完整的整合通訊解決方案,可在不需 PBX 的情況下,將 OCS 搭配 Microsoft® 中繼伺服器使用。而系統中的語音信箱功能,則由 Exchange 整合通訊 (UM) 提供。在本文中,我把擁有這項服務的使用者稱為「UC 使用者」,並以「UC 端點」一詞代表這個設定的用戶端。

與 PBX 整合的企業語音 這項設定不但可讓使用者享受整合通訊的好處,同時也能在桌面上保有現有的 PBX 電話。它容許 OCS 與 PBX 平行設定,以便讓來電同時在 Office Communicator 和 PBX 端點響鈴。PBX 仍舊控制來電路由,也仍舊提供語音信箱服務。

遠端呼叫控制 這項功能把 PBX 電話當作主要電話使用,並且允許透過 Office Communicator 用戶端來控制電話。

基本語音電話

本文我將側重在企業語音使用者的運作方式。簡單的語音電話是在 OCS 系統中,使用 SIP INVITE 機制設定而成 (如 RFC 3261 中所述)。OCS 伺服器所扮演的代理角色,與在用戶端 (或端點) 之間轉送郵件的郵件管理員很像。新的 SIP INVITE 是由用戶端在每次建立即時工作階段 (例如通話或立即訊息工作階段) 時發出。如果 INVITE 受到認可並有答覆 (也就是說,遠端端點傳送 200 OK 回應),便會建立通話 (見 [圖 1])。

[圖 1] INVITE 格式和 200 OK

INVITE sip:bob@example.com SIP/2.0
To: <sip:bob@example.com>
From: <sip:alice@example.com>;tag=5c5ffe5428;epid=d793aff63a
Call-ID: 3522acd5acd349b4855871e3100a5f4f
CSeq: 2 INVITE
Contact: sip:alice@xyz.example.com
Content-Type: application/sdp
Content-Length: 156

**Note: Alice Audio SDP payload not shown**

SIP/2.0 200 OK
To: <sip:bob@example.com>;tag=f5c728454a;epid=e73443245
From: <sip:alice@example.com>;tag=5c5ffe5428;epid=d793aff63a
Call-ID: 3522acd5acd349b4855871e3100a5f4f
CSeq: 2 INVITE
Contact: sip:bob@xyz.example.com
Content-Type: application/sdp
Content-Length: 160

**Note: Bob Audio SDP payload not shown**

[圖 2] 中,Alice 從 Office Communicator (OC) 2007 選擇 Communicator 電話來呼叫 Bob,於是 OC 2007 發出 INVITE 給 Bob 的 SIP 統一資源識別元或 URI (sip:bob@example.com)。INVITE 會攜帶媒體端點的音訊工作階段描述元 (稱做 SDP,工作階段描述通訊協定的縮寫),讓 Alice 在此處接收音訊。OCS 會將 INVITE 分支到 Bob 已註冊的 SIP 端點 (例如,Communicator Phone Edition 和 Communicator 桌上型電腦)。INVITE 包含 sip:alice@example.com 的寄件者標頭,Bob 的用戶端端點會用它在反向名稱對應 (RNL) 尋找要在來電通知中顯示的名稱 (Alice)。

fig02.gif

[圖 2] 將電話路由到多個端點 (按一下以放大影像)

每個端點都會顯示可全域路由的使用者代理程式 URI (Globally Routable User Agent URI,GRUU)。GRUU 可專門識別 SIP 端點,而且它是在註冊程序期間向 OCS 伺服器取得的。GRUU 位址有助於路由 SIP 訊息,比方說,當端點一接聽來電,便馬上使用 GRUU 位址,直接在端點間運送其他通話中作業的後續 SIP 信號。

[圖 3] 則繼續進行這個過程,其中 Bob 是從 Communicator 桌上型電腦接聽。Bob 的 OC 會傳送 200 OK 訊息,表示他可在哪裡接收音訊。OCS Proxy 一偵測到其中一個端點已經接聽,就會取消對其他 Communicator Phone Edition 端點所進行的通話。一旦 200 OK 回應抵達 Alice 的 Communicator 端點,兩邊的 Communicator 端點便有充分的資訊 (IP 連接埠、加密參數等) 可以啟動媒體。

fig03.gif

[圖 3] 從端點接聽 (按一下以放大影像)

使用電話號碼

到目前為止,我們看到了使用者按一下 Communicator 電話來建立邀請函。如果使用者選擇或輸入電話號碼的話,整個程序將稍有不同。

  • 用戶端會先將電話號碼正規化,並將它表示成 TEL URI,以描述電話號碼所識別的資源 (如 RFC 3966 所述)。
  • 由於 OCS 伺服器只識別 SIP URI,因此用戶端會加入網域尾碼和 user=phone 標記,將 TEL URI 轉換成相對應的 SIP URI。
  • 如果號碼對應到內部使用者,OCS 便會直接路由邀請函。如果號碼是外部的,則邀請函會路由到最近的 SIP-PSTN 閘道。

有些打到公用交換電話網路 (PSTN) 號碼的電話,要求在接聽電話之前先設定媒體路徑,以便播放遠端通告或收集其他數字來完成通話。在這種情況下,PSTN 閘道會連同音訊 SDP,傳送 183 工作階段進度指示器。Communicator 會在遠端使用者接聽電話之前,使用這項資訊來設定具有一個目的地端點的雙向媒體路徑。

媒體路徑完全設定妥當之後,Communicator 就會啟用複頻式訊號或 DTMF (電話信號音) 鍵盤,好讓使用者輸入遠端系統所需的其他任何數字。使用者所輸入的任何 DTMF 數字,都會在媒體路徑中作為 RFC 2833 封包傳送。PSTN 閘道會負責在 PSTN 端產生適當的 DTMF 信號音。

請注意,若是 Bob 已在行動電話啟用同時響鈴的話,OCS Proxy 會將電話路由到閘道,並同時在 Bob 的其他 Communicator 端點響鈴。在這個案例當中,OCS Proxy 會指出 183 工作階段進度回應中有使用分叉,而這種情況會使得 Communicator 透過 PSTN 閘道,建立一個專門負責接收的媒體通道。

保護通話安全

OC 所設定的語音電話,其中一項重要功能就是它預設會使用安全即時傳輸通訊協定 (Secure Real-Time Transport Protocol,SRTP) 加密媒體,如 RFC3711 中所述。SRTP 為 RTP 流量提供了機密性、訊息驗證,以及重新執行保護。在通話設定期間,用戶端會彼此交涉安全性功能,並交換加密金鑰,這是 INVITE 機制的一部分。

OC 的預設加密設定是「選擇性」的,這一點可讓兩個 OC 端點設定加密的媒體通道。系統管理員可以配合組織的循規需要,調整這項設定。比方說,可以將它調整得嚴密一點,以強制加密所有電話,或者完全關閉。

周遊 NAT 和防火牆

OCS 系統中的用戶端是使用互動式連線建立 (ICE) 技術,為網路位址轉譯裝置和防火牆背後的使用者,提供媒體連線能力,而不需要對現有的 NAT 元件進行任何變更。ICE 技術目前是由網際網路工程任務推動小組 (Internet Engineering Task Force,IETF) 負責標準化。每一個用戶端都知道音訊/視訊 (A/V) Edge Server,這部伺服器是透過 Inband 佈建機制提供用戶端服務,並且在登入期間維護 A/V Edge 的驗證連結。

在進行通話之前,用戶端會在 A/V Edge Server (用於媒體轉送) 可能的連線位置 (位址和連接埠,也稱為候選位置) 上、在 NAT 上,或是在主用戶端上配置資源。當送出工作階段初始通訊協定 (SIP) INVITE 時,它也會在 INVITE 附帶這項連線資訊。200 OK 回應會攜帶類似的對等候選位置資訊。等到每一個端點都有一份對等候選位置清單之後,就會有一套詳盡的排名和檢查機制,從兩個對等之間,選擇保證媒體能夠成功的最佳路徑。

路由電話號碼

路由電話號碼為基本通話機制添加了一些複雜度,原因如下:

  • 公司可能有在內部部署有利快速撥號的其他撥號計畫。
  • 號碼可能是以非標準格式儲存 (例如,使用者可能在 Microsoft Office Outlook® 中儲存七位數的字串)。
  • 可能有不同的原則對應到不同的輸出號碼。例如,可能會封鎖特定的使用者撥打國際號碼。

OCS 系統要求電話號碼必須具備 RFC 3966 TEL URI 格式,才能正確路由。不具這種格式的號碼,會在用戶端發出 INVITE 之前先行轉換。[圖 4] 中的圖表,說明了這項作業在 OCS 系統內的運作方式。

fig04.gif

[圖 4] 路由電話號碼 (按一下以放大影像)

用戶端可以使用的號碼,可能是來自不同的來源。預先正規化的號碼是來自通訊錄服務 (ABS),它可以用系統管理員定義的正規化規則,將號碼轉換成正規化的 E 164 格式。一旦用戶端發出 SIP INVITE 到正規化的號碼時,OCS 便會套用轉譯程序,將號碼對應到任何內部使用者。

  • 步驟 1 顯示輸入系統的號碼是專屬號碼 (在 E 164 編號計畫之後加以正規化),或是含有可識別位置的電話內容。這些號碼都會當作 SIP INVITE 的一部分,傳送到伺服器。OCS 會將 INVITE 路由到轉譯程序。
  • 轉譯程序 (步驟 2) 會使用伺服器端 RNL,將電話號碼對應到 UC 端點。這項轉譯作業可為該號碼識別出一條通往輸出路由或 UC 使用者的路由;如果號碼無法正確轉譯的話,可能會放棄通話,並產生 4xx 碼。
  • 如果號碼是轉譯成非 UC 或外部號碼,則在套用與來電者相關的號碼原則之後,會將它傳送到輸出路由元件,此元件會將 INVITE 重新導向適當的 SIP-PSTN 閘道,以供進一步處理 (步驟 3A)。輸出路由會負責平衡閘道間的通話負載,或是在必要時,容錯移轉到替代閘道。如果禁止存取特定號碼,輸出路由程序可能會放棄或拒絕通話,並傳回 SIP 403 回應碼。請注意,輸出路由只適用於來電者是 UC 使用者的情況。如果來電者並非 UC 使用者,OCS 會嘗試使用針對該 URI 設定的閘道的靜態路由。
  • 如果號碼轉譯成 UC 使用者的號碼,則會將 INVITE 路由到該使用者的 SIP URI (步驟 3B)。輸出路由是 OCS 的一項功能,只適用於 UC 使用者,以及目標是 SIP URI 的所有通話。如您所見,輸出路由會為 UC 使用者套用響鈴逾時、來電轉接和語音信箱轉接的規則。

要注意的是,正規化程序所得出的號碼,可能會因用戶端的位置而有所不同。系統管理員可以設定位置設定檔,並且指派特定位置專用的號碼轉換規則 (例如,四位數撥號在該位置將如何運作)。每一個 UC 使用者都有指派一個位置設定檔,而系統中所有的用戶端都會使用 Inband 佈建,下載它們自己位置設定檔專用的規則。接下來我就要探討輸入路由的細節。

輸入路由

輸入路由規則會指定當系統內有註冊用戶端或者沒有註冊用戶端的情況下,打給使用者的電話該如何路由。輸入路由元件也會把以目前狀態為基礎的規則套用到來電,比方說,如果使用者將目前狀態設定為「請勿打擾」,就可以把來電傳送到語音信箱。輸入路由可感知目前狀態容器層級,並且會自動拒絕封鎖容器內的使用者的來電。[圖 5] 顯示 OCS 輸入路由元件所支援的選項摘要。

[圖 5] 輸入路由功能

功能 註解
來電轉接鈴聲長度 預設為 20 秒。使用者最多可將它改為 60 秒。過了這段逾時期間,來電便會轉到未接聽來電目的地。
將未接聽的電話路由到語音信箱 如果使用者有啟用語音信箱,則為預設值。來電是根據輸入路由規則加以路由。
若來電者在電話進入語音信箱之前掛斷,則產生未接來電通知 通知 Exchange UM 有這類未接來電。
來電封鎖 拒絕受到封鎖之來電者的來電 (只能封鎖具備 SIP 身分識別之使用者的來電)。
請勿打擾 將來電路由到語音信箱。如果使用者採用這個模式,就不會同時在目的地響鈴。
允許插播清單 如果來電者位於 [小組] 容器內,即使使用者是設為 [請勿打擾],也會接受來電。
同時響鈴 設定來電同時在 PSTN 電話號碼,還有 Communicator 和 Communicator Phone Edition 用戶端響鈴。
立即來電轉接 立即將來電轉接給另一名使用者、PSTN 電話號碼或語音信箱。
來電轉接未接聽 將未接聽的來電轉接給另一名使用者、PSTN 電話號碼或語音信箱。
工作時間 使用 Outlook 行事曆上設定的工作時間,來啟動使用者的來電轉接設定。

輸入路由規則會作為屬於使用者自我佈建資訊一部分的 XML 結構描述,上載到伺服器。[圖 6] 顯示輸入路由的運作方式。撥打給 OCS 系統內的使用者,預設會向使用者響鈴 (顯示為「我」)。如果沒有在鈴響時間內接聽來電,未接聽的來電預設會傳送到語音信箱。使用者可以選擇修改預設設定,方法是選擇直接立即轉接到電話號碼、另一個人或是語音信箱。

fig06.gif

[圖 6] 路由來電 (在工作時間內) (按一下以放大影像)

立即轉接到另一個人或電話號碼的任何來電,都會使那個人或那個號碼的輸入路由規則生效。使用者也可以將未接聽的來電,轉接設定為另一個號碼或人員。

如果使用者勾選轉接規則中的 [僅在我的 Outlook 工作時間內套用 (Apply only during my Outlook Working Hours)] 選項,便會在工作時間內套用 [圖 6] 所示的規則,而且會在這些時間之外,套用預設的註冊端點響鈴行為。請注意,公司必須先部署 Microsoft Exchange Server 2007 和 Outlook 2007 用戶端之後,才能套用這個行為,因為 Communicator 會使用 Exchange 2007 可用性 Web 服務的工作時間資訊,並且運用 Outlook 2007 自動探索支援,以取得伺服器的位置。

品質報告和疑難排解

雖然 OCS 2007 系統中的用戶端是採用 RTAudio (較新一代的音訊轉碼器,可容忍不完美的網路狀況,例如抖動、封包遺失等),但是為了讓系統管理員找出並修正可能的作用點,仍舊有監視的必要。OCS 2007 系統中的用戶端會報告每一通來電的品質,並且在每一通來電結束時,將詳盡的統計資料,包括頻寬、虧損、抖動、平均意見指標 (使用者主觀的測量標準) 使用的裝置等等,提供給中央體驗品質 (QoE) 伺服器。這是透過將 SIP SERVICE 要求內的承載傳送到 QoE 伺服器來完成,而伺服器的位址是使用 Inband 佈建機制編排的。

請注意,所有用戶端端點會個別向 QoE 伺服器報告通話品質。如果來電因信號發生錯誤而斷話,用戶端也會依此向 OCS 報告,為用戶端產生的所有錯誤提供儲存機制。

整體回顧

我們已經逐一講解設定通話的幾個層面 (包括輸入號碼、輸入和輸出路由,以及連線能力檢查),接下來讓我們回顧一下整體程序。[圖 7] 概述從使用者打出電話開始發生的事情。OCS 系統內的用戶端在設定電話方面扮演著舉足輕重的角色,而且它們也負責管理整個電話設定程序。OCS 會參與初始的來電路由,而 Edge Server 會幫助用戶端找出最佳的媒體路由。現在讓我們來看看接下來所發生的事 — 交談。

fig07.gif

[圖 7] 端對端通話流程 (按一下以放大影像)

多樣式行為和交談

交談的概念是 OCS 系統的核心,交談是兩個或兩個以上的人之間進行的多樣式工作階段,而且同時可以包括聲音、視訊和 IM,以及成品,例如在工作階段期間的檔案傳輸、Outlook 中的電子郵件,或是儲存在 Microsoft Office OneNote® 中的記事。

交談有好幾個層面可能會對 OCS 用戶端系統的設計產生影響:

  • 交談中所包括的所有樣式,都是使用相同的視窗。如果在音訊交談中加入立即訊息,它也會結合到相同的視窗。
  • 交談可以跨裝置進行。使用者可以選擇在 Communicator Phone Edition 上使用音訊,但在 Communicator 桌上型電腦上使用 IM。
  • 所有模式的規模都會擴大成會議:如果發生規模擴大的情況,交談的所有樣式都必須一起擴大規模,無論樣式目前所在的裝置為何都一樣。比方說,如果在 Communicator Phone Edition 上能夠使用音訊模式,而在 Communicator 桌上型電腦上的同一個交談能夠使用 IM 模式,那麼擴大規模成會議,可以確保音訊和 IM 的參與者,就是該交談的參與者。
  • 交談會記錄下來,個別的工作階段則不會。通話記錄內含關於交談的完整資訊,包括在交談期間內所記錄的筆記相關細節、交換的立即訊息,以及音訊維持的時間等等。這可讓使用者在 Outlook 開啟通話記錄時,方便統一檢視整個交談。
  • 交談可以從交談記錄繼續進行。OCS 用戶端是使用交談識別碼 (可跨越裝置和應用程式,專門識別交談的號碼),將交談繫結在一起。如果新交談是從舊交談的歷程記錄開始,則會有一套精巧的機制來計算交談的差異。相同的交談識別碼也會在 Outlook 儲存成電子郵件的識別碼。

交談識別碼會以自訂屬性 Ms-Conversation-Id,作為 SIP INVITE 的一部分傳播。[圖 8] 所示的交易,是先加入聲音,再加入 IM。請注意,多樣式交談結束時,儲存在 Outlook 中的歷程記錄具有相同的交談識別碼。

fig08.gif

[圖 8] 多樣式交談和交談識別碼 (按一下以放大影像)

Exchange UM 是 OCS 2007 的語音信箱系統。OCS 只會將有啟用 UC 的使用者的來電,路由到 Exchange UM。OCS 提供幾項與 Exchange UM 整合的功能:

  • Communicator 電話 UI 的 [來電語音信箱] 選項 (見 [圖 9]) 可讓使用者在無需輸入 PIN 的情況下,管理 UM 信箱、變更留言等,因為他已經通過驗證了。
  • Communicator UI 中的等候訊息指示器 (見 [圖 10]) 可讓使用者在 Outlook 中開啟語音信箱資料夾,而 Communicator Phone Edition 中的指示器,則可讓使用者直接從電話播放語音訊息。
  • 來電可從 Communicator 的 UI 轉接到語音信箱。
  • 被拒絕的來電會自動路由到語音信箱。
  • Outlook 中語音信箱項目的 [在電話上播放],會直接在 Office Communicator 用戶端響鈴。

fig09.gif

[圖 9] Communicator 中的 [來電語音信箱] 選項

fig10.gif

[圖 10] Communicator 中的訊息等候指示器

OC 接收語音信箱通知所採用的機制,與 Communicator Phone Edition 的不同。OC 會在 Outlook 中的 [語音信箱] 搜尋資料夾上註冊新的郵件通知,並且在這個資料夾中報告新郵件。Communicator 也使用 [未接交談] 和 [通話記錄]。

總結

我在本文說明了語音電話在 OCS 2007 中的運作方式,OCS 2007 是以運用數個 RFC 的 SIP 為基礎建置而成。用戶端端點在 OCS 中管理通話方面扮演著重要的角色。所有的語音通話預設都會經過安全加密。OCS 提供具彈性的元件,允許它們在整個系統中操控號碼和管理流程。

交談是 OCS 中的核心概念,包括聲音、IM 和視訊。OCS 與 Exchange UM 整合,並允許 Communicator 端點接收語音信箱的通知,以及透過 Outlook 或直接從伺服器存取語音信箱。

Rajesh Ramanathan 在通訊領域工作已長達 14 年之久,並且投身設計語音通訊協定、使用者體驗和 Office Communicator 2007 的語音和會議功能。他目前在 Microsoft 的 Office Communicator 小組擔任專案主管一職。您可以透過電子郵件與 Rajesh 聯絡:rajeshra@microsoft.com

© 2008 Microsoft Corporation and CMP Media, LLC.著作權所有,並保留一切權利。未經許可,不得部分或全部重製。