2016-11-15 13 views
0

Каков наилучший способ получить длительность звонка B-leg в Asterisk?Asterisk - получить длительность вызова B-ноги

A num -------- (a-leg) -------> Asterisk PBX -------- (b-leg) -------- ---> B Num

простой диалплан является:

[bleg_duration] 
exten => _X.,1,Answer() 
same => n,Wait(10) 
same => n,Dial(dahdi/G1/${B_NUM},30,gS(60)) 
same => n,Noop(${CDR(billsec)}) 
same => n,Noop(${DIALEDTIME}) ;Time for the call (seconds) 
same => n,Noop(${ANSWEREDTIME}) ;Time from dial to answer (seconds) 
same => n,Hangup() 

поэтому, если номер вызова к этому диалплану, подождать в течение 10 секунд, прежде чем подключиться к номеру B. Я хотел бы получить продолжительность с момента ответа на B num, когда B num зависает. Я думаю, что это обычная необходимость, но не может найти простой способ ее получить.

ответ

1

1) Вы можете использовать запись forkCDR.

2) Вы можете набирать номер через локальный/канал, вторая запись cdr будет иметь правильные счета.

3) Вы можете сохранить EPOCH (текущее время) и использовать его.

и да, вы все еще можете использовать

${ANSWEREDTIME}: This is the amount of time for actual call. 
+0

Спасибо за ответ. Я считаю, что если я использую ForkCDR(), то CDR будет разделен на 2 части. Как я могу получить продолжительность каждой части? Или я понимаю неправильно? – duccom

+0

Продолжительность будет в billsec для второго. – arheops

+0

Я знаю, но как я могу получить доступ ко второму CDR? когда я вызываю CDR (billsec), он всегда показывает первую продолжительность CDR. – duccom