Asterisk - 获取 B-leg 的通话时长

Asterisk - get call duration of B-leg

在 Asterisk 中获取 B-leg 通话时长的最佳方法是什么?

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

简单的拨号方案是:

[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()

因此,如果 A 号码呼叫该拨号方案,它会等待 10 秒,然后再连接到 B 号码。我想获得从回答 B num 到 B num 挂断的持续时间。 我认为这是普遍的需求,但找不到获得它的简单方法。

1) 可以使用forkCDR记录。

2) 您可以通过本地/频道拨号,第二个 cdr 记录将有正确的 billsec。

3) 您可以保存EPOCH(当前时间)并使用它。

是的,您仍然可以使用

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