A2Billing 代码分析

本文作者:[url=http://blog.csdn.net/liuyuquan/]liuyuquan[/url]
文件清单
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
类实现

[code]
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) 分裂数据
}

[/code]

主题测试文章,只做测试使用。发布者:zhangyang,转转请注明出处:https://www.voip88.com/a2billing-%e4%bb%a3%e7%a0%81%e5%88%86%e6%9e%90/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年 8月 26日 下午3:20
下一篇 2022年 8月 26日 下午3:20

相关推荐

  • elastix对asterisk源代码的修改

    请教一下大家[font=simsun][size=16px][color=#444444][font=Verdana][size=12px]elastix对asterisk源代码的修改有哪些?[/size][/font][/color][/size][/font]

    文档 2022年 8月 26日
    1100
  • Install ATCOM AX-4E+OpenR2

    [i=s] 本帖最后由 Robert.Ao 于 2010-4-30 17:32 编辑 [/i] Please refer to the attachment.

    文档 2022年 8月 26日
    1100
  • 关于Elastix交流!

    本人建立了一个Elastix的交流QQ群,群号为:3812164 欢迎大家加入一起交流Elastix的使用心得,也方便新手学习…..

    文档 2022年 8月 26日
    1000
  • 拨电话对方听不到声音

    各位仁兄,我使用的是Free PBX 2.5.1.2,软话机是Zoiper,远程登录后使用软话机打外线及内线电话,对方都听不到我的声音,但是我可以听到对方的声音,不知哪里设置有问题?请大家指导。感激不尽。

    文档 2022年 8月 26日
    1000
  • PCI语音卡问题

    注意到TDM410语音卡采用的芯片是Infineon的AN983B,但这颗芯片实际上是做网卡用的,那么它的实现原理是怎样的,驱动方面有没有特别的要求?

    文档 2022年 8月 26日
    1200

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
自6.2开始主题新增页头通知功能,购买用户可免费升级到最新版体验