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

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

Проблемы Asterisk без вэб-оболочек и их решения

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

Аватара пользователя
Ferrum
Сообщения: 338
Зарегистрирован: 25 ноя 2011, 15:16

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

Сообщение 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})
Аватара пользователя
Ferrum
Сообщения: 338
Зарегистрирован: 25 ноя 2011, 15:16

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

Сообщение 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})
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH