Страница 1 из 1
CDR report пишет только длительность дозвона, после - нет
Добавлено: 06 мар 2017, 09:33
yush
Имеется скрипт создания call файлов c воспроизведением звукового файла . С Asterix 13 версии и FreePBX все работает. Отображаются все CDR репорты с длительностью воспроизведения файла. Но тот же скрипт на Elastix версии 2.4.0 работает, но отображаются CDR репорты только времени дозвона, а информация о длительности воспроизведения вообще не отображается.
вид call-файла:
Код: Выделить всё
Channel: Local/390099@prozvon-dialer
MaxRetries: 0
RetryTime: 5
WaitTime: 30
Context: prozvon-informer
Extension: 2222
Callerid: 2222
Account: autodialer
Priority: 1
AlwaysDelete: Yes
Archive: Yes
Соответствующие экстеншины:
Код: Выделить всё
[prozvon-dialer]
exten => _X!,1,Dial(SIP/390098/${EXTEN},60) ;Звоним наружу
exten => _X!,n,Set(CDR(userfield)=${HASH(SIP_CAUSE,${CDR(dstchannel)})}) ;Записываем код ошибки
exten => _X!,n,Hangup ;Вешаем трубку
[prozvon-informer]
exten => 2222,1,Answer ;Берём трубку
exten => 2222,n,Wait(3) ;Ждём 3 секунды
exten => 2222,n,Background(/home/support/filestore/filestore/openerp/sounds/adele) ;Проигрываем аудиофайл announcement
exten => 2222,n,Hangup ;Вешаем трубку
Пожалуйста помогите!
Re: CDR report пишет только длительность дозвона, после - не
Добавлено: 06 мар 2017, 11:48
yush
CLI вывод:
Код: Выделить всё
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SSN/390097
-- SIP/SSN-00000004 is making progress passing it to Local/390097@prozvon-dialer-00000003;2
> 0x3e26e40 -- Probation passed - setting RTP source address to 77.242.1.211:5724
-- SIP/SSN-00000004 is ringing
-- SIP/SSN-00000004 answered Local/390097@prozvon-dialer-00000003;2
> Channel Local/390097@prozvon-dialer-00000003;1 was answered
-- Executing [2222@prozvon-informer:1] Answer("Local/390097@prozvon-dialer-00000003;1", "") in new stack
-- Executing [2222@prozvon-informer:2] Playback("Local/390097@prozvon-dialer-00000003;1", "/var/spool/asterisk/sounds/informer") in new stack
-- <Local/390097@prozvon-dialer-00000003;1> Playing '/var/spool/asterisk/sounds/informer.slin' (language 'en')
== Spawn extension (prozvon-dialer, 390097, 1) exited non-zero on 'Local/390097@prozvon-dialer-00000003;2'
== Spawn extension (prozvon-informer, 2222, 2) exited non-zero on 'SIP/SSN-00000004'
[2017-03-06 18:44:17] NOTICE[15518]: pbx_spool.c:402 attempt_thread: Call completed to Local/390097@prozvon-dialer
Spawn extension выходит сразу после начала воспроизведения. Но воспроизведение не дропается, проигрывается до до тех пор пока не положат трубку.
Re: CDR report пишет только длительность дозвона, после - не
Добавлено: 06 мар 2017, 12:49
Wapo
В таком режиме возможны 2 варианта завершения:
Если первый контекст не дозвонился (нет ответа или ...) и второй вариант когда закончилось воспроизведение.
Поставьте в оба экстены h а в первый еще и false и смотрите за ситуацией
Re: CDR report пишет только длительность дозвона, после - не
Добавлено: 07 мар 2017, 04:45
yush
Добавил по h в оба экстеншина:
Код: Выделить всё
[prozvon-dialer]
exten => _X!,1,Dial(SIP/390098/${EXTEN},60) ;Звоним наружу
exten => _X!,n,Set(CDR(userfield)=${HASH(SIP_CAUSE,${CDR(dstchannel)})}) ;Записываем код ошибки
exten => _X!,n,Hangup ;Вешаем трубку
exten => h,1,NoOp(Разговор завершен и длился ${ANSWEREDTIME} секунд.)
[prozvon-informer]
exten => 2222,1,Answer ;Берём трубку
exten => 2222,n,Wait(3) ;Ждём 3 секунды
exten => 2222,n,Background(var/spool/asterisk/sounds/informer) ;Проигрываем аудиофайл announcement
exten => 2222,n,Hangup ;Вешаем трубку
exten => h,1,NoOp(Разговор завершен и длился ${ANSWEREDTIME} секунд.)
В итоге вывод CLI:
Код: Выделить всё
-- Attempting call on Local/390097@prozvon-dialer for 2222@prozvon-informer:1 (Retry 1)
-- Executing [390097@prozvon-dialer:1] Dial("Local/390097@prozvon-dialer-00000000;2", "SIP/SSN/390097,60") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SSN/390097
-- SIP/SSN-00000000 is making progress passing it to Local/390097@prozvon-dialer-00000000;2
> 0xe470a70 -- Probation passed - setting RTP source address to 77.242.1.211:9912
-- SIP/SSN-00000000 is ringing
-- SIP/SSN-00000000 answered Local/390097@prozvon-dialer-00000000;2
> Channel Local/390097@prozvon-dialer-00000000;1 was answered
-- Executing [2222@prozvon-informer:1] Answer("Local/390097@prozvon-dialer-00000000;1", "") in new stack
-- Executing [2222@prozvon-informer:2] BackGround("Local/390097@prozvon-dialer-00000000;1", "/var/spool/asterisk/sounds/informer") in new stack
-- <Local/390097@prozvon-dialer-00000000;1> Playing '/var/spool/asterisk/sounds/informer.slin' (language 'en')
-- Executing [h@prozvon-dialer:1] NoOp("Local/390097@prozvon-dialer-00000000;2", "Разговор завершен и длился 0 секунд") in new stack
== Spawn extension (prozvon-dialer, 390097, 1) exited non-zero on 'Local/390097@prozvon-dialer-00000000;2'
== Spawn extension (prozvon-informer, 2222, 2) exited non-zero on 'SIP/SSN-00000000'
-- Executing [h@prozvon-informer:1] NoOp("SIP/SSN-00000000", "Разговор завершен и длился секунд") in new stack
[2017-03-07 11:30:38] NOTICE[18352]: pbx_spool.c:402 attempt_thread: Call completed to Local/390097@prozvon-dialer
Обратите внимание, что во втором ANSWEREDTIME вернул пустое значение. Куда копать?
Re: CDR report пишет только длительность дозвона, после - не
Добавлено: 07 мар 2017, 09:05
yush
Оказалось, что и на работающем Asteriske во втором ANSWEREDTIME тоже пусто, но вот первый имеет длительность разговора, а не 0.
И это даже не зависит от playback. Пробовал ставить только wait() - так он и это не отсчитывает. Получается, разговор заканчивается сразу после поднятия трубки? но воспроизведение то идет!
Re: CDR report пишет только длительность дозвона, после - не
Добавлено: 07 мар 2017, 11:23
Wapo
Не пробовали использовать переменную типа ${CDR(billsec)} или ваще стартовать DumpChan и увидеть все переменные каналов