Проблема с CDR - много лишнего
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
Сделайте лучше, как показано выше(вариант 2, c Macro), и добавьте туда все статусы которые нужно отдельно обрабатывать. Просто если система планируется масштабная, лучше сделать вариант с Macro, можно будет использовать из разных контекстов, и вносить поправки нужно будет в одном месте.
Либо, как показано ниже:
exten => _X.,1,NoCDR
exten => _X.,n,Dial(SIP/SipNet/${EXTEN},,g)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?label)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?label)
exten => _X.,n,Hangup
exten => _X.,n(label),ResetCDR()
exten => _X.,n,Hangup
|
Откуда: Москва
Сообщений: 3421
|
Re: Проблема с CDR - много лишнего
А если зацепить ResetCDR / NoCDR на h exten?
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
А чуть поподробнее можно, а то никогда не слышал про h exten
+7(925)140-7438
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
exten => h,1,ResetCDR
а что, не пробовали делать, как выше говорилось?
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
cron333: а что, не пробовали делать, как выше говорилось?
Пробовал, но уперлось в логику. Дело всё в том, что статус ANSWER в случае, если я первым положил трубку (для записи CDR) и CANCEL (для незаписи CDR) можно вытащить только из h ext (спасибо всем просветившим меня про существование такового).
Щас сижу ломаю голову над логической конструкцией. Пока успехов нет, система всегда пишет что-то лишнее.
+7(925)140-7438
|
Откуда: Москва
Сообщений: 3421
|
Re: Проблема с CDR - много лишнего
Копай в сторону h exten.
http://www.voip-info.org/wiki/view/Asterisk+standard+extensions
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
Evgen: Пробовал, но уперлось в логику. Дело всё в том, что статус ANSWER в случае, если я первым положил трубку (для записи CDR) и CANCEL (для незаписи CDR) можно вытащить только из h ext (спасибо всем просветившим меня про существование такового).
Щас сижу ломаю голову над логической конструкцией. Пока успехов нет, система всегда пишет что-то лишнее.
Ну так и сделайте:
exten => _X.,1,Macro(dial-out,${EXTEN},60)
[macro-dial-out]
exten => s,1,NoCDR
exten => s,n,Dial(SIP/SipNet/${ARG1},${ARG2})
exten => s,n,GoTo(s-${DIALSTATUS},1)
exten => h,1,GoTo(s-${DIALSTATUS},1)
exten => s-ANSWER,1,ResetCDR()
exten => s-ANSWER,n,Hangup
exten => s-CANCEL,1,ResetCDR()
exten => s-CANCEL,n,Hangup
exten => _s-.,1,Hangup
...
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
Cron333, спасибо большое за внимание к моей проблеме, но там ещё вверху ForkCDR торчит, вот он то всё и портит:
exten => s,1,Answer()
exten => s,n,NoCDR()
exten => s,n,ForkCDR()
exten => s,n,WaitExten()
exten => _X.,1,Dial(SIP/Sipnet/${EXTEN})
exten => _X.,n,Hangup
Если потом в любом месте ставить NoCDR, то оно ForkCDR не отменяет. И ForkCDR свою часть информации обязательно пишет. ResetCDR тоже самое. В общем, это проблема, простого решения не имеющая :(
+7(925)140-7438
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
exten => s,1,Answer()
exten => s,n,NoCDR()
exten => s,n,ForkCDR()
exten => s,n,WaitExten()
exten => _X.,1,Dial(SIP/Sipnet/${EXTEN})
exten => _X.,n,Hangup
так в этой конструкции вы вначале отменяете CDR и тут же включаете(форкаете), т.е одно другое аннулирует ..., для чего?
Я возможно до конца не понимаю что вы хотите сделать, но если я правильно понял, то мой предыдущий пост должен решить ваши проблемы - не будут писаться не отвеченные вызовы и будут записаны отвеченные и сброшенные ...
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
cron333: так в этой конструкции вы вначале отменяете CDR и тут же включаете(форкаете), т.е одно другое аннулирует ..., для чего?
Отменяю я сначала CDR для входящей ноги звонка (Answer), а форкаю для включения CDR для исходящей ноги (на SIP-провайдера).
В общем, проблему я вроде победил, выкинув нах этот форк и вовремя заресетив основной CDR:
exten => s,1,GotoIf(${BLACKLIST()}?allow)
exten => s,n,Hangup()
exten => s,n(allow),Answer()
exten => s,n,ResetCDR()
exten => s,n,WaitExten(7)
exten => _X.,1,Set(CDR(userfield)=${EXTEN})
exten => _X.,n,Dial(SIP/Sipnet/${EXTEN})
exten => _X.,n,Hangup()
exten => h,1,GotoIf($["${DIALSTATUS}"="ANSWER"]?label)
exten => h,n,NoCDR()
exten => h,n(label),NoOp
Эта конструкция всё делает правильно, кроме одного: в Master.csv отображается следующее:
"","341111","h","default","341111","SIP/192.168.0.61-b7901f58","SIP/Sipnet-08190f28","Dial","SIP/Sipnet/74959119514","2008-08-08 13:08:52","2008-08-08 13:09:03","2008-08-08 13:09:04",12,1,"ANSWERED","DOCUMENTATION","74959119514"
Где 341111 - это CallerID, переданный с ТФОПа в Asterisk через FXO порт. Почему он в CDR оказывается на месте ${CDR(src)} пока не понимаю, наверное, это отголоски входящего звонка на FXO. Посему пришлось для отображения набранного номера запихивать его в CDR(userfield).
+7(925)140-7438
|
|