蔣昌茂劉洪林
(1.桂林師范高等??茖W(xué)校,廣西 桂林 541002;2.桂林電子科技大學(xué),廣西 桂林 541004)
基于智能手機(jī)平臺的VoIP Callback設(shè)計與實(shí)現(xiàn)
蔣昌茂1劉洪林2
(1.桂林師范高等??茖W(xué)校,廣西 桂林 541002;2.桂林電子科技大學(xué),廣西 桂林 541004)
在傳統(tǒng)的語音通信業(yè)務(wù)中,被叫接聽電話免費(fèi)是各大提供商早就推行的一種服務(wù),統(tǒng)稱為回?fù)芟到y(tǒng)(Callback)。網(wǎng)絡(luò)電話回?fù)芟到y(tǒng)(VOIP CALLBACK)就是運(yùn)用接電話免費(fèi)的特點(diǎn)讓主叫方以非常低廉的資費(fèi)獲得較優(yōu)質(zhì)的語音通信服務(wù)的回?fù)芟到y(tǒng)。文章設(shè)計一款在智能手機(jī)平臺上通過WiFi、GPRS數(shù)據(jù)傳送呼叫信息形式的具備網(wǎng)絡(luò)電話回?fù)芄δ艿能浗K端和服務(wù)器系統(tǒng),實(shí)現(xiàn)VOIP語音通信的低成本、低功耗和便攜應(yīng)用,為軟交換的進(jìn)一步研究應(yīng)用拋磚引玉。
網(wǎng)絡(luò)電話回?fù)芟到y(tǒng)(VOIP CALLBACK);WiFi;GPRS;智能手機(jī)
回?fù)芟到y(tǒng)簡稱Callback。就是在傳統(tǒng)的語音通信業(yè)務(wù)中,利用被叫接聽電話免費(fèi)方式實(shí)現(xiàn)的一種語音通信服務(wù),也是各大ASP提供商早就推行的一種服務(wù)。然而隨著Internet的高速發(fā)展,在電信運(yùn)營領(lǐng)域傳統(tǒng)電信運(yùn)營商的壟斷地位正在逐漸被打破,隨著很多企業(yè)的經(jīng)營服務(wù)逐步地搬到互聯(lián)網(wǎng)上,為了增加與使用網(wǎng)上業(yè)務(wù)的用戶溝通,需要類似傳統(tǒng)的800、400電話服務(wù),為此就出現(xiàn)了WEB800、WEB CALLBACK等業(yè)務(wù)。Callback回?fù)芫W(wǎng)絡(luò)電話可在任意時段內(nèi)撥打全球任意的固定電話,手機(jī),小靈通,且話音清晰,完全脫離網(wǎng)絡(luò)的限制,達(dá)到較好的通話效果。它功能強(qiáng)大,價格低廉,已經(jīng)逐漸成為企業(yè)經(jīng)營服務(wù)、用戶辦公、商務(wù)、社交與生活的通訊好助手,這些業(yè)務(wù)都利用了網(wǎng)絡(luò)電話便宜的特點(diǎn)得到很好的推廣。目前網(wǎng)絡(luò)電話已經(jīng)有完整的解決方案,比如客戶端的軟電話、網(wǎng)頁軟電話、軟交換平臺、與PSTN相聯(lián)的數(shù)字中繼網(wǎng)關(guān)等,實(shí)現(xiàn)了寬帶網(wǎng)絡(luò)語音傳輸+落地的網(wǎng)絡(luò)電話服務(wù)。本文設(shè)計一款基于智能手機(jī)通過WiFi、GPRS數(shù)據(jù)傳送呼叫信息形式的CALLBACK網(wǎng)絡(luò)電話回?fù)芟到y(tǒng),對大家了解應(yīng)用回?fù)茈娫捰幸欢ǖ膮⒖純r值,為軟交換的應(yīng)用研究拋磚引玉。
隨著移動互聯(lián)網(wǎng)的普及,特別是3G、4G、WiFi網(wǎng)絡(luò)的使用,用手機(jī)撥打高質(zhì)量的網(wǎng)絡(luò)電話已經(jīng)不再是夢想,如SKYPE、UUCALL都推出了基于手機(jī)的網(wǎng)絡(luò)電話服務(wù),但由于網(wǎng)絡(luò)電話技術(shù)的要求比較高,實(shí)現(xiàn)它需要具備以下幾個方面:
(1)較高的系統(tǒng)硬件處理速度:目前只有智能手機(jī)可以達(dá)到上述要求,而普遍使用的功能手機(jī)從速度上沒有辦法滿足處理網(wǎng)絡(luò)電話語音包的要求;
(2)開放DSP接口應(yīng)用:由于手機(jī)技術(shù)的封閉性,手機(jī)底層的開發(fā)平臺門檻很高,一般不對普通用戶開放底層接口,想利用DSP強(qiáng)大的浮點(diǎn)運(yùn)算來處理語音編解碼不現(xiàn)實(shí)[1]。
為了在普通功能手機(jī)上推廣網(wǎng)絡(luò)電話業(yè)務(wù),可以用Callback來實(shí)現(xiàn),具體的方案就是在軟交換服務(wù)器上實(shí)現(xiàn)語音的編解碼。同時軟交換服務(wù)器和 PSTN網(wǎng)絡(luò)及移動網(wǎng)絡(luò)通過數(shù)字中繼相連接,利用接電話免費(fèi)的特點(diǎn),用Callback網(wǎng)絡(luò)通話來實(shí)現(xiàn)[2]。如圖1所示具體撥打流程如下:
①主叫用戶通過WiFi或者GPRS網(wǎng)絡(luò)向軟交換服務(wù)器發(fā)出被叫用戶號碼信息,號碼書寫格式如下:國家代碼+地區(qū)代碼+電話號碼,比如要撥打的國家為中國,地區(qū)為桂林,號碼為1234567,可以這樣寫008677312345678# 這里0086是中國代碼,773是區(qū)號,1234567是電話號碼。
②軟交換在收到主叫用戶發(fā)出的信息后,先確認(rèn)主叫號碼的合法性,既是否是合法注冊用戶,然后通過落地網(wǎng)關(guān),自動連接一條電信運(yùn)營商的線路來撥打主叫用戶,此時主叫用戶回接聽到一個有語音提示的電話服務(wù)。
③當(dāng)軟交換確認(rèn)主叫用戶已經(jīng)處于接聽狀態(tài)后,根據(jù)主叫發(fā)出的WiFi或者GPRS數(shù)據(jù)信息,也通過落地網(wǎng)關(guān)自動連接一條運(yùn)營商的線路來撥打被叫用戶,當(dāng)被叫用戶接聽電話后,軟交換服務(wù)器就接通了主叫和被叫之間的通話聯(lián)系了,此時軟交換的主要工作就是語音編碼的轉(zhuǎn)換、計費(fèi)的處理、以及與PSTN網(wǎng)絡(luò)、移動電話網(wǎng)絡(luò)等的連接等工作[3]。
圖1 CALLBACK業(yè)務(wù)實(shí)現(xiàn)原理
2.1 VOIP CALLBACK系統(tǒng)組件
該VOIP CALLBACK系統(tǒng)根據(jù)要求,包括客戶端軟件,服務(wù)器管理接口和軟交換服務(wù)器三個部分,所以可以簡單的分層如下:
(1)CALLBACK trigger層:其中配置文件config.xml,在這個文件里說明了CALLBACK.java中將要通過GCF連接VOS2009的連接端口、用戶名、密碼等。服務(wù)器處理外部文件CALLBACK.java執(zhí)行對應(yīng)主叫與被叫的撥號方案,并先后撥通主叫與被叫。
(2)軟交換 VOS2009管理接口 Generic Connection Framework (GCF):GCF為了在外部程序中執(zhí)行VOS2009,需要賦予權(quán)限,就在manager.conf中設(shè)置。
(3)CALLBACK engine層:CALLBACK engine的撥號方案通過新建一個專用于這個項(xiàng)目的 IVR配置文件Extensions.conf來完成。所有語音活動CDR記錄可以存儲到一個MYSQL數(shù)據(jù)庫中,也可以選擇以CSV文本文件的形式保存起來[4]。
圖2 VOIP CALLBACK系統(tǒng)分層
2.2 VOIP CALLBACK軟交換服務(wù)器系統(tǒng)設(shè)計
本方案中主叫呼叫是采用基于智能手機(jī)WiFi、GPRS傳送呼叫信息的形式,也就是通過打開一個HTTP連接,將要撥打的被叫號碼傳送給軟交換服務(wù)器,當(dāng)然,傳送到軟交換服務(wù)器的數(shù)據(jù)需要遵守一定的格式,發(fā)送的HIIP請求要通過MD5驗(yàn)證用戶是否符合通話活動要求,Apache服務(wù)器會到后臺數(shù)據(jù)庫查找,驗(yàn)證此主叫號碼是否能參加此次活動,如果驗(yàn)證通過,Generic Connection Framework (GCF)模塊會連接VOS2009 PBX服務(wù)器,確定IVR配置方案,國內(nèi)語音落地網(wǎng)關(guān)將按照服務(wù)器的 IVR組件配置發(fā)送連接請求給主叫和被叫,建立通話連接[5]。當(dāng)然,如果Apache服務(wù)器到后臺數(shù)據(jù)庫查找,主叫號碼未通過驗(yàn)證或者查找不到該號碼,Mysql 數(shù)據(jù)庫服務(wù)器會反饋“對不起,你已經(jīng)參加過此類活動,請您下載客戶端再使用本網(wǎng)絡(luò)電話”。該系統(tǒng)具體設(shè)計如圖3:
圖3 基于智能手機(jī)WiFi、GPRS功能的VOIP CALLBACK系統(tǒng)結(jié)構(gòu)圖
在本方案的 CALLBACK服務(wù)中,軟交換采用的是VOS2009軟交換系統(tǒng),它提供了第三方接入接口,用于支撐第三方軟件開發(fā)商在 VOS2009基礎(chǔ)上實(shí)現(xiàn)二次開發(fā)[6]。VOS2009軟交換的Web接口推薦使用Post方式:隱式提交,在瀏覽器地址欄不會出現(xiàn)參數(shù),較為安全。Web接口回應(yīng)信息采用如下格式:
返回值格式:返回值|文本(返回值為 0,表示成功,返回值為負(fù)數(shù),表示失敗,|后為失敗原因)。
以下為針對CALLBACK業(yè)務(wù)的數(shù)據(jù)接口格式如下:
http://VOS2009IP/thirdparty/CALLBACK.jsp?caller=&call ees=&number=&password=&CALLBACKBillingNumber=&CALLBACKBillingPassword=&calloutBillingNumber=&calloutBill ingPassword
該WEB格式各字段表示的含義如表1所示:
表1 CALLBACK業(yè)務(wù)的數(shù)據(jù)接口各參數(shù)字段
表1中的后四個參數(shù)段在VOIP CALLBACK業(yè)務(wù)中為不必填充參數(shù)的設(shè)置[7][8]。根據(jù)上表很容易在PC機(jī)上用PHP腳本語言編寫實(shí)現(xiàn) CALLBACK 程序。然而用 PHP實(shí)現(xiàn)的CALLBACK腳本程序只能運(yùn)行在PC為終端平臺的設(shè)備中,不具備便攜特性。為了能在智能手機(jī)上正常使用,需要重新設(shè)計,本方案以JAVA語言來設(shè)計實(shí)現(xiàn)CALLBACK功能。
為了能在手機(jī)上實(shí)現(xiàn) CALLBACK功能,本方案選擇了JAVA語言作為手機(jī)端的應(yīng)用程序的設(shè)計,主要是考慮到該程序的良好移植性,所設(shè)計的 CALLBACK也可以用于其它型號的支持JAVA語言的手機(jī)。在本文的CALLBACK程序設(shè)計主要是完成了以下兩個方面的工作:
3.1 人機(jī)交互界面(MMI)的設(shè)計
本方案的MMI界面設(shè)置主要是完成主叫號碼的輸入、被叫號碼的輸入以及按鍵功能偵聽,具體界面如圖4所示
MMI界面設(shè)計中主要用到如下幾類API函數(shù):
■ Command類:創(chuàng)建按鍵的顯示
■ CommandListener接口:用來響應(yīng)按下按鍵的事件;
■ Alert類:用于提醒發(fā)送成功、正在發(fā)送以及其它類似于對話框的功能
■ Form類:容納Item組合的屏幕顯示,包括只讀
■ 和可編輯的文本、圖象、日期指示器等;
■ StringItem類:用于只讀文本的顯示,本設(shè)計中用作功能說明文字;
■ TextField類:是一種可以編輯文本顯示框,用于主叫、被叫號碼的輸入及顯示;具體JAVA實(shí)現(xiàn)人機(jī)交互部分程序核心代碼如下:
public void startApp() {
//初始化 MIDlet,顯示 Form為當(dāng)前屏幕,用戶可以輸入URL。
display = Display.getDisplay(this);
form = new Form("輸入主叫被叫");
form.append(caller);//向當(dāng)前屏幕添加主叫編輯框
form.append(called);//向當(dāng)前屏幕添加被叫編輯框
form.append(state);//向當(dāng)前屏幕添加使用說明文字
form.addCommand(getCommand);//向當(dāng)前屏幕添加確認(rèn)按鈕
form.addCommand(exitCommand);//向當(dāng)前屏幕添加退出按鈕
form.addCommand(phoneCommand);//向當(dāng)前屏幕添加退出按鈕
由于神經(jīng)網(wǎng)絡(luò)可以構(gòu)建非線性映射關(guān)系,故可應(yīng)用于六維力傳感器的靜態(tài)標(biāo)定解耦。而神經(jīng)網(wǎng)絡(luò)中一般使用的是結(jié)構(gòu)較為簡單的BP神經(jīng)網(wǎng)絡(luò),如圖3所示。BP神經(jīng)網(wǎng)絡(luò)有兩個特點(diǎn):一是網(wǎng)絡(luò)為全連接,即在任一層上的任意一個神經(jīng)元與它之前層上的所有節(jié)點(diǎn)、所有神經(jīng)元都是連接的;二是網(wǎng)絡(luò)為一個多層前饋網(wǎng)絡(luò),具有一個或多個隱含層,信號從左到右一層一層逐步流過。該算法衡量誤差的標(biāo)準(zhǔn)為均方差,過程中每輸入一個樣本,便將網(wǎng)絡(luò)的實(shí)際輸出與期望輸出進(jìn)行對比,進(jìn)而調(diào)整網(wǎng)絡(luò)的參數(shù)以獲得最小的均方誤差。
form.setCommandListener(this);//設(shè)置監(jiān)聽機(jī)制
SplashCanvas splash = new SplashCanvas(this,form);
handler = new HttpHandler(this);
handler.start();
display.setCurrent(splash);
}else{
display.setCurrent(form);
}
}
public void displayError(String message){
//提示出錯信息
Alert alert = new Alert("錯誤信息");
alert.setType(AlertType.ERROR);
alert.setString(message);
alert.setTimeout(2000);
display.setCurrent(alert, form);
}
圖4 MMI人機(jī)交互界面
3.2 WiFi、GPRS發(fā)送撥號信息程序設(shè)計
由于移動信息設(shè)備的資源受限特性,在J2SE中可以使用java.net、java.io來訪問網(wǎng)絡(luò)服務(wù)的方法不適合在這里使用。Generic Connection Framework (以下簡稱 GCF)是在CLDC中定義的[9]。它的引入成功的解決了聯(lián)網(wǎng)的復(fù)雜類型,同時它基于接口設(shè)計,便于擴(kuò)展、提供創(chuàng)建連接的工作方法、使用標(biāo)準(zhǔn)URL 簡化了程序員的工作。在J2ME聯(lián)網(wǎng)設(shè)計中常采用三種聯(lián)網(wǎng)技術(shù):
①HTTP連接:該協(xié)議是基于TCP方式的協(xié)議,GCF在MIDP2.0中進(jìn)行了擴(kuò)展,提供了HttpConnection、HttpsConnection接口,這樣使得MIDlet 具備了通過Http 或者Https 協(xié)議與server 通信的能力。
②Socket連接:使用Socket也是采用可靠傳輸—TCP協(xié)議,是連接兩臺計算機(jī)最簡單的方法,但并不是所有的MIDP設(shè)備都能支持 Socket網(wǎng)絡(luò),該連接涉及的兩個接口是SocketConnection、ServerSocketConnection。
③UDP連接:UDP協(xié)議也稱用戶報協(xié)議,它是無連接的、不可靠的、沒有流量控制的傳輸層協(xié)議,在語音包傳輸過程中廣泛應(yīng)用,在網(wǎng)絡(luò)連接中采用UDPDatagramConnection()方式[10]。
圖5 CALLBACK語音實(shí)現(xiàn)流程圖
本方案的手機(jī)CALLBACK功能是通過一個HTTP連接將在MMI界面中輸入的被叫號碼、主叫號碼經(jīng)MD5加密后傳送到服務(wù)器,以便服務(wù)器確定是否發(fā)起CALLBACK呼叫。
GCF的使用非常簡單,主要集中在Connector 的open()方法上。所要做的就是提供一個標(biāo)準(zhǔn) URL 參數(shù)傳遞給 open方法。例如為了得到一個 HttpConnection 相關(guān)代碼應(yīng)該這樣寫:
String url = “http://myip:myport/myservlet”;
HttpConnection httpConn =
(HttpConnection)Connector.open(url);
CALLBACK語音實(shí)現(xiàn)流程圖5所示。在本階段主要解決兩個問題,一個是數(shù)據(jù)加密,另一個是連接服務(wù)器設(shè)置,具體程序?qū)崿F(xiàn)部分核心代碼如下:
public void setURL(String url){
this.URL = url;
}
public void stop(){
done = true;
}
public void run(){
while(!done){
//線程啟動進(jìn)入等待狀態(tài)
synchronized (midlet) {
try { midlet.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(!done){
try{
//建立HttpConnection連接
conn = (HttpConnection)Connector.open(URL);
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
conn.setRequestProperty("Content-Type",type);
conn.setRequestProperty("Content_Length",
new Integer(encodeData_send.length()).toString());
OutputStream os = conn.openOutputStream();
os.write(encodeData_send.getBytes());
int rc = conn.getResponseCode();
System.out.println(encodeData_send);
}catch(IOException ex){
midlet.displayError(ex.getMessage());
}
}
}
客戶端Callback APP軟件在智能手機(jī)平臺上成功運(yùn)行,界面如圖4。VOS2009軟交換服務(wù)器系統(tǒng)的搭建如圖3,本測試租用了合作單位圣山電訊香港有限公司的VOS2009軟交換服務(wù)器及其落地網(wǎng)關(guān)進(jìn)行,通過 WiFi、GPRS兩種數(shù)據(jù)傳送呼叫信息的形式順利實(shí)現(xiàn)回?fù)茈娫挼膿艽?。?WiFi環(huán)境和GPRS環(huán)境下多次測試,通話雙方表示很滿意,話音質(zhì)量的MOS值都達(dá)到 4.5以上。對于IP電話質(zhì)量的評價一般采用MOS(主觀平均評分)值評價,評測方法在ITU-TP.800中定義[11]。實(shí)際采用PESQ(語音質(zhì)量的知覺評估)客觀測試方法,在ITU-TP.862(PESQ)中定義。MOS值的定義如表2所示:
表2 MOS值定義標(biāo)準(zhǔn)
綜上所述,本文實(shí)現(xiàn)了一種網(wǎng)絡(luò)電話回?fù)芟到y(tǒng)(VOIP CALLBACK),不僅是對傳統(tǒng)回?fù)芟到y(tǒng)也是對傳統(tǒng)VOIP服務(wù)的一種改造和拓展應(yīng)用,它使得不具備使用 VOIP服務(wù)的設(shè)備,比如只要是可以運(yùn)行JAVA程序的智能手機(jī)、平板電腦等設(shè)備,能夠通過這樣的方式使用到VOIP便利、廉價的服務(wù),目前這樣的方式已經(jīng)廣泛的應(yīng)用在一些 VOIP服務(wù)中如多打電話。本設(shè)計的運(yùn)行效果特別是通話質(zhì)量達(dá)到了設(shè)計的基本要求,只是MMI界面可以做的更加美觀、應(yīng)用上還可以通過與軟交換服務(wù)器的WEB接口定制更多的服務(wù)。
[1] 劉洪林,蔣昌茂.AR1688 VOIP話機(jī)無線升級方案設(shè)計[J].單片機(jī)與嵌入式系統(tǒng),2010(1):44-46. [2] 王瑞剛,李燕.IP電話終端設(shè)備—原理、電路及應(yīng)用[M].西安:電子科技大學(xué)出版社,2003:155-158.
[3] 詹顯德.基于89C2051的電話回?fù)芷鳎跱].電子報, 2010-10-31.
[4] 貝高林.構(gòu)建VoIP Web callback系統(tǒng)[EB/OL].[2007-10-14]. http://blog.csdn. net/lin_bei/article/details/1824366.
[5] 宋茂強(qiáng).通信軟件設(shè)計基礎(chǔ)[M].北京:北京郵電大學(xué)出版社,2007:124-127.
[6] 蔣昌茂,程小輝,劉洪林,等.無線IP語音通信原理[M].北京:電子工業(yè)出版社,2010:68-72.
[7] 梁鴻斌.手機(jī) VoIP殘余回聲抑制技術(shù)的研究[J].通信技術(shù),2014(7):39-44.
Design and implementation of VoIP callback based on smart phone platform
In the traditional voice communication services, that called subscriber answer the phone for free is a major service provider already implemented, collectively known as the call-back system (Callback). Internet phone call-back system (VOIP CALLBACK) is to use the phone free features allow the caller to the very low rates of call-back system to obtain more quality voice communications services. This design on a smart phone platform via WiFi, GPRS data transfer information in the form of call-back functions with VoIP soft terminal and server systems, low cost, low power and portable applications VOIP voice communication for Softswitch initiate research and application.
VOIP CALLBACK; WiFi; GPRS; smart phone
TP393.04
A
1008-1151(2016)08-0001-04
2016-07-10
蔣昌茂(1971-),男,廣西桂林人,桂林師范高等??茖W(xué)校副教授,高級工程師,碩士,研究方向?yàn)镮P通信及物聯(lián)網(wǎng)應(yīng)用;劉洪林(1967-),男,廣西桂林人,桂林電子科技大學(xué)高級工程師,研究方向?yàn)槎嗝襟w技術(shù)、網(wǎng)絡(luò)通信及新型硬件電路設(shè)計應(yīng)用。