2015-04-24 25 views
1

我可以從響應事件採取billsec或始發呼叫的持續時間嗎?我需要始發呼叫最終數據。Asterisk-java發起的呼叫的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 = ??? 
+0

http://stackoverflow.com/questions/1770010/how-do-i-measure-time-elapsed-in-java的可能重複? ('System.nanoTime()';) – xerx593

+1

不,我想發起呼叫的billsec,它關於asterisk-java庫。 – cagdas

回答

0

你需要標記CDR(userfield)或CDR(accountcode)的撥號方案

之後,你可以在你的要求收集MySQL或其他數據庫CDR。

+1

在java方面有沒有解決這個問題的方法?如eventlistener? – cagdas

+0

是的,你可以放入dialplan UserEvent命令並在java上監聽它。但是,這是無用的,簡單的只是檢查MySQL表,不是嗎? – arheops

0

沒有,一旦呼叫已經通過發起經理,控制在Asterisk的撥號方案 - 不再與您的JAVA程序。爲了提取這些信息,您需要在撥號方案內爲您的「h」分機添加適當的處理程序。根據DIALSTATUS,它可以讓你訪問DIALEDTIME和ANSWEREDTIME變量,這些變量將包含你正在尋找的信息。