本文作者:liuyuquan
a2billing.php 关键程序,直接在extensions中调用
libs_a2billing/Class.A2Billing.php A2Billing类的实现,主要是业务计费与AGI的接口
libs_a2billing/Misc.php 常用函数
libs_a2billing/Class.RateEngine.php RateEngine类的实现,实现费率的加载、查询、转换以及通话计费功能
libs_a2billing/phpagi_2_14phpagi-asmanger.php AGI_AsteriskManager类实现,phpagi管理
libs_a2billing/phpagi_2_14phpagi.php AGI类实现,php与AGI的接口
libs_a2billing/db_php_lib/Class.Table.php Table类实现
a2billing.php|参数1|参数2|
参数1 idconfig=1 决定使用a2billing.conf中的agi_conf1还是agi_conf2.....
参数2 mode=standard 拨号模式
参数3 areacode
类实现
class A2Billing {
A2Billing()
Reinit () 重置(清空)类私有变量
conlog($str, $vbl=1) 输出信息到控制台
debug( $debug, $agi, $file, $line, $buffer_debug) 输出信息到控制台,并且写入日志文件,a2billing.conf[agi-conf]debug决定是否输出到控制台
write_log($output, $tobuffer = 1, $line_file_info = '') (a2billing.conf|debugshell决定是否写日志文件) 日志文件默认在 /tmp/a2biling.log
set_dbhandler ($DBHandle) 设置数据库操作句柄,程序中没有使用。
set_instance_table ($instance_table) 为class.Table实例
load_conf( &$agi, $config=NULL, $webui=0, $idconfig=1, $optconfig=array()) 加载/etc/asterisk/a2billing.conf
play_menulanguage ($agi) 如果设置了a2billiing.conf|play_menulanguage,播放语言选择语音,如果没有设置play_menulanguage而设置了force_language,采用force_language设置的语言
get_agi_request_parameter($agi) 获取AGI送过来的参数,主要包括agi_callerid、agi_channel、agi_uniqueid、agi_accountcode、agi_extension
isolate_cid() 去掉主叫号码前后的'<'、'>' callingcard_acct_start_inuse($agi, $inuse) 设置卡正在使用的标志
callingcard_ivr_authorize($agi, &$RateEngine, $try_num) 授权,如果a2billiing.conf|use_dnid等于1(默认为0),直接使用用户所拨号码,则提示输入被叫号码,取得号码后如果是速拨号码就查询相应的正式号码。如果输入'*0',播放balance。根据被叫号码查询费率组。播放可以拨打的时间。
call_sip_iax_buddy($agi, &$RateEngine, $try_num) 判断呼叫号码是否在cc_sip_buddies和cc_iax_buddies中,如果存在,免费通话??。如果设置了a2billing|record_call,则录音。通话完成后记录通话到cc_call表。
call_did($agi, &$RateEngine, $listdestination) 直拨电话,录音,实时记录通话记录
fct_say_balance ($agi, $credit, $fromvoucher = 0) 播放账户余额
fct_say_rate ($agi, $rate) 播放费率,每分钟多少钱
refill_card_with_voucher ($agi, $try_num) voucher refill card
MDP() 生成卡号
apply_rules ($phonenumber) 除去a2billing.conf|international_prefixes
callingcard_cid_sanitize($agi) 获取设置的对外公布号码
callingcard_auto_setcallerid($agi)
callingcard_ivr_authenticate($agi) 验证卡,负责函数~~~~
callingcard_ivr_authenticate_light (&$error_msg)
DbConnect() 连接数据库
DbDisconnect() 断开数据库
splitable_data ($splitable_value) 分裂数据
}