亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

 首頁 > 新聞 > 專家觀點 >

《FreeSWITCH 1.2》:外部命令FreeSWITCH

2014-04-29 13:52:35   作者:   來源:CTI論壇   評論:0  點擊:


  FreeSWITCH 事件系統(tǒng)是FreeSWITCH最有趣的模塊之一。用戶已經(jīng)學(xué)習(xí)了如何使用各種靜態(tài)配置維護(hù)和腳本語言來配合FreeSWITCH工作。事件系統(tǒng)實現(xiàn)了對FreeSWITCH實時動態(tài)的控制。使用了事件系統(tǒng)才使得FreeSWITCH變得更加有趣。

  事件系統(tǒng)支持外部的程序作為一個監(jiān)聽者來監(jiān)聽系統(tǒng)正在執(zhí)行的的任何任務(wù)。通過外部監(jiān)聽的方式可以支持一個實時的互動,通信軟交換系統(tǒng)的電話可以通過外部的軟件或者已經(jīng)進(jìn)行對接。在FreeSWITCH環(huán)境中,幾乎所有發(fā)生的指令可以生成一系列的事件信息。外部實體可以檢測到這些事件。類似于在平臺信息隊列軟件使用的publish/subscribe(或 "pub-sub")系統(tǒng),這些事件機(jī)制已經(jīng)調(diào)整來滿足FreeSWITCH 事件系統(tǒng)的需求。

  事件系統(tǒng)是雙向工作的:支持外部的程序來監(jiān)聽事件,然后外部程序可以對FreeSWITCH發(fā)送事件。用戶可以通過自己的程序來實時地接收和發(fā)送事件。這樣的組合方式可以實現(xiàn)大部分用戶可以想象到的方式對FreeSWITCH進(jìn)行外部控制。

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

  · 事件系統(tǒng)的基本概要

  · 事件系統(tǒng)的架構(gòu)

  · 訪問事件套接字

  · 事件套接字庫

  · 在PHP中使用ESL實例

  · 使用事件系統(tǒng)創(chuàng)建一個會議管理員

  概要

  事件系統(tǒng)是FreeSWITCH的神經(jīng)中樞,支持本地軟件或外部軟件訂閱在軟交換系統(tǒng)中正在發(fā)生的任務(wù)流。在FreeSWITCH中,執(zhí)行任何的任務(wù)會生成一個事件。接收一個新的電話呼叫會導(dǎo)致一個事件。結(jié)束一個呼叫同樣也導(dǎo)致一個事件發(fā)生。對硬盤寫入系統(tǒng)的日志會導(dǎo)致一個事件。甚至于講話或者靜音也會導(dǎo)致一個事件。每個事件變成了事件流的一個部分,事件流可以觸發(fā)一個事件類型,事件類別和各種事件信息。對端軟件可以監(jiān)聽這些事件,通過事件執(zhí)行相應(yīng)的任務(wù),例如,通過TCP 套接字連接發(fā)送文本流。

  事件通過另外一種方式對FreeSWITCH提供一個功能擴(kuò)展。事件不同于鉤子或模塊(在實時環(huán)境中,這些會影響處理和呼叫控制)。事件提供一個異步機(jī)制(或非阻塞/隊列)來維持系統(tǒng)的任務(wù)跟蹤。這些事件通過其他軟件生成。在實際環(huán)境中,用戶可以通過外部程序來控制系統(tǒng)中多個任務(wù)活動。

  在這樣的例子中,用戶系統(tǒng)可能突然有一個呼叫高峰,這個環(huán)境高峰可能生成新的事件。用戶可以通過web瀏覽器來處理這些事件,但是瀏覽器不能馬上應(yīng)對這個呼叫量。使用隊列事件系統(tǒng),用戶可以等待瀏覽器提高處理能力,來應(yīng)對此時的呼叫量,避免核心軟交換引擎的阻塞(自己阻塞呼叫)。

  在這個章節(jié),我們將討論事件系統(tǒng)幾個不同的方面-從外部程序接收和處理事件和對FreeSWITCH發(fā)送事件。我們涵蓋的模塊包括,從外部啟用事件系統(tǒng),生成的事件類型和對事件類型調(diào)用的方法。最后,我們將了解一個實例使用場景和代碼來幫助用戶開啟一個使用環(huán)境,通過自己的程序來控制FreeSWITCH。

  事件系統(tǒng)架構(gòu)

  FreeSWITCH中的事件子系統(tǒng)支持以下兩個方面的功能,一個是最大化的處理設(shè)計,另外一個是事件優(yōu)先級設(shè)計,優(yōu)先級取決于事件類型和事件系統(tǒng)加載結(jié)果。在FreeSWITCH的事件系統(tǒng)中包含兩個層次的處理。第一層提供一個內(nèi)部事件處理路由和一個吸納FreeSWITCH自身內(nèi)部事件的接口。第二層是一個模塊架構(gòu),提供客戶端對事件的訪問。通過兩個功能單元的分割獨立,實現(xiàn)了publish/subscribe風(fēng)格的事件系統(tǒng)。

  在內(nèi)部的事件層,F(xiàn)reeSWITCH 提供了核心功能來處理發(fā)生在系統(tǒng)級別和通道級別的事件。系統(tǒng)的任何部分包括模塊可以發(fā)布或廣播事件。目前有兩個核心類型事件-系統(tǒng)事件和日志事件。核心子系統(tǒng)部分或模塊可以生成系統(tǒng)事件。他們包括從系統(tǒng)內(nèi)部定時器心跳到會議子系統(tǒng)事件,例如會議一方加入或者離開會議室。每次一個日志寫入到FreeSWITCH日志文件時,系統(tǒng)會生成一個

  日志事件。這些子系統(tǒng)實際上由三個事件隊列組成,每個隊列有自己的線程和優(yōu)先級。如果一個隊列被填滿以后,系統(tǒng)將自動跳到下一個隊列,直到全部事件系統(tǒng)被填滿。當(dāng)呼叫或者系統(tǒng)功能處于處理狀態(tài)時,后端的線程會生成事件,這些事件保存到內(nèi)存中等待內(nèi)部的訂閱者來調(diào)用。一旦訂閱的模塊或子系統(tǒng)提取了信息,這個事件信息將被消滅。通過這樣的方式,事件系統(tǒng)的拓展性得到了提升,已經(jīng)使用的事件立即清除,這樣當(dāng)事件用戶等待提取隊列事件時不會導(dǎo)致呼叫被阻塞。

  FreeSWITCH使用它的模塊架構(gòu)可以支持通過外部軟件來處理事件。一個事件處理模塊可以訂閱內(nèi)部事件信息,對其進(jìn)行格式化,然后發(fā)送到外部程序。這樣的模塊稱之為事件處理event handlers。FreeSWITCH沒有綁定很多的event Handlers,但是這些event handlers功能非常豐富,處理能力強(qiáng)大。我們將再次回顧這些模塊,學(xué)習(xí)如何使用這些模塊。

  未完待續(xù)······

相關(guān)閱讀:

分享到: 收藏

專題

大新县| 华安县| 隆林| 峨山| 准格尔旗| 布拖县| 广河县| 石门县| 仁布县| 高淳县| 甘南县| 西昌市| 罗平县| 阳高县| 泗洪县| 阿巴嘎旗| 舟曲县| 鄢陵县| 夏河县| 龙川县| 崇礼县| 教育| 广南县| 武安市| 沙雅县| 南郑县| 长宁区| 肃宁县| 巴里| 武穴市| 安阳市| 梅河口市| 双辽市| 台北县| 辽阳县| 枣阳市| 鱼台县| 石家庄市| 黄平县| 瑞昌市| 乐都县|