2015年1月8日 星期四

Phitech 懇懋科技電子報 028 期 VoIP應用服務程式開發淺談

懇懋科技電子報
2015.01.08  NO.028 代理產品| 解決方案| 關於我們
技術開講

VoIP應用服務程式開發淺談

早期以電路交換為主的電信加值服務,大都以特定的信令及語音版卡為基底進行語音加值服務的開發,但隨著VoIP的成熟與到來,各式各樣的語音、視訊及文字多媒體服務大量崛起,其開發方式也與傳統有相當大的差異,本文即針對市面上最普及的開發平台為基底做一說明,並以來電答鈴(MRBT)服務開發作為範例展示。

(一) VoIP應用服務開發架構
新世代VoIP應用服務開發架構主要分為應用程式伺服器(Application Server)及媒體伺服器(Media Server)兩大部份,如下示意圖所示。此二者可以放在同一台或是分散式佈建皆可。常見的應用程式伺服器如TeleStax、Mobicents等,而常見的媒體伺服器則為Dialogic XMS系列等。因為應用程式與媒體服務分離後,程式總體架構上可以做更彈性的應用,如多台應用程式伺服器使用相同的媒體伺服器群資源共享。而在後述的MRBT範例即以Mobicents應用程式伺服平台經由JSR309標準界面控制Dialogic XMS媒體伺服器為平台開發而成。
Fig.1 應用程式開發架構
 
(二) SIP (Session Initiation Protocol)協定簡介
在現在的網路電話(VoIP)通訊信令中,SIP是用來控制VoIP中媒體通訊的一種信號通訊協定。其基本元件可大致分為用戶代理 (User Agent) 與 SIP服務器 (SIP Server)。用戶代理又可分為用戶代理客戶端與用戶代理伺服器端。客戶端可以對伺服器端產生請求 (Request) ,而伺服器端會在接收客戶端的請求之後發送回應 (Response) 給客戶端。SIP服務器則包含有代理伺服器、定位伺服器、註冊伺服器 ...等,可以處理SIP呼叫與應用方面的服務。

(三) Music Ring Back Tone服務簡介
一般用戶使用來電答鈴服務之後,可以自行選擇喜歡的音樂當作回應鈴聲,當其他人撥打給此用戶時,等待的鈴聲會由用戶自訂的音樂取代一般傳統的等待鈴聲。來電答鈴的功能除了讓等待回應時能夠聆聽音樂,也可以做到提示的作用,讓撥號的人知道電話已經撥通並等待對方接起,也可以起到辨識的作用,當聽到特別的鈴聲能夠辨別撥給的用戶是誰。而用戶選用的音樂是儲存於網路端,當然也可由用戶自行錄音並上傳,用作等待時撥放的音訊,除了具個人特色也可以作為宣傳或是廣告的作用,在2G/3G年代是一個相當熱門的電信加值服務應用。

(四) 應用範例-VoIP來電答鈴
此範例以前述VoIP應用服務開發平台來實作MRBT應用。
Fig.2 VoIP MRBT高階流程示意圖
 
如上圖示,主叫端 A 撥打給被叫端 B 時,SIP伺服器端收到 INVITE 請求,並與媒體伺服器建立 RTP (Real-Time Transport Protocol),並發送183 Session Progress 回應給主叫端 ,當被叫端發出產生 1XX回應時,媒體伺服器開始撥放音樂,用戶 A可以從SIP伺服器端接收到播放的音樂,此時的音樂又稱'Early Media',表示撥號成功但是對方尚未接起,以此達到來電答鈴的實現。
 
EARLY MEDIA
Early Media為通話建立之前的媒體訊號交換,可應用於下列功用:
1. 播放來電答鈴(MRBT)
2. 播放多媒體語音通知訊息(e.g. 忙線訊息、撥號錯誤訊息...等)
 
媒體伺服器 MEDIA SERVER
此範例用JAVA架構的媒體伺服器,可通過JSR309 ( Media Server Control API ) 控制,可處理G711 ( a-Law ,u-Law )、GSM、Linear PCM ( L16 )、G729與DTMF 等編碼格式。

 
主叫端與被叫端之間的信令交換:
Fig.3 細部VoIP MRBT Call Flow
 
SIP SERVLET - Code
在SIP的方法中,INVITE (邀請)方法可用來建立簡單的雙方通話。這裡一開始SIP Servlet會接收用戶A的 INVITE請求,在收到之後,先與媒體伺服器建立連結,並適時的傳送183 Session Progress 的回應給A

doInvite (SipServletRequest UAC_Invite)

   throws ServletException,IOException {
   ......
   // Create NetworkConnection
   NetworkConnection myNetworkConnection = MediaSession
                                     .createNetworkConnection(NetworkConnection.BASIC);
   ……

用戶B收到A的請求之後,會先產生回應來準備建立連線的程序,此時SIP Servlet 會處理被叫端B回應的內容,並利用媒體伺服器來適時的播放來電答鈴

doResponse ( SipServletResponse UAC_Response)

   throws ServletException, IOException {
   ……
   // play Ringback tone
   URI Music = URI.create (Ring_Back_Tone );
   myMediaPlayer.play ( Music ,RTC ,Null );
   ……

當B接起來電時,SIP Servlet會結束播放來電答鈴(Early Media),使A與B能夠建立通話。

總結
SIP因簡單容易上手且具有彈性操作利於開發的特色,為主流的VoIP通訊協定,目前利用Mobicents等open source 就可免費架設SIP Servlet,並利用X-Lite等電話軟體,就能於一區域網路上架構一套通訊系統,算是相當方便好用的一種方法,建立簡單的MRBT應用或是其他VoIP應用都可以透過SIP實現。本範例雖然主要是以語音作為主要廻鈴音的媒體,但因為SIP的特性,未來在4G/VoLTE仍是非常容易擴充成Video Ring Back Tone服務的。

文章來源:懇懋科技 研究開發處 張博喬
 
教育訓練
2015年Q1教育訓練課程,歡迎您報名參加!
more
最新消息
Fortinet 2015年威脅預測:黑帽駭客手段更為精巧,網路威脅範圍和複雜度增加
more
Rich Man專欄
VoIP服務品質監控探討 Part1
more
聯絡我們

Tel: 02-2748-0099
Mail:marketing@phitech.com.tw
phitech_懇懋科技本電子報著作權為「懇懋科技股份有限公司」所有,未經授權請勿任意轉貼節錄。本文中所提及之內容如其他品牌之商標、企業識別標誌、服務標誌、名稱等圖像與文字,乃屬其各自所有者的財產。
Copyright © 2014 PHITECH Corporation. All rights reserved.
若您以後不想再收到此類郵件,請點此取消訂閱,或點此更新資料

沒有留言:

張貼留言