Страница 1 из 1

local channel и две записи CDR

Добавлено: 04 май 2020, 12:10
volos4
при звонке с использованием local channel например
channel originate local/12345@auto_out/n extension s@auto_out_dolg
создается как минимум два канала
Local/12345@auto_out-00000050;1
Local/12345@auto_out-00000050;2
И появляется две записи CDR для каждого канала

Диалплан
[auto_out]
exten => _X!,1,noop()
; same => n,nocdr()
same => n,noop(CHANNELS=${CHANNELS()}=) ; здесь уже создано два канала
same => n,Dial(PJSIP/${EXTEN}@trunk,,)
[auto_out_dolg]
exten => s,1,noop()
; same => n,nocdr()
same => n,hangup()


Log
-- Called 12345@auto_out/n
-- Executing [12345@auto_out:1] NoOp("Local/12345@auto_out-00000050;2", "") in new stack
-- Executing [12345@auto_out:2] NoOp("Local/12345@auto_out-00000050;2", "CHANNELS=Local/12345@auto_out-00000050;2 Local/12345@auto_out-00000050;1=") in new stack
-- Executing [12345@auto_out:3] Dial("Local/12345@auto_out-00000050;2", "PJSIP/12345@trunk,,") in new stack

если ответить на звонок то выполнится auto_out_dolg и добавится лог
PJSIP/trunk-00000060 answered Local/12345@auto_out-00000050;2
-- Local/12345@auto_out-00000050;1 answered
-- Executing [s@auto_out_dolg:1] NoOp("Local/12345@auto_out-00000050;1", "") in new stack
-- Executing [s@auto_out_dolg:2] Hangup("Local/12345@auto_out-00000050;1", "") in new stack

Запись CDR для Local/12345@auto_out-00000050;2 я могу удалить в auto_out.
Запись CDR для Local/12345@auto_out-00000050;1 я могу удалить в auto_out_dolg.
но дело в том что auto_out_dolg вызывается только когда на звонок ответили. если на звонок не ответили по auto_out_dolg не вызывается и нет возможности удалить CDR запись для Local/12345@auto_out-00000050;1

как можно решить эту задачу и удалить вторую CDR запись средствами Asterisk? например поставить CHANNEL(hangup_handler_push)=hangup-handler на другой канал?

З.Ы. Варианты править базу CDR не предлагать. Asterisk 17.4.0