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

Отсутствие части вызовов в базе CDR

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

Модератор: april22

Отсутствие части вызовов в базе CDR

Сообщение glazinpa » 28 июн 2018, 13:24

Добрый день!
Имеется Asterisk 11.21.0 (Elastix 2.5.0) с подключенным по iSCSI хранилищем для записи разговоров.
Записи конвертируются запускаемым Post Call Recording Script mixmon-mp3-2.sh, последняя строка которого отправляет информацию о вызове в стороннюю базу MSSQL.
Код: выделить все
#Post Call Recording Script: /etc/asterisk/scripts/mixmon-mp3-2.sh ^{YEAR} ^{MONTH} ^{DAY} ^{CALLFILENAME} ^{MIXMON_FORMAT} ^{MIXMON_DIR} ^{CDR(uniqueid)} ^{CALLERID(num)} ^{STRFTIME(${NOW},,%Y %m %d %H %M %S)} ^{FROM_DID} ^{NUMBERINREC}
__________
#!/bin/bash
#
# For Elastix 2.5 (FreePBX 2.11)
# Filename: /etc/asterisk/scripts/mixmon-mp3-2.sh
# Author: Andrey Sorokin (aka shadow_alone) andrey@sorokin.org
# Article in Russian - http://andrey.org/mp3-elastix-2-5-frepbx-2-11/
# -----------------------------------
# To enable:
# rpm -Uhv http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
# yum --disablerepo=commercial-addons install ffmpeg lame
# Settings->Advanced Settings
# Display Readonly Settings - true
# Override Readonly Settings - true
# Post Call Recording Script - /etc/asterisk/scripts/mixmon-mp3-2.sh ^{YEAR} ^{MONTH} ^{DAY} ^{CALLFILENAME} ^{MIXMON_FORMAT} ^{MIXMON_DIR}
# Override Call Recording Location - /var/spool/asterisk/monitor/
# ------------------------------------

#echo "Общее число параметров $#" >> /var/log/asterisk/recindb

YEAR=$1
MONTH=$2
DAY=$3
CALLFILENAME=$4
MIXMON_FORMAT=$5
MIXMON_DIR=$6

CDR_uniqueid=$7
CALLERID_num=$8
STRFTIME_Y=$9
shift 9
STRFTIME_M=$1
STRFTIME_D=$2
STRFTIME_h=$3
STRFTIME_min=$4
STRFTIME_ss=$5
FROM_DID=$6
NUMBERINREC=$7

STPFTIME_h=`date +%H`
STPFTIME_min=`date +%M`
STPFTIME_ss=`date +%S`

CDR_durhstp=`expr $STPFTIME_h '*' 3600`
CDR_durminstp=`expr $STPFTIME_min '*' 60`
CDR_durstp=`expr $CDR_durhstp + $CDR_durminstp + $STPFTIME_ss`

CDR_durhstr=`expr $STRFTIME_h '*' 3600`
CDR_durminstr=`expr $STRFTIME_min '*' 60`
CDR_durstr=`expr $CDR_durhstr + $CDR_durminstr + $STRFTIME_ss`

CDR_duration=`expr $CDR_durstp - $CDR_durstr`

if [ -z "${MIXMON_DIR}" ]; then
SPOOLDIR="/var/spool/asterisk/monitor/"
else
SPOOLDIR=${MIXMON_DIR}
fi

FFILENAME=${SPOOLDIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT}
NFFILENAME=${YEAR}'\'${MONTH}'\'${DAY}'\'${CALLFILENAME}.${MIXMON_FORMAT}


/usr/bin/test ! -e ${FFILENAME} && exit 21

WAVFILE=${FFILENAME}
MP3FILE=`echo ${WAVFILE} | /bin/sed 's/.wav/.mp3/g'`

SUDO="/usr/bin/sudo"
LOWNICE="/bin/nice -n 19 /usr/bin/ionice -c3"

${SUDO} ${LOWNICE} /usr/bin/lame --quiet --preset phone -h -v ${WAVFILE} ${MP3FILE}

${SUDO} /bin/chown --reference=${WAVFILE} ${MP3FILE}
/bin/chmod --reference=${WAVFILE} ${MP3FILE}
/bin/touch --reference=${WAVFILE} ${MP3FILE}

/usr/bin/test -e ${MP3FILE} && /bin/rm -f ${WAVFILE}

${SUDO} ${LOWNICE} /usr/bin/ffmpeg -loglevel quiet -y -i ${MP3FILE} -f wav -acodec copy ${WAVFILE} >/dev/null 2>&1

${SUDO} /bin/chown --reference=${MP3FILE} ${WAVFILE}
/bin/chmod --reference=${MP3FILE} ${WAVFILE}
/bin/touch --reference=${MP3FILE} ${WAVFILE}

/usr/bin/test -e ${WAVFILE} && /bin/rm -f ${MP3FILE}


# echo "1=${YEAR}, 2=${MONTH}, 3=${DAY}, 4=${CALLFILENAME}, 5=${MIXMON_FORMAT}, 6=${MIXMON_DIR}, 7=${CDR_uniqueid}, 8=${CALLERID_num}, 9=${STRFTIME_Y}, 10=${STRFTIME_M}, 11=${STRFTIME_D}, 12=${STRFTIME_h}, 13=${STRFTIME_min}, 14=${STRFTIME_ss}, 15=${FROM_DID}, 16=${CDR_duration}, 17=${NUMBERINREC}" >> /var/log/asterisk/recindb
/usr/bin/sqlcmd -U username -P password -S tcp:servername.ru,1506 -d abcDev -Q "insert into [asterisk].[Calls](Id, PhoneFrom, PhoneTo, Start, Duration, RecordPath) values('${CDR_uniqueid}', '${CALLERID_num}', '${FROM_DID}', '${YEAR}-${MONTH}-${DAY} ${STRFTIME_h}:${STRFTIME_min}:${STRFTIME_ss}', '${CDR_duration}', '${NFFILENAME}')


Проблема состоит в том, что наблюдается расхождение между сторонней базой MSSQL и базой asteriskcdrdb. В базе asteriskcdrdb не хватает около 10% вызовов, при этом записи этих разговоров на хранилище iSCSI и данные в сторонней базе есть.
Чем может быть вызвана данная проблема?
glazinpa
 
Сообщений: 15
Зарегистрирован: 20 мар 2018, 15:56

Re: Отсутствие части вызовов в базе CDR

Сообщение awsswa » 28 июн 2018, 16:57

Вы задаете не те вопросы.
А диагностика делается просто.
Включаете логи на mysql каждой записи
В вашем скрипте делаете дополнительную запись в текстовый файл
В конце дня видите что вы отправили в mysql и что записали - сравниваете
платный суппорт по мере возможностей
awsswa
 
Сообщений: 2303
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm


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

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

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

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