分類

Slideshow

Get the Flash Player to see the slideshow.

彙整

近期迴響

Asterisk 相關

Learning

Who am I

經常收看

金錢世界

Site search

 

十一月 2008
« 十月    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

標籤

近期文章

Archive for '開發'

Google 新戰略:Flexible Communication Systems and Methods 和利用Fon組建基礎電話通訊聯網

http://www.techcrunch.com/2008/09/25/googles-end-run-around-the-wireless-carriers/

簡而言之,Google 這個 patent 的原意是使用戶可以何時何地自由選擇一個合適的網路。希望可以做到開放的無線通訊環境。

其實有網友提到,用 Fon (http://www.fon.com) 做一個基礎連網,每一個Fon router 分配到不同的地方,然後用Asterisk 當電話交換機,我們也可以做到一個地區性無線通訊連網。只要我有一部 有 WiFi 功能的手機或裝置,我便可以連線到這地區網”煲電話粥”。不過,我不清楚香港的電信條例有沒有監管這類連網,我只知道只要在這連網內的通訊不會直接轉駁到固網便可。所以,建網前首先需要參考本地的電信條例,以防觸犯法律。

Asterisk Native 模組開發 (二)

在Asterisk1.2裏,Dialplan每一句都是呼叫Application Call,所有底層 Function call 和variables 是被封裝在 Application Call 裏。例如以下的Dialplan:

exten => s,1,Answer()
exten => s,n,Background(hello-world)
exten => s,n,hangup

我 們開發模組,目的是要提供新的功能給 DialPlan 使用。不論是普通的 apps, PBX core,或許是 codecs。每一行在DialPlan也會呼叫 application,而各function call 也包括在每一application 裏。所以,Application 對 Asterisk 只是一個介面而己,Asterisk 是經 Applicaion 來調用各個不同的 function call。

Asterisk Native 模組開發 (-)

我們利用Asterisk建一個電話系統時,我們很多時候會用 Dailplan 來開發。其實,Dialplan 已經可以應付到日常的Asterisk 開發。如果還有一些較為複雜的,例如 IVRS,Asterisk 也提供了方便使用的AGI 和 FastAGI 來開發較複雜的 CallFlow Logic。但是,如果有些時候 AGI 也沒有能力應付,或者 CallFlow 需要搜索一些並不是平時的 ODBC data sources,是一些極其麻煩的資料,又或者PBX 的資源很拮据,而當中我沒有FastAGI Server 可用的話,自行開發 asterisk 模組可能是一個有趣的選擇。

以下幾張 Blog 我也會嘗試記錄 Asterisk 模組的開發過程。而我只記錄版本 1.2.x 的模組開發。因為我看過1.4.x有很多地方,例如 Macro 的用法也和 1.2.x 有很大分別,而且我主力系統也是 1.2.x,所以我會以 1.2.x 為標準。

所需工具和知識:
1, 一套 Asterisk 1.2.13 的 source code。
2, gcc 要有 C/C++ 有基本認識
3, Linux 基本應用
4, 當然不少得 Asterisk 的基本認識

–continue

Asterisk Gateway Interace (AGI) 續篇

在上一篇文中,我對 AGI 有粗略的介紹,在後段也介紹了基於 FastAGI 建立了一個
系統。這一篇將會是上一篇後段的延續,講解那系統利用 FastAGI 較為細節的部分。

我們自行設計的 Application Server 是基於 MS-Windows 設計。它是以 Windows Service 形式運作。它會開一個 TCP Socket 4573 接收來自 Asterisk 的 FastAGI 要求。接受要求後,Asterisk 的Dialplan 便把控制權移交到 Application Server 中,而Asterisk 那方便一直等待,直至 Application Server 這方的工作完成為止。

當然,Application Server 這方的控制程序並不是硬寫的。它借用了 Mozilla 的
SpiderMonkey 模組作一個 Script Engine。SpiderMonkey 原是 Mozilla 和 FireFox的 JavaScript Engine。那麼,開發人員便可以像開發DialPlan一樣地簡單,用JavaScript 在Application Server上開發 Call Flow。

http://www.mozilla.org/js/spidermonkey/

看過以下的網址後,你會發現 AGI 每一指令正是反映了Asterisk 在Dialpan 中的
一道指令。而AGI 沒有提供的便可能以用 “Exec” [...]

Asterisk Gateway Interace (AGI)

Asterisk 提供了名為 Asterisk Gateway Interface (以下簡稱為 AGI) 的功能,開發者可能以透過 Dialplan
以外的工具或程式 (E.g. Perl, Shell Script,C++, Java, PHP, Mono, etc….)來開發Asterisk的應用程序
,控制Asterisk 的 telephony channel,包括Play music,讀寫DTMF等等。

AGI 是一個獨立程式,Asterisk 會經由Dialplan 調用 AGI() 這一程式來執行AGI。它執行後便會用 stdin
和 stdout 來控制Asterisk。直至那 channel 收線為止。

AGI 在Asterisk 下,會根據本身的用途和行為特徵分了四種類型。
1, AGI - AGI 應用程序是與Asterisk 一同在本機內執行。
2, EAGI - 有別於 AGI,它除了用 stdin 和 stdout 外,它還會把   音訊輸出到 File descriptor 3。其他應用程式可以用它的
File descriptor 3來搜取這channel 的音訊。
3, FastAGI - [...]

Asterisk Gateway Interace (AGI)

Asterisk 提供了名為 Asterisk Gateway Interface (以下簡稱為 AGI) 的功能,開發者可能以透過 Dialplan
以外的工具或程式 (E.g. Perl, Shell Script,C++, Java, PHP, Mono, etc….)來開發Asterisk的應用程序
,控制Asterisk 的 telephony channel,包括Play music,讀寫DTMF等等。

AGI 是一個獨立程式,Asterisk 會經由Dialplan 調用 AGI() 這一程式來執行AGI。它執行後便會用 stdin
和 stdout 來控制Asterisk。直至那 channel 收線為止。

AGI 在Asterisk 下,會根據本身的用途和行為特徵分了四種類型。
1, AGI - AGI 應用程序是與Asterisk 一同在本機內執行。
2, EAGI - 有別於 AGI,它除了用 stdin 和 stdout 外,它還會把   音訊輸出到 File descriptor 3。其他應用程式可以用它的
File descriptor 3來搜取這channel 的音訊。
3, FastAGI - [...]