Asterisk-java 发起呼叫的 billsec 和其他数据

Asterisk-java originated call's billsec and other data

我可以从响应事件中获取 billsec 或发起呼叫的持续时间吗?我需要始发呼叫最终数据。

OriginateAction originateAction = new OriginateAction();
originateAction.setChannel("SIP/xxxxxx");
originateAction.setContext("xxxxx");
originateAction.setExten("xxxxx");
originateAction.setCallerId("xxxxx");
originateAction.setAsync(Boolean.TRUE);
originateAction.setPriority(1);

managerConnection.sendAction(new StatusAction());
ManagerResponse mr = managerConnection.sendAction(originateAction);
//ResponseEvents mr = managerConnection.sendEventGeneratingAction(originateAction);
System.out.println(mr.getResponse());

int billsec = ???

您需要在拨号方案中标记 CDR(userfield) 或 CDR(accountcode)

之后您可以根据您的要求在 mysql 或其他数据库中收集 cdr。

不,一旦呼叫是通过管理器发起的,控制权就在 Asterisk 拨号方案中——不再是您的 JAVA 程序。为了提取该信息,您需要在拨号方案中向 "h" 分机添加适当的处理程序。根据 DIALSTATUS,它会让您访问 DIALEDTIME 和 ANSWEREDTIME 变量,其中将包含您正在寻找的信息。