asterrc 是asterCC软件包中的一个计费脚本,asterrc与astercc进程一起工作,可以为你的asterisk系统提供计费功能。

在’curcdr’中有一些用于计费的字段,它们包括:

`credit` : 当前通话分机的实时话费 (根据’myrate’表中的费率计算)
`callshopcredit`: 当次通话话吧的实时话费 (rates in table ‘callshoprate’)
`resellercredit`: 当次通话代理商的实时话费 (rates in table ‘resellerrate’)
`creditlimit`: 如果对当前通话设置了话费限额,当’credit’值达到这个限额值的时候,通话将会被自动挂断
`destination` : 从’myrate’表中读取的目的地信息
`memo` : 根据’myrate’表对当前通话的计费信息

在一个通话期间,asterrc 将实时维护更新上面的字段。此外,在’mycdr’ 表中,也有与上面相同的字段,当一个通话结束后,该通话的最终信息会被存入’mycdr’表中,我们可以通过这个表获得历史通话信息。

在’clid’, ‘accountgroup’,'resellergroup’ 表中也包含了计费相关字段:

`curcredit` 当前发生的话费 (作为计费标识)
`credit_clid` 分机的话费总计
`credit_group` 组(话吧)的话费总计
`credit_reseller` 代理商的话费总计

下面的段落详细介绍asterrc的工作流程:

假设我们定义了一个费率表:给代理商的费率是每分钟0.1元,代理商给话吧的费率是每分钟0.2元,话吧给最终用户的费率是每分钟0.4元,计费间 隔都是60秒,当最终用户拨打一个电话时,astercc得到实时通话信息并存入’curcdr’中,asterrc从’curcdr’中发现这条信息, 当接通时间到达第一个60秒时,asterrc会将本条通话信息的’credit’, ‘callshopcredit’, ‘resellercredit’字段分别插入值0.4,0.2,0.1,到了第二个60秒时,asterrc将分别更新’credit’, ‘callshopcredit’, ‘resellercredit’字段的值为0.8, 0.4, 0.2……当到了两分半(150秒)时,客户挂断了电话,此时我们会得到此次通话的最终计费信息’credit’值为 1.2,’callshopcredit’值为0.6,’resellercredit’值为0.3。同时,在 clid, accountgroup 和resellergroup表中的计费字段值也会被更新 credit_clid = credit_clid + 1.2, credit_group = credit_group + 0.6, credit_reseller = credit_reseller + 0.3。

字段 ‘curcredit’ 在一个通话结束后会被更新,用来存储当前发生的话费累计,并且同’creditlimt’字段值做比较,如果账户设限了限制类型并且curcredit值 大于或等于creditlimt值,则此账户所属要机的通话会被挂断,当一个代理商/话吧/用户续交话费,则我们要在管理界面中将设值curcredit 值等于当前值减去交费额(curcredit - {续交话费金额}) ,此时curcredit的值又小于creditlimit的值,账户所属分机可以继续使用。

举个例子,假设一个代理商向你交了500元话费,你设置他的限制类型为预付费,则它在resellergroup表中相关字段值应为 creditlimit = 500, then it is curcredit = 0, limittype= prepaid, creditlimit = 500,此时,这个代理商下属的话吧开始营业,resellergroup表中的curcredit(根据费率表resellerrate为代理商计费) 随之不断增加,当curcredit值达到500时,此代商理所属话吧的话机将无法继续拨打电话,然后代理商又续交了2000元的话费,这时你可以通过以 下任意一种操作为其充值:

1. 修改代理商的creditlimit 变成500+2000 = 2500,但是我们推荐使用此种方式,因为对creditlimit的操作系统中是没有历史记录的,而且creditlimit的数值不断增大,也不便于管理。

2. 将curcredit的值减少2000, 也就是 curcredit = 500-2000 = -1500,这个操作会被系统记录在 credithistory中,你可以随时进行查看。

希望本文可以帮助你更好的了解asterBilling的工作原理。