Страница 2 из 2

Re: CDR не пишется после hangup (до - нормально пишется)

Добавлено: 18 фев 2022, 16:55
Ferrum
Не красивое решение
Запись в mysql происходит до H exten
Записываем переменную ${CHANNEL(hangupsource)} в колонку sourcehg

Код: Выделить всё

exten => h,n,MYSQL(Connect connid mysq.local pbx **** cdr)
exten => h,n,MYSQL(Query resultid ${connid} SELECT id FROM cdr ORDER BY id DESC LIMIT 1)
exten => h,n,MYSQL(Fetch fetchid ${resultid} IDCDR)
exten => h,n,MYSQL(Query resultid ${connid} UPDATE cdr SET sourcehg = '${CHANNEL(hangupsource)}' WHERE id = ${IDCDR})
exten => h,n,MYSQL(Clear ${resultid})
exten => h,n,MYSQL(Disconnect ${connid})

Re: CDR не пишется после hangup (до - нормально пишется)

Добавлено: 21 фев 2022, 13:52
Ferrum
Правка по способу записи в CDR
При ответе в Dial, запись в CDR происходит сразу после Hangup до h-exten, при отсутствии ответа после h-exten, так что получении информации по последней строке в БД не верно в моем случае (вам нужно подобрать под свою версию Астериск), получаем нужную нам строку по двум параметрам, время поступления вызова и dst

Код: Выделить всё

exten => _X.,n,SET(__Time=${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)})
exten => _X.,n,SET(__FN=${CALLERID(dnid)})
exten => _X.,n,Dial(Local/${EXTEN}@

exten => h,n,Set(CDR(sourcehg=${CHANNEL(hangupsource)}) ; при отсутствии ответа пишем в CDR по классике
exten => h,n,MYSQL(Connect connid mysql.local pbx ******* cdr)
;exten => h,n,MYSQL(Query resultid ${connid} SELECT id FROM cdr ORDER BY id DESC LIMIT 1)
exten => h,n,MYSQL(Query resultid ${connid} SELECT id FROM cdr WHERE calldate = ${Time} AND dst LIKE ${FN})
exten => h,n,MYSQL(Fetch fetchid ${resultid} IDCDR)
exten => h,n,MYSQL(Query resultid ${connid} UPDATE cdr SET sourcehg = '${CHANNEL(hangupsource)}' WHERE id = ${IDCDR})
exten => h,n,MYSQL(Clear ${resultid})
exten => h,n,MYSQL(Disconnect ${connid})