【发布时间】:2017-02-22 20:10:43
【问题描述】:
我正在使用 Asterisk 的 AMI,以便我的 Java 应用程序可以接收来自 pbx 的事件。我目前依靠 NewChannelEvent 来获取通话的开始时间。
但是,当我重新启动系统时,我无法检索通话的开始时间。
解决这个问题最优雅的方法是什么?最好的情况是我希望我的 Java 应用程序接收带有呼叫详细信息的事件。
【问题讨论】:
我正在使用 Asterisk 的 AMI,以便我的 Java 应用程序可以接收来自 pbx 的事件。我目前依靠 NewChannelEvent 来获取通话的开始时间。
但是,当我重新启动系统时,我无法检索通话的开始时间。
解决这个问题最优雅的方法是什么?最好的情况是我希望我的 Java 应用程序接收带有呼叫详细信息的事件。
【问题讨论】:
您可以使用星号的 Master.csv 中的日志。它在
/var/log/asterisk/cdr-csv/Master.csv
它会给你更多有用的数据。
【讨论】:
Asterisk 有两个 3 机制
1) AMI
2) CEL https://wiki.asterisk.org/wiki/pages/viewpage.action?pageId=5242932 CEL 允许您查看多个事件,包括数据库中的调用开始。
3) 话单https://wiki.asterisk.org/wiki/display/AST/Asterisk+12+CDR+Specification 您也将开始通话,但仅在通话结束后。
您还可以更改拨号方案,使其执行 func_odbc 并在拨号方案中您最喜欢的表中标记呼叫开始。
---func_cdr.conf---
[put_active]
writesql=insert into active_calls(uniqueid,calldate,start,src,did,accountcode) values('${VAL1}','${VAL2}',1,'${VAL3}','${VAL4}','${VAL5}');
dsn=mysql_general
在 extensions.conf 中
exten => _X.,1,Set(ODBC_put_active()=${CDR(uniqueid)},${CDR(start)},${CDR(src)},${CDR(did)},${CDR(accountcode)})
【讨论】: