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

Не ложится CDR после поднятия Bridge

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

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

Не ложится CDR после поднятия Bridge

Сообщение Sanek » 30 май 2017, 10:14

Приветствую, коллеги.
Имеется Asterisk 11.25.1 и несколько sip-клиентов...
Суть задачи:
звонит абонент А - его ставим в ожидание (даем ему Ringing() и запускаем цикл отслеживания внешней команды), далее в другом куске диалплана делаем вызов абонента Б - если вызов успешный, даем команду сбриджевать абонентов. Перед бриджем аб.А проигрывается сообщение из файла и поднимается бридж...

Всё отрабатывает нормально, за исключением того, что по аб.А не ложится в базу CDR, а только по абоненту Б
Если вместо бриджа аб.Б вызвать с помощью dial - сидиэрка нормально ложится...

Кусок диалплана для аб.А
Код: выделить все
same => n(wi),NoOP(wait for ivr )
same => n,Wait(1)
same => n,Set(ARRAY(__bridge_calls,__channelb,__next_trunk,__rec_file)=${a_get_bridge_calls(${channela})})
same => n,NoOP( bridge_calls:${bridge_calls} channelb:${channelb} next_trunk:${next_trunk})
same => n,ExecIf($[ "${next_trunk}" = "yes" ]?Set(a_delete_channela(${channela})=1):NoOP(nothing))
same => n,GotoIf($[ "${next_trunk}" = "yes" ]?redial)
same => n,GotoIf($[ "${bridge_calls}" = "yes" ]?:wi)
same => n,GoSub(checkExistIvrChannelB,s,1)
same => n,ExecIf($[ ${acount} > 120 ]?Hangup():NoOP(nothing))
same => n,Set(__acount=$[ ${acount} + 1])
same => n,GosubIF($["${record_call}"="on"]?call_rec:no_rec)
same => n,Answer()
same => n,Playback(/tmp/${rec_file}-res)
same => n,System(/bin/rm -rf /tmp/${rec_file}*) ; remove tmp record
same => n,Set(a_delete_channela(${channela})=1)
same => n,ForkCDR(v)
same => n,Bridge(${channelb})
same => n,NoOP( BRIDGERESULT:${BRIDGERESULT})
same => n,NoOP(DIALSTATUS:${DIALSTATUS} Cause Code: ${HANGUPCAUSE} ANSWEREDTIME: ${ANSWEREDTIME} DIALEDTIME: ${DIALEDTIME})
same => n,Goto(end_dial)
.....
same => n(end_dial),HangUp()


диалплан для аб.Б
Код: выделить все
exten => s,1,NooP(--> ${CONTEXT} call to ${EXTEN})
;same => n,NoCDR()
same => n,Set(__mcount=0)
same => n,Set(__rec_file=${UNIQUEID})
same => n,Set(a_start_ivr_detect()=${channela},${uniqid})
same => n,Answer()
same => n,Monitor(wav,/tmp/${rec_file},o)
same => n(cm),NoOP(mcount:${mcount})
same => n,Set(a_update_record_i(${channela})=${rec_file},${UNIQUEID})
same => n,Set(module=$[${mcount}%2])
same => n,ExecIf($[ "${module}" = "0" ]?Playback(/home/asterisk/asterisk-bin/lib/asterisk/sounds/custom/play1):Playback(/home/asterisk/asterisk-bin/lib/asterisk/sounds/custom/play2))
;same => n,Wait(5)
same => n,Set(__returnFromCheck=${SHELL(/usr/bin/php56 /home/asterisk/ai-bin/check.php -s -d -i /tmp/${rec_file}-in.wav)})
same => n,NoOP(returnFromCheck:${returnFromCheck}  shell:/usr/bin/php56 /home/asterisk/ai-bin/check.php -s -d -i /tmp/${rec_file}-in.wav )
same => n,GotoIf($[ "${returnFromCheck}" = "1"]?nxt) ; Return block ivr
same => n,GotoIf($[ "x${IMPORT(${channela},channela)}" = "x"]?hang) ;Hangup if master channel not exist   
;same => n,ExecIf($[ ${mcount} > 4 ]?Hangup():NoOP(nothing))
same => n,GotoIf($[ ${mcount} > 4 ]?end)
same => n,Set(__mcount=$[ ${mcount} + 1])
same => n,Goto(cm)
same => n(end),NoOP()
same => n,StopMonitor()
same => n,Set(a_update_channela_bridge(${channela})=yes)
same => n,System(/usr/bin/sox /tmp/${rec_file}-in.wav /tmp/${rec_file}-res.wav silence 1 0.25 0.3% reverse silence 1 0.25 0.2% trim 0 5 reverse silence 1 0.25 0.3%)
same => n,Wait(7)
same => n(hang),Hangup()
same => n(nxt),NoOP(Goto next trunk)
same => n,StopMonitor()
same => n,Set(a_update_channela_next_trunk(${channela})=yes)
;same => n,System(/bin/rm -rf /tmp/${rec_file}*) ; remove tmp record
same => n,Wait(7)
same => n,Hangup()



Подскажите, плиз, как астера заставить писать CDR для аб.А
Sanek
 
Сообщений: 81
Зарегистрирован: 17 май 2012, 14:55

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

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

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

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