通过http post收集Asterisk cdr记录

时间:2013-04-17 02:51:22

标签: http url voip asterisk cdr

我正在使用Asterisk并希望收集cdr记录。我搜索了一会儿,发现我们可以使用模块将cdr记录收集到CSV文件或MySQL中。

我想知道是否已经有一个模块让我通过http post收集cdr记录。因此,当呼叫结束时,Asterisk会将cdr记录发布到预定义的URL。

先谢谢。

2 个答案:

答案 0 :(得分:0)

我不知道这样的模块,但你可以在Hangup上执行一个应用程序。

您可以使用函数${CURL(url[,post-data])}

exten => h,n,Set(result=${CURL(http://SERVER/cdr.php?\
             cdranswer=${CDR(answer)}&exten=${EXTEN}&cidnum=${CALLERID(num)})}) 
exten => h,n,Noop(${result}) 

另一种方法是在挂断时执行脚本:

exten => h,n,System('php -f /opt/scripts/cdr.php \
                        ${CallerID(num)} ${EXTEN} "${CDR(answer)}" ${EPOCH}');

也许你也可以使用$ {CDR(billsec)}。

答案 1 :(得分:0)

另一种选择是使用CRON作业每隔几分钟运行一次Ruby或PHP脚本,以便自上次运行脚本以来提取和HTTP POST所有CDR。我已经为客户完成了这项工作并且运作良好。

那就是说,我发现如果我需要“在机器外”访问CDR,那么从长远来看最简单的方法就是设置MySQL复制;将CDR写入PBX计算机,从报告计算机上的复制副本中读取它们。一开始它的设置比较集中,但是后来其他一切都变得更加容易了。