ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

CDR report пишет только длительность дозвона, после - нет

Проблемы и их решения Asterisk как такового

Модераторы: april22, Zavr2008

CDR report пишет только длительность дозвона, после - нет

Сообщение yush » 06 мар 2017, 10:33

Имеется скрипт создания 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 ;Вешаем трубку


Пожалуйста помогите!
yush
 
Сообщений: 4
Зарегистрирован: 06 мар 2017, 09:53

Re: CDR report пишет только длительность дозвона, после - не

Сообщение yush » 06 мар 2017, 12:48

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 выходит сразу после начала воспроизведения. Но воспроизведение не дропается, проигрывается до до тех пор пока не положат трубку.
yush
 
Сообщений: 4
Зарегистрирован: 06 мар 2017, 09:53

Re: CDR report пишет только длительность дозвона, после - не

Сообщение Wapo » 06 мар 2017, 13:49

В таком режиме возможны 2 варианта завершения:
Если первый контекст не дозвонился (нет ответа или ...) и второй вариант когда закончилось воспроизведение.

Поставьте в оба экстены h а в первый еще и false и смотрите за ситуацией
Аватар пользователя
Wapo
 
Сообщений: 795
Зарегистрирован: 02 мар 2011, 18:53

Re: CDR report пишет только длительность дозвона, после - не

Сообщение yush » 07 мар 2017, 05:45

Добавил по 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 вернул пустое значение. Куда копать?
yush
 
Сообщений: 4
Зарегистрирован: 06 мар 2017, 09:53

Re: CDR report пишет только длительность дозвона, после - не

Сообщение yush » 07 мар 2017, 10:05

Оказалось, что и на работающем Asteriske во втором ANSWEREDTIME тоже пусто, но вот первый имеет длительность разговора, а не 0.
И это даже не зависит от playback. Пробовал ставить только wait() - так он и это не отсчитывает. Получается, разговор заканчивается сразу после поднятия трубки? но воспроизведение то идет!
yush
 
Сообщений: 4
Зарегистрирован: 06 мар 2017, 09:53

Re: CDR report пишет только длительность дозвона, после - не

Сообщение Wapo » 07 мар 2017, 12:23

Не пробовали использовать переменную типа ${CDR(billsec)} или ваще стартовать DumpChan и увидеть все переменные каналов
Аватар пользователя
Wapo
 
Сообщений: 795
Зарегистрирован: 02 мар 2011, 18:53


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH