Archive for '開發'
Asterisk 的 DSP 模組優化
Asterisk DSP
Posted: 一月 4th, 2010 under 系統設定, 開發.
Tags: Asterisk, CallProgress, DSP
Comments: none
測試:Cisco Unified 3951 SIP Phone 和 Asterisk 1.6.x 的結合
Cisco Unified 3951 SIP Phone (http://www.cisco.com/web/CN/products/products_netsol/voices/products/3951/index.html) 是一只平價(以 Cisco 的牌子,500 - 600 元的確超值,但只限在中國國內銷售,而香港沒有得賣,可惜),而支持 SIP Protocol (RFC 3261, 3311, 3264 SDP, 3515 SIP Resister/Redirect Service)的 Hard Phone。因為她是以 Standard SIP Protocol 為基礎,所以搭配 Asterisk IP PABX 應該沒有問題。剛剛今年新年過後,有一位朋友找我幫手,拜託我幫忙測試 Cisco 3951 如何怎樣連接 Asterisk。測試結果是成功的。
Posted: 九月 1st, 2009 under 系統設定, 開發.
Tags: Asterisk, Cisco
Comments: 10
Asterisk 打造家居智能系統
Asterisk 作為一部開源而且擁有強大的擴展功能的電話系統,在家居智能系統上,她可以擔任家用電話交換機的角色。利用電話來遠程控制家裏的電器。
Posted: 八月 20th, 2009 under 開發, 隨想.
Tags: 家居智能
Comments: none
AgentCallBackLogin() 在 Asterisk 1.6.x 的解決方法
參考:http://hostseries.com/agentcallbacklogin-alternative/
AgentCallBackLogin()這個Dialplan 功能在 Asterisk 1.6.x 後已經被删去了。因此,用 Asterisk 1.6.x 的 ACD 功能的話這部分便需要自己用 dialplan 解決了。以下的 source code 是小弟自己在 Google 找出來的。功能有待驗證。
voicemail.conf
[agent]
1050 => 1234,Robert,agents@hostseries.com,attach=yes|saycid=yes|envelope=yes|delete=yes|nextaftercmd=no
extensions.conf
[internal]
exten => 701,1,VMAuthenticate(@agent|)
exten => 701,n,AddQueueMember(SALES|local/${AUTH_MAILBOX}@agents/n)
exten => 701,n,AddQueueMember(SUPPORT|local/${AUTH_MAILBOX}@agents/n)
exten => 701,n,Read(AGENT_SIP|agent-newlocation)
exten => 701,n,Set(DB(agent_sip/${AUTH_MAILBOX})=${AGENT_SIP})
exten => 701,n,Playback(agent-loginok)
exten => 701,n,Playback(goodbye)
exten => 701,n,Hangup
exten => 702,1,VMAuthenticate(@agent|)
exten => 702,n,RemoveQueueMember(SALES|local/${AUTH_MAILBOX}@agents/n)
exten => 702,n,RemoveQueueMember(SUPPORT|local/${AUTH_MAILBOX}@agents/n)
exten => 702,n,Set(oldvar=${DB_DELETE(agent_sip/${AUTH_MAILBOX})})
exten => 702,n,Playback(agent-loggedoff)
exten => 702,n,Playback(goodbye)
exten => 702,n,Hangup
[agents]
exten => 1050,1,Set(AGENT_SIP=${DB(agent_sip/1050)})
exten => 1050,n,Dial(SIP/${AGENT_SIP})
Posted: 四月 12th, 2009 under ACD, Fax, 開發.
Tags: ACD
Comments: none
IAX2 現已成為 RFC-5456
IAX2 (Inter-Asterisk eXchange Version 2) 現已成為 RFC-5456
全文:
http://www.rfc-editor.org/authors/rfc5456.txt
Posted: 三月 9th, 2009 under 開發.
Tags: IAX
Comments: none
Asterisk 1.6 初試啼聲 - Asterisk 1.6.x 的實際環境測試
Asterisk 1.6 初試啼聲!
實作環境如下:
硬件:
Intel Desktop Board D865GBF
Intel Pentium 4 2.6G CPU
4 x 1GB DDR 400 RAM
2 x WD 80GB SATA HDD
Digium TE110 T1 board
軟件:
CentOS 5.2
Asterisk 1.6.0.3
Asterisk Addons 1.6.0
libpri 1.4.7
DAHDI 2.1.0.3
DAHDI Tools 2.1.0.2
SpanDSP 0.0.5 pre 4
mpg123 1.6.4
T1 是用香港某大電信供應商,所以今次並不是實驗室環境下工作,是直接接駁街線,一個完全真實的環境下工作。
關於 T1 下的Switch type 和 Protocol的設定如下:
/etc/dahdi/system.conf 的內容節錄:
span=1,1,0,esf,b8zs
bchan=1-23
dchan=24
echocanceller=mg2,1-23
/etc/asterisk/chan_dahdi.conf 的內容節錄:
switchtype=4ess
allow=ulaw
signalling=pri_cpe
echocancel=yes
實作1: 收發傳真,Asterisk 作為一台 Fax Server 的實作
以往,Asterisk 在收發傳真這一功能上一直不合格。雖然Asterisk可以安裝 SpanDSP 這一 library 來支援傳真的功能,但可惜SpanDSP 在傳真這功能上一直未如理想。以往我們會倚靠一套老牌的 OpenSource [...]
Posted: 二月 22nd, 2009 under Fax, 安裝, 開發.
Tags: Asterisk, FastAGI, Hylafax
Comments: 4
需要輸入密碼的 Call Bridging
Asterisk 可以很簡單實作一個 call bridging。
[callin]
exten => _X.,1,Answer()
exten => _X.,n,Dial(SIP/9911)
exten => _X.,n,Hangup()
當 SIP/9911 拿起電話Answer後,Call Bridging 便完成。
但是,有時候在 Call Bidging 時想要對方輸入一些東西(比方說,如上方的例子,SIP/911需要輸入密碼,密碼正確才能夠跟對方通話)。Asterisk 是可以做到,但需要的方法有點兒繁複。
Posted: 十二月 1st, 2008 under 開發.
Tags: Asterisk
Comments: 3
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 功能的手機或裝置,我便可以連線到這地區網”煲電話粥”。不過,我不清楚香港的電信條例有沒有監管這類連網,我只知道只要在這連網內的通訊不會直接轉駁到固網便可。所以,建網前首先需要參考本地的電信條例,以防觸犯法律。
Posted: 十月 5th, 2008 under 總類, 開發, 隨想.
Tags: Asterisk, Fon, Google
Comments: none
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。
Posted: 八月 6th, 2008 under 開發.
Tags: Asterisk Modules
Comments: none
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
Posted: 八月 6th, 2008 under 開發.
Tags: Asterisk Modules
Comments: none