发布一个C#实现的Asterisk的管理系统
協(xié)議:Apache License Version 2.0
svn:https://smark.svn.codeplex.com/svn/Smark/Smark.Asterisk.Services
l??????? 主要功能
?????? 通過AMI和AGI來接管Asterisk的拔打控制,實現(xiàn)多臺asterisk網(wǎng)內(nèi)拔打可配置、對接電信移動可配置、回拔和預(yù)約回拔、拔打記錄和費用結(jié)算等功能。
進行程序測試的asterisk版本是:1.6.2
?
?
???????AMI的主要實現(xiàn)是監(jiān)控用戶登陸所在的服務(wù)器并登記處理和向asterisk發(fā)起回拔功能。
AGI的主要實現(xiàn)是接管用戶拔打規(guī)則,根據(jù)配置來處理用戶當拔打的號碼是網(wǎng)內(nèi)拔打還是對接到電信或移動的落地接口服務(wù)器、登記用戶拔打信息和費用計算等功能。
l??????? 配置AMI服務(wù)
AMI服務(wù)主要是連接Asterisk后接讀取Asterisk的處理信息或執(zhí)行對Asterisk的管理操作。程序會根據(jù)AMINet表的記錄來連接相關(guān)服務(wù)器。
| IPAddress | Asterisk IP地址 |
| Port | 服務(wù)端口 |
| UserName | 登陸用戶 |
| UserPWD | 登陸密碼 |
Asterisk的管理服務(wù)配置在:/etc/asterisk/manager.conf
l??????? 配置AGI服務(wù)
AGI是程序本地監(jiān)聽的服務(wù),主要是接管Asterisk的拔號處理。程序根據(jù)AGINet表的記錄來啟動AGI服務(wù)。
| IPAddress | 監(jiān)聽的IP地址 |
| Port | 監(jiān)聽的端口 |
?
l??????? 拔號規(guī)則流程
當AGI直接收用戶拔號后先查詢號碼是否本網(wǎng)號碼,根據(jù)號碼登陸的IP來查找對接的AsteriskIP地址,當找不到的情況下就去查找號碼對應(yīng)描述的電信或移動對接服務(wù)器,如果以上都不能找到的情況返回本網(wǎng)內(nèi)對接。
?
?
?????? 配置/etc/asterisk/extensions.conf把特定的號碼規(guī)則轉(zhuǎn)發(fā)到AGI來處理。
l??????? 配置asterisk網(wǎng)內(nèi)對接描述
用于存在多臺Asterisk的時候描述相關(guān)對接的用戶,可以在AsteriskTRUNK中添加相關(guān)信息。
| IPAddress | AsteriskIP地址 |
| TRUNK | 轉(zhuǎn)接用戶 |
| Format | 號碼格式化描述;如:0-1就是把開頭0用1代替后再對接過去 |
| DialTimeOut | 對接等待超時時間 |
| DialMusic | 對接等待時所播放的彩鈴 |
注意:asterisk必須存在對應(yīng)TRUNK用戶
l??????? 配置電信或移動對接描述
配置和外網(wǎng)對接的用戶信息,可以在PhoneTRUNK中添加相關(guān)信息。
| Prefix | 號碼前綴 |
| Enabled | 是否有效 |
| Format | 號碼格式化 |
| TRUNK | 轉(zhuǎn)接用戶 |
| DialTimeOut | 對接等待超時時間 |
| DialMusic | 對接等待時所播放的彩鈴 |
注意:asterisk必須存在對應(yīng)TRUNK用戶
l??????? 用戶信息
用戶費用信息表Accounts,只是實現(xiàn)簡單的費用所以表結(jié)構(gòu)非常簡單。
| AccountID | 帳號名 |
| Amount | 金額 |
可以根據(jù)自己需要添加一些字段;如果用戶無效,當用戶使用該帳號拔的時候根據(jù)有效性來提示用戶。
l??????? 費用
Fee是用來描述拔打費用單價的。
| Prefix | 計費前綴 |
| Price | 單價 |
| Second | 單位時間(秒為單位) |
?
l??????? 發(fā)起回拔
只需要向表CallBack添加相關(guān)記錄,系統(tǒng)就自動發(fā)起回拔。
| ID | ? |
| Account | 計費帳號 |
| Callerid | ? |
| FromPhone | 主叫號 |
| ToPhone | 被叫號 |
| Context | 拔號規(guī)則類別 |
| Priority | 拔號規(guī)則類別的第X的規(guī)則 |
| Codes | 編碼:ulaw,alaw,g729等,具體情況 |
| State | 記錄狀態(tài) |
| CreateTime | 創(chuàng)建時間 |
| ? | ? |
?
l??????? 語音回拔服務(wù)的IVR
由asterisk發(fā)起回拔給主叫用戶,主叫用戶接聽后進行語音提示用戶輸出需要拔打的號碼,輸入#后進行轉(zhuǎn)呼。
[smark]
exten => 99999999,1,Goto(CallBack,s,1)
exten => _.,1,AGI(agi://192.168.1.128:9001,${EXTEN},"HENRY")
?
[CallBack]
exten => s,1,Answer()
exten => s,2,Set(TRY=0)
exten => s,3,set(CALLPHONE=)
exten => s,4,Background(InputCalled)
exten => s,5,Set(TRY=$[${TRY}+1])
exten => s,6,GotoIf($[${TRY}<3]?8)
exten => s,7,Goto(smark,cberror,1)
exten => s,8,Noop()
exten => s,9,WaitExten(10)
exten => s,10,Goto(3)
exten => #,1,Goto(smark,${CALLPHONE},1)
exten => *,1,Goto(s,3)
exten => i,1,Set(CALLPHONE=${CALLPHONE}${INVALID_EXTEN})
exten => i,2,NoOp(${CALLPHONE})
exten => i,3,Goto(s,8)
exten => h,1,Goto(smark,cberror,1)
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的发布一个C#实现的Asterisk的管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树表达规定形式的代数表达式并计算表达
- 下一篇: C#面试知识点