Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

cdr_custom и hangupcause

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

Модератор: april22

cdr_custom и hangupcause

Сообщение dmitrino » 26 апр 2018, 12:35

Всем привет!
Предварительно ознакомился с темой https://forum.asterisk.ru/viewtopic.php?f=3&t=11330&start=0&hilit=page&sid=03d4ed03bf9684bca635007f1efb18a4

Тут ситуация понятная, но что делать с cdr_custom?
В случае, когда мне необходимо записать в кастомный cdr код hangupcause начинается полная вакханалия :(

если используем exten h, то получаем 2 записи в cdr ( ключ endbeforehexten=no не работает для cdr_custom )
Причем установка значения CDR(hangupcause) после команды Dial(,,gF) в cdr отображается только в следующей записи CDR :( (второе цифровое поле после даты завершения)
в результате hangupcause получаем в отдельной записи....

Ставим в h NoCDR() - и у нас нет второй записи, но и нет hangupcause...

Нашел патч, решающий эту проблему, но он для астера 1.2, а у меня 13.18-cert3 https://issues.asterisk.org/jira/browse/ASTERISK-5051

номера в примерах генерика - поэтому нет смысла их скрывать

Код: выделить все
"VT-1524729451.230","436ba9140c0e2d970c9bbaee5e1b678c@192.168.101.190:5060","192.168.101.190","DEV_TEST_ORG","192.168.101.190","TEST_190_TERM","79112154615","79112154615","79112154615","009979505639201","777#79505639201","79505639201","2018-04-26 07:56:49","2018-04-26 07:56:57","2018-04-26 07:57:31","35","","","","8","","","","","",""
"VT-1524729451.232","436ba9140c0e2d970c9bbaee5e1b678c@192.168.101.190:5060","192.168.101.190","DEV_TEST_ORG","","TEST_190_TERM","79112154615","79112154615","79112154615","h","777#79505639201","79505639201","2018-04-26 07:57:31","2018-04-26 07:57:31","2018-04-26 07:57:31","1","16","","","8","","","","","",""


Основной диалплан перебирает доступные транки, делая Gosub в dial by id

Код: выделить все
[dial-by-id]
exten => _X.,1,NoOp(============= ${CONTEXT} ${EXTEN} =============)
same  => n,Set(TR_ID=${ARG1})
same  => n,Set(B_NUM=${EXTEN})
same  => n,Set(TR_PREFIX=${ARG2})
same  => n,Set(CD_ID=${ARG3})
same  => n,Set(TR_NAME=${ARG4})

same => n,Set(CDR(b_num)=${B_NUM})
same => n,Set(CDR(vendor)=${TR_NAME})
same => n,Set(CDR(prefix_out)=${TR_PREFIX})

same  => n(dial),NoOp(### DIAL ### )
same  => n,Set(DEV_STATE=${DEVICE_STATE(SIP/${TR_NAME})})
same  => n,ExecIf($["${DEV_STATE}"="BUSY"]?Return())
same  => n,ExecIf($["${DEV_STATE}"="UNKNOWN"]?Return())
same  => n,ExecIf($["${DEV_STATE}"="INVALID"]?Return())
same  => n,ExecIf($["${DEV_STATE}"="UNAVAILABLE"]?Return())

same  => n,Set(OUTCHAN=SIP/${TR_NAME}/${TR_PREFIX}${B_NUM})

same  => n,Set(CHANNEL(accountcode)=OUT${TR_ID})
same  => n,Dial(${OUTCHAN},60,gFb(cdr_dst_leg,s,1))

same  => n,Set(CDR(hangupcause)=${HANGUPCAUSE})
;same  => n,Set(CDR(userfield)=${HANGUPCAUSE})

same  => n,ExecIf($["${DIALSTATUS}"="CHANUNAVAIL"]?Return())
same  => n,ExecIf($["${DIALSTATUS}"="CONGESTION"]?Return())

same  => n,ExecIf($[${HANGUPCAUSE}!=16]?Hangup(${HANGUPCAUSE}))

exten => h,1,NoOp()
;exten => h,1,NoCDR()
;same  => n,Set(CDR(hangupcause)=${HANGUPCAUSE})
same => n,ExecIf($["${DB(debug/dumpchan)}"=="1"]?DumpChan())
dmitrino
 
Сообщений: 2
Зарегистрирован: 22 дек 2016, 11:09

Re: cdr_custom и hangupcause

Сообщение dmitrino » 26 апр 2018, 13:10

( ключ endbeforehexten=no не работает для cdr_custom )

Выяснилось, что этот ключ работает, а вот initiatedseconds - точно нет
dmitrino
 
Сообщений: 2
Зарегистрирован: 22 дек 2016, 11:09


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

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

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

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