说起Asterisk上的计费,大家一定会想到炙手可热的A2Billing或者后起之秀Asterbilling.,这里我向大家啰嗦介绍的是elastix内置的billing模块 A2Billing功能强大,但是配置也超繁琐.而且主要功能是面向运营的,对于一般应用(企业自用)来说颇有杀鸡用牛刀之嫌. Asterbilling设计巧妙,利用一个守护进程,通过AMI消息来生成CDR记录,不需要透过AGI来影响extensions.conf(dial plan),效率高(稳定性还不好说,我对于AMI的了解还处于学习阶段).但出于对开源的热爱,我对闭源的产品兴趣缺缺(Asterbilling 的WEB部分是开源的--也不得不开源,呵呵,但守护进程只有5通道并发许可----只能玩玩测试.我还没有搞清楚这5通道是怎么计算的,如果是asterisk的channel概念,2个分机间的操作就玩死了,一个sip分机,一个IAX分机,转接,hold,留言,这些可都是并发通道) Elastix内置的Billing模块(位于report模块中的Billing子模块中).这是一个和传统pbx上的计费软件相似的基于字头(prefix)判断通话类型的计费系统.设置简单,还有简单的过滤条件和报表,可以满足日常计费的需求. Elastix的内置billiing设置起来是比较简单的,大家可以参考elastix without tears(本站资料下载板块中有链接).但可能是因为太简单的关系吧,关于具体的设置就比较少.为了方便入门的朋友快速部署计费,我简单把设置步骤说一下 1.理解billing的基本概念 billing模块是基于传递到Trunk的号码的字头(prefix)来判断话务类型,对于国内来说,就是00开头的是国际长途(IDD),以0开头,第二个号码不为0的是长途电话(Long Distance),不是0开头的号码视为市话(市话又分为公益电话---114.119...被叫付费电话800-XXXX-XXXX,信息台---),不同的话务类型有不同的费率 关于rate offset(费率补偿),很多朋友卡在这里,其实rate offset类似于服务费的概念,也就是按照费率和通话时长计算话费后,然后加上rate offset定义的金额得出最后的话费(很可惜,官方rate offset不支持负数,如果有这样的需求需要修改php文件) 备注: rate offset的值只能是一个正小数,例如0.0(单纯输入0会出错,建议输入的是0.000) 2.配置实例 为了简单起见,我们在本例子中只区分普通市话,长话和国际长话 2.1.环境 Elastix 1.3.2 TDM400P 2.2 配置步骤 2.2.1 设置要要进行计费的trunk 在Elastix的pbx模块中的Trunk子选项中,定义一个Zap Trunk(默认已有),注意,该trunk的Dial Rule保留空白 2.2.2 修改default rate(市话费率) 在elastix的reprot模块中选择Billing子模块下的billing setup选项中 修改default rate configuration的内容 rate:0.11(市话每分钟的费率,当然这个和电信的实际计费标准是有出入的) default rate offset: 0.0 2.2.2 选择对那些Trunk进行计费 在elastix的report模块中选择Billing子模块下的billing setup选项中 的Trunk bill configuration的中勾选那些trunk要进行计费 这里我们选择的是默认的Zap/go 2.2.3 设置其它类型话务的费率 2.2.3.1 国际长话 在elastix的reprot模块中选择Billing子模块下的Rates选项中 的Create new rate prefix:00 name:IDD rate:2.000(打到不同国家国际长话的费率是不同的,这只是一个释例) rate offset:0.000 trunk:Zap/g0 保存 2.2.3.2 国内长途 在elastix的reprot模块中选择Billing子模块下的Rates选项中 的Create new rate prefix:0 name:DDD rate:0.700(和电信的实际计费有出入,电信是按6秒为一个计费单位) rate offset:0.000 trunk:Zap/g0 保存 2.3 测试 拨打市话,长话,国际长话,你可以在billing子模块下的billing report中看到计费信息了 备注: 我们在rate中设置计费单位是分钟,但在billing report中的计费结果是按照秒来计算的,而且answer代表的是Sip应答消息而不是对方实际接听电话,所以计费中的起始时间是不准的,CDR记录中的通话持续时间要大于实际通话时间,所以我说rate offset不能输入负数是很遗憾的 不行了,实在太困,等有精神了再继续完善吧,希望我这块小砖头能引来大家的玉(回帖大大的要,期待大家在计费上的心得) |