我正在使用Asterisk并希望收集cdr记录。我搜索了一会儿,发现我们可以使用模块将cdr记录收集到CSV文件或MySQL中。
我想知道是否已经有一个模块让我通过http post收集cdr记录。因此,当呼叫结束时,Asterisk会将cdr记录发布到预定义的URL。
先谢谢。
答案 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计算机,从报告计算机上的复制副本中读取它们。一开始它的设置比较集中,但是后来其他一切都变得更加容易了。