免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3963 | 回复: 0
打印 上一主题 下一主题

介绍如何从asterisk中得到实时的通话信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-28 21:12 |只看该作者 |倒序浏览
很多时候我们都想知道系统中通话情况, 谁在打电话, 打了多长时间等等, 但是asterisk仅当通话结束的时候才会将通话记录保存下来, 于是我们不得不自己写agi脚本或是特殊的拨号规则(dialplay)来获取这些数据, 现在我们可以使用astercc来得到系统通话的实时信息, 而不需要对原有的asterisk系统进行任何的改动, 不用agi, 不用改dialplan, astercc 可以和任何基于asterisk的系统一起工作.

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

curcdr中的记录格式为


Code: Select all
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的格式为


Code: Select all
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/showfiles.php?group_id=202441 下载, 如果你只是需要astercc这个进程提供的功能, 那么你只需要文件包内daemon目录下的astercc和astercc.conf文件

转自forums.astercc.org
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP