如何从asterisk中得到实时的通话信息

很多时候我们都想知道系统中通话情况, 谁在打电话, 打了多长时间等等, 但是asterisk仅当通话结束的时候才会将通话记录保存下来, 于是我们不得不自己写agi脚本或是特殊的拨号规则(dialplay)来获取这些数据, 现在我们可以使用astercc来得到系统通话的实时信息, 而不需要对原有的asterisk系统进行任何的改动, 不用agi, 不用改dialplan, astercc 可以和任何基于asterisk的系统一起工作.

astercc以一个linux守护进程的方式工作, 当然它也可以工作在windows环境下, 它通过从asterisk AMI接口获得信息然后将通话信息保存到两个mysql表中.
第一个表是 "curcdr", 这个表保存着正在进行的通话, 当通话开始时会有一条新的记录产生, 当通话结束时这条记录会被转移到另外一个表 "mycdr"

curcdr中的记录格式为

mysql> select * from curcdr;
+------+------+----------+---------------+-----------------+---------------------+---------------------+-----------------+-----------------+-------------+---------+--------+--------+----------------+----------------+-------------+
| id | src | dst | srcchan | dstchan | starttime | answertime | srcuid | dstuid | disposition | groupid | userid | credit | callshopcredit | resellercredit | creditlimit |
+------+------+----------+---------------+-----------------+---------------------+---------------------+-----------------+-----------------+-------------+---------+--------+--------+----------------+----------------+-------------+
| 3880 | 8807 | 8806 | SIP/8807-6fc2 | SIP/8806-d962 | 2008-02-28 12:26:01 | 2008-02-28 12:26:10 | 1204172801.3813 | 1204172801.3814 | link | 0 | 0 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| 3881 | 8000 | 84350822 | SIP/8000-1684 | SIP/trunk1-a73d | 2008-02-28 12:26:13 | 0000-00-00 00:00:00 | 1204172812.3815 | 1204172813.3816 | dial | 0 | 0 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
+------+------+----------+---------------+-----------------+---------------------+---------------------+-----------------+-----------------+-------------+---------+--------+--------+----------------+----------------+-------------+



相对应的mycdr的格式为

mysql> select * from mycdr order by id desc limit 0,2;
+------+---------------------+------+----------+---------------+-----------------+----------+---------+-------------+-------------+-----------+-----------------+-----------------+----------+--------+----------------+----------------+---------+--------+
| id | calldate | src | dst | channel | dstchannel | duration | billsec | disposition | accountcode | userfield | srcuid | dstuid | calltype | credit | callshopcredit | resellercredit | groupid | userid |
+------+---------------------+------+----------+---------------+-----------------+----------+---------+-------------+-------------+-----------+-----------------+-----------------+----------+--------+----------------+----------------+---------+--------+
| 3682 | 2008-02-28 12:26:13 | 8000 | 84350822 | SIP/8000-1684 | SIP/trunk1-a73d | 5 | 0 | NO ANSWER | | UNBILLED | 1204172812.3815 | 1204172813.3816 | | 0.0000 | 0.0000 | 0.0000 | 0 | 0 |
| 3681 | 2008-02-28 12:24:40 | 8806 | 8807 | SIP/8806-c36f | SIP/8807-0139 | 8 | 6 | ANSWERED | | UNBILLED | 1204172719.3811 | 1204172720.3812 | | 0.0000 | 0.0000 | 0.0000 | 0 | 0 |
+------+---------------------+------+----------+---------------+-----------------+----------+---------+-------------+-------------+-----------+-----------------+-----------------+----------+--------+----------------+----------------+---------+--------+
2 rows in set (0.00 sec)

所以如果你想从你的asterisk中得到实时通话信息与你自己的系统相结合(CRM, call center, billing等), 你可以使用astercc, 它提供了5个免费的通道, 也就是说它可以同时记录你的asterisk系统的5个通话, 可以应对普通的应用, 而且经过测试, astercc可以支持到240个并发通话.

astercc是分布式的, 它可以与asterisk, mysql运行在不同的系统上, 并且支持多asterisk系统, 你可以使用astercc连接不同的asterisk, 将结果写入同一个mysql数据库.

astercc这个进程可以从 http://sourceforge.net/project/showfile ... _id=202441 下载, 如果你只是需要astercc这个进程提供的功能, 那么你只需要文件包内daemon目录下的astercc和astercc.conf文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值