首頁(yè) > 新聞 > 專(zhuān)家觀點(diǎn) >

《FreeSWITCH 1.2》:高級(jí)撥號(hào)規(guī)則概念

2014-04-25 13:59:33   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  在上面的章節(jié)中,我們已經(jīng)學(xué)習(xí)了FreeSWITCH XML配置文件的強(qiáng)大。并且用戶學(xué)習(xí)了撥號(hào)規(guī)則的入口和使用XML來(lái)設(shè)置基本的配置。在這一章中,我們繼續(xù)進(jìn)一步研究撥號(hào)規(guī)則的基本結(jié)構(gòu),XML撥號(hào)規(guī)則的功能,如何通過(guò)基本的功能實(shí)現(xiàn)復(fù)雜的結(jié)果。

  一些詞條可能在這一章中重復(fù)出現(xiàn),但是我們還要介紹一些已經(jīng)在以前章節(jié)涉及的一下基本內(nèi)容,包括基本的變化規(guī)則功能,并且我們還要解釋撥號(hào)規(guī)則系統(tǒng)如何工作,為什么這樣工作。通常情況下,很多用戶使用了FreeSWITCH的XML撥號(hào)規(guī)則,但是沒(méi)有真正了解其中的原理,導(dǎo)致系統(tǒng)不能拓展或無(wú)法排查復(fù)雜的問(wèn)題。這一章節(jié)的目的是讓用戶成為一個(gè)FreeSWITCH專(zhuān)家,能夠了解他們開(kāi)發(fā)的撥號(hào)規(guī)則是如何工作的,為什么這樣工作。

  在這個(gè)章節(jié)中,我們假設(shè)用戶已經(jīng)有了FreeSWITCH的基本知識(shí),對(duì)路由和處理呼叫和XML配置文件有了基本的了解。如果用戶安裝配置了FreeSWITCH的演示系統(tǒng),并且測(cè)試了一些基本的呼叫,那么對(duì)用戶在這一章節(jié)的學(xué)習(xí)會(huì)非常有幫助。

  在這一章節(jié),我們將討論以下內(nèi)容:

  ·撥號(hào)規(guī)則總覽
  ·基本撥號(hào)規(guī)則概念
  ·解析和執(zhí)行
  ·XML 撥號(hào)規(guī)則模塊
  ·XML 撥號(hào)規(guī)則預(yù)處理
  ·使用變量
  ·通過(guò)正則表達(dá)式測(cè)試變量
  ·傳遞變量到其他的legs
  ·撥號(hào)規(guī)則中的Macros
  ·避免陷阱
  ·多分機(jī)設(shè)置
  ·XML extensions 特別屬性
  ·XML的可選方法

  撥號(hào)規(guī)則總覽

  FreeSWITCH的撥號(hào)引擎是一款相當(dāng)靈活的軟件。 如果用戶有使用軟交換的背景,用戶可能了解一些撥號(hào)規(guī)則的概念。用戶通過(guò)系統(tǒng)本身的語(yǔ)言預(yù)設(shè)了這些流程,規(guī)定了一些靜態(tài)的邏輯語(yǔ)句來(lái)執(zhí)行一些指令 (他們是 應(yīng)答呼叫,播放文件,采集撥號(hào)數(shù)字和抓接電話)。如果任何功能不能通過(guò)軟交換預(yù)設(shè)的命令或有效邏輯語(yǔ)句來(lái)實(shí)現(xiàn),那么就沒(méi)有其他的辦法可以實(shí)現(xiàn)這個(gè)任務(wù)。

  在FreeSWITCH環(huán)境中, 撥號(hào)規(guī)則的處理是通過(guò)可加載的模塊來(lái)完成。當(dāng)處理呼叫時(shí),模塊的邏輯可以被調(diào)用來(lái)完成這些任務(wù),同時(shí)用戶可以根據(jù)自己的業(yè)務(wù)需求,加載多個(gè)模塊來(lái)支持不同的處理方式。這是FreeSWITCH區(qū)別于其他軟交換的地方,也是經(jīng)常被忽略的地方。通過(guò)撥號(hào)規(guī)則處理的模塊化設(shè)計(jì),創(chuàng)建了一種非常自由靈活的錄音呼叫方式。用戶可以開(kāi)發(fā)自己的模塊或調(diào)用可選的模塊來(lái)處理用戶自己的撥號(hào)規(guī)則,并且為用戶自己的撥號(hào)規(guī)則創(chuàng)建一套新的命令集。和其他的軟交換系統(tǒng)相比,F(xiàn)reeSWITCH可以支持用戶通過(guò)外部的腳本語(yǔ)言來(lái)處理自己的撥號(hào)規(guī)則。FreeSWITCH所有模塊都是使用C語(yǔ)言編寫(xiě),所以集成方便,并且允許用戶使用內(nèi)部的API 接口和鏈接庫(kù)(如有必要)無(wú)需調(diào)用外部的腳本語(yǔ)言。這樣的話,在處理呼叫時(shí),F(xiàn)reeSWITCH將占用非常少的系統(tǒng)資源。

  為什么撥號(hào)規(guī)則處理實(shí)行模塊化設(shè)計(jì)呢?首先需要理解的是為什么我們需要一個(gè)撥號(hào)規(guī)則。

  讓我們現(xiàn)在忘記程序語(yǔ)言,回顧一下軟交換的原理。如果我們分解一下大部分的語(yǔ)音系統(tǒng),我們會(huì)發(fā)現(xiàn)每個(gè)通話都按照一個(gè)邏輯流程圖來(lái)執(zhí)行。事實(shí)上,如果我們問(wèn)客戶關(guān)于電話業(yè)務(wù)的需求,他們經(jīng)常也會(huì)回答是或否,或者指定一個(gè)相應(yīng)的執(zhí)行指令?蛻舻臉I(yè)務(wù)需求就可以轉(zhuǎn)換成一個(gè)基本的呼叫流程圖。無(wú)論用戶正在做什么,如果用戶通過(guò)圖例的形式來(lái)表達(dá)整個(gè)業(yè)務(wù)需求的過(guò)程時(shí),其實(shí)用戶已經(jīng)開(kāi)始設(shè)計(jì)撥號(hào)規(guī)則了。本質(zhì)上說(shuō),用戶已經(jīng)在構(gòu)想一個(gè)撥號(hào)規(guī)則的模塊來(lái)滿足業(yè)務(wù)需求。

  讓我們拿一個(gè)普通的呼叫流程作為舉例,然后分拆成更小的部分。進(jìn)一步觀察這個(gè)舉例,我們可以看到在這個(gè)流程圖中,我們?cè)O(shè)置了很多邏輯假設(shè),撥號(hào)規(guī)則必須處理這些假設(shè)的邏輯語(yǔ)句。例如,用戶為了對(duì)是否是工作時(shí)間這個(gè)假設(shè)做一個(gè)判斷,用戶必須對(duì)比工作時(shí)間或下班時(shí)間。為了判斷用戶是否輸入了按鍵1,撥號(hào)規(guī)則處理機(jī)制必須支持解析按鍵式電話機(jī)輸入;跅l件對(duì)比,用戶可以讓系統(tǒng)執(zhí)行相應(yīng)的命令-轉(zhuǎn)接電話,播放語(yǔ)音,掛機(jī),等等。所有這些要求會(huì)組成一些邏輯命令,撥號(hào)規(guī)則會(huì)使用這些命令執(zhí)行電話流程。在很多系統(tǒng)環(huán)境中,通過(guò)編寫(xiě)一些晦澀難以理解的配置代碼來(lái)設(shè)置一個(gè)邏輯判斷,這樣的方式具有很多局限性,也可能讓用戶發(fā)瘋。在FreeSWITCH環(huán)境下,用戶可以通過(guò)自己熟悉的語(yǔ)言來(lái)編寫(xiě)這些邏輯。
  
  未完待續(xù)······  

分享到: 收藏

專(zhuān)題