【问题标题】:Asterisk/Java: How do I get the start time of a call after rebooting my Java app?Asterisk/Java:重新启动 Java 应用程序后,如何获取呼叫的开始时间?
【发布时间】:2017-02-22 20:10:43
【问题描述】:

我正在使用 Asterisk 的 AMI,以便我的 Java 应用程序可以接收来自 pbx 的事件。我目前依靠 NewChannelEvent 来获取通话的开始时间。

但是,当我重新启动系统时,我无法检索通话的开始时间。

解决这个问题最优雅的方法是什么?最好的情况是我希望我的 Java 应用程序接收带有呼叫详细信息的事件。

【问题讨论】:

标签: java asterisk pbx


【解决方案1】:

您可以使用星号的 Master.csv 中的日志。它在

/var/log/asterisk/cdr-csv/Master.csv 

它会给你更多有用的数据。

【讨论】:

    【解决方案2】:

    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)})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多