发布一个C#实现的Asterisk的管理系统
协议: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 |
登陆密码 |
Asterisk的管理服务配置在:/etc/asterisk/manager.conf
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 |
对接等待时所播放的彩铃 |
注意:asterisk必须存在对应TRUNK用户
l 配置电信或移动对接描述
配置和外网对接的用户信息,可以在PhoneTRUNK中添加相关信息。
Prefix |
号码前缀 |
Enabled |
是否有效 |
Format |
号码格式化 |
TRUNK |
转接用户 |
DialTimeOut |
对接等待超时时间 |
DialMusic |
对接等待时所播放的彩铃 |
注意:asterisk必须存在对应TRUNK用户
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#实现的Asterisk的管理系统相关推荐
- 给小孩发布一个有趣的网站 在线动物园
给小孩发布一个有趣的网站 在线动物园,可以实时看到动物园里的动物实时摄像头. 非常有意思,大热天也不用到动物园里看了. http://zoo.baidu.com/video.html
- 怎么用linux设计一个小程序,“Linux”小程序发布一个月后,我们发现了什么
原标题:"Linux"小程序发布一个月后,我们发现了什么 这一个月来,这个小程序得到了八千多人的使用,一百多位贡献者实际参与了翻译贡献,其中贡献最高的"Datura st ...
- 发布一个持续集成的npm包并加上装逼小icon
前言 随着入坑时间的增长,很多小伙伴在使用第三方轮子时不满足于下载xxx.js,script标签引入xxx.js,然后使用轮子的原始方式.想要高大上一点,于是小伙伴们跟npm邂逅了.后来有的小伙伴又想 ...
- 发布一个用于WinCE的矢量图控件
发布一个在wince操作系统下,采用.net compact framework 1.0 ( c#)开发的矢量图控件,我于2007年3月份集中一个月的经历完成了它.当然,它的前身是2005年12月我写 ...
- python最新版本-官方宣布不再维护Python2,并每年发布一个新版本
原标题:官方宣布不再维护Python2,并每年发布一个新版本 今晚免费Python直播课,扫码观看 Python 2终于走到了尽头. 官方宣布,新一年的钟声响起之时(2020年1月1日),就是Pyth ...
- 发布一个实体类属性生成小工具,给开发加点料
做了很久的代码生成工具,基本上都是基于表生成实体类属性的,把数据库表的信息拿出来,然后之乎者也后生成一个标准的实体类,包含字段.属性.描述等东西. 是基于整个数据库生成整个框架代码的工具,如我的代码生 ...
- 教你一步步发布一个开源库到 JCenter
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 今天想来分享下,如何一步步自己发布一个开源库到 JCenter 这方面的博客网上已经特别多了,所以本篇并不打算仅仅只是记录流程步骤而 ...
- 手把手教你发布一个Python包
本文主题如下: 编写一个包(Python 源代码),但不是本文的重点. 编译包,观察编译后的文件. 发布包,发布的包可以有多种类型. 如何在 Pypi 中查看已发布的包. 注意: 本文编写的包在 Py ...
- 使用django创建一个单表查询的图书管理系统
使用django创建一个单表查询的图书管理系统 在settings.py文件中添加(用于连接mysql数据库) DATABASES = {'default': {'ENGINE': 'django.d ...
最新文章
- Java RESTful 框架的性能比较
- Spring boot显示登录用户
- 线索二叉树(基于链表存储树结点)
- 将可执行文件以资源的方式加入到另一个可执行文件并释放
- leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)
- 泛型接口(C# 编程指南)
- java format 补足空格_11 个简单的 Java 性能调优技巧
- 智商税?苹果1.8米连接线卖949元、3米的1169元被吐槽:高攀不起
- 如何下载matlab,如何下载MATLAB?
- Windows下使用platform.pk8 和platform.x509.pem生成jks签名文件
- Qt之QThread基本用法
- SCUT J.O: 百步梯
- android 涨潮动画加载_潮汐apk客户端-潮汐android最新版APP下载v2.0.1.1 免费版-腾牛安卓网...
- html 图片循环轮播,如何在Web端实现动画切换效果一致的无限循环图片轮播?
- 电脑如何打开虚拟化设置?
- 1. 学校在线考试系统
- 大律法(OTSU法)
- 三维激光扫描系统基本原理及分类
- 各大手机厂商开发者文档网址
- (附源码)计算机毕业设计SSM黄淮学院二手物品交易平台
热门文章
- 数据类型的判断 --Object.prototype.toString.call(obj)精准检测对象类型
- 如何利用ZBrush中的DynaMesh创建身体(一)
- 方法分享:有序集合分段
- Spring.NET 1.3.1 新特性探索系列2——WCF命名空间解析器
- 如何访问ASP.Net网站bin目录内的文件
- 读书印记 - 《技术元素》
- 凡事向内求,我心是一切,一切是我心,我是一切的根源,我永远都会成为潜意识中的我。...
- 【转】crontab 详解
- NSObject中的performSelector用法简介
- ---WebCam网络摄像头7 cmos--yuv rgb , Format............:V4L2_PIX_FMT_YUYV