发布一个C#实现的Asterisk的管理系统
2010-05-18 03:07
489 查看
协议:Apache License Version 2.0
svn:https://smark.svn.codeplex.com/svn/Smark/Smark.Asterisk.Services
l 主要功能
通过AMI和AGI来接管Asterisk的拔打控制,实现多台asterisk网内拔打可配置、对接电信移动可配置、回拔和预约回拔、拔打记录和费用结算等功能。进行程序测试的asterisk版本是:1.6.2
AMI的主要实现是监控用户登陆所在的服务器并登记处理和向asterisk发起回拔功能。
AGI的主要实现是接管用户拔打规则,根据配置来处理用户当拔打的号码是网内拔打还是对接到电信或移动的落地接口服务器、登记用户拔打信息和费用计算等功能。
l 配置AMI服务
AMI服务主要是连接Asterisk后接读取Asterisk的处理信息或执行对Asterisk的管理操作。程序会根据AMINet表的记录来连接相关服务器。IPAddress | Asterisk IP地址 |
Port | 服务端口 |
UserName | 登陆用户 |
UserPWD | 登陆密码 |
l 配置AGI服务
AGI是程序本地监听的服务,主要是接管Asterisk的拔号处理。程序根据AGINet表的记录来启动AGI服务。IPAddress | 监听的IP地址 |
Port | 监听的端口 |
l 拔号规则流程
当AGI直接收用户拔号后先查询号码是否本网号码,根据号码登陆的IP来查找对接的AsteriskIP地址,当找不到的情况下就去查找号码对应描述的电信或移动对接服务器,如果以上都不能找到的情况返回本网内对接。配置/etc/asterisk/extensions.conf把特定的号码规则转发到AGI来处理。
l 配置asterisk网内对接描述
用于存在多台Asterisk的时候描述相关对接的用户,可以在AsteriskTRUNK中添加相关信息。IPAddress | AsteriskIP地址 |
TRUNK | 转接用户 |
Format | 号码格式化描述;如:0-1就是把开头0用1代替后再对接过去 |
DialTimeOut | 对接等待超时时间 |
DialMusic | 对接等待时所播放的彩铃 |
l 配置电信或移动对接描述
配置和外网对接的用户信息,可以在PhoneTRUNK中添加相关信息。Prefix | 号码前缀 |
Enabled | 是否有效 |
Format | 号码格式化 |
TRUNK | 转接用户 |
DialTimeOut | 对接等待超时时间 |
DialMusic | 对接等待时所播放的彩铃 |
l 用户信息
用户费用信息表Accounts,只是实现简单的费用所以表结构非常简单。AccountID | 帐号名 |
Amount | 金额 |
l 费用
Fee是用来描述拔打费用单价的。Prefix | 计费前缀 |
Price | 单价 |
Second | 单位时间(秒为单位) |
l 发起回拔
只需要向表CallBack添加相关记录,系统就自动发起回拔。ID | |
Account | 计费帐号 |
Callerid | |
FromPhone | 主叫号 |
ToPhone | 被叫号 |
Context | 拔号规则类别 |
Priority | 拔号规则类别的第X的规则 |
Codes | 编码:ulaw,alaw,g729等,具体情况 |
State | 记录状态 |
CreateTime | 创建时间 |
l 语音回拔服务的IVR
由asterisk发起回拔给主叫用户,主叫用户接听后进行语音提示用户输出需要拔打的号码,输入#后进行转呼。[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)
相关文章推荐
- C# 实现一个简单的图书管理系统(无数据库)新手教程1
- 用C#实现一个简单的图书管理系统(课程设计)
- 使用python实现一个简单的学生信息管理系统
- 信息管理系统开发架构 配置实现列表展示分析图形及编辑等 构建信息分析展示平台 C#快速开发架构
- 用一个系统去控制管理多个现有系统, 实现核心集中的统一管理控制系统
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第一篇:前期环境准备
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现
- 基于C#中的Trace实现一个简单的日志系统
- C#.NET 权限管理系统组件 - 大数据读写分离实现的例子
- 基于JAVA集合框架实现一个简单的学生管理系统
- C#.NET 权限管理系统组件 - 大数据读写分离实现的例子
- C#.NET 通用权限管理系统中的数据集权限设置实现参考界面(商业化成熟权限管理系统,提供全部源码)
- php--实现一个简单的学生管理系统
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布
- 大公司业务流程审批组件【部门的员工—部门经理—部门副总—人力经理—人力副总】实现参考,强大的基础数据管理工具-C#.NET通用权限管理系统组件
- 开源一个C# Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 用C语言单链表实现的一个DotA2英雄管理系统(其实我一直羞于承认这算一个系统。。)