Archive for '開發'
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: 2
需要輸入密碼的 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
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” [...]
Posted: 八月 6th, 2008 under 系統設定, 開發.
Tags: AGI
Comments: 4
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 - [...]
Posted: 八月 6th, 2008 under 系統設定, 開發.
Tags: AGI
Comments: none
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 - [...]
Posted: 八月 6th, 2008 under 開發.
Tags: AGI
Comments: none