中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

 首頁 > 新聞 > 專家觀點 >

《FreeSWITCH 1.2》:外部命令FreeSWITCH

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


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

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

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

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

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

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

  · 訪問事件套接字

  · 事件套接字庫

  · 在PHP中使用ESL實例

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

  概要

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

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

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

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

  事件系統(tǒng)架構

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

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

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

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

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

相關閱讀:

分享到: 收藏

專題