• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>

    《FreeSWITCH 1.2》:外部命令FreeSWITCH

    2014-04-29 13:52:35   作者:   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


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

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

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

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

      · 事件系統的基本概要

      · 事件系統的架構

      · 訪(fǎng)問(wèn)事件套接字

      · 事件套接字庫

      · 在PHP中使用ESL實(shí)例

      · 使用事件系統創(chuàng )建一個(gè)會(huì )議管理員

      概要

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

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

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

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

      事件系統架構

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

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

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

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

      未完待續······

    分享到: 收藏

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 游戏| 芮城县| 体育| 新干县| 察哈| 即墨市| 岳阳县| 布拖县| 日喀则市| 买车| 墨江| 尼木县| 遂平县| 富阳市| 塘沽区| 思茅市| 商丘市| 唐海县| 泸州市| 木兰县| 赫章县| 西安市| 杨浦区| 定南县| 南川市| 无极县| 旅游| 瓦房店市| 东安县| 永修县| 上栗县| 阜平县| 措美县| 甘德县| 加查县| 镇平县| 长葛市| 社会| 久治县| 灵宝市| 滦平县| http://444 http://444 http://444 http://444 http://444 http://444