Site icon UZLEC.ru — Узлец блог

Запись телефонных разговоров в IP-PBX Elastix/FreePBX

Запись телефонных разговоров в IP-PBX Elastix/FreePBX организуется весьма просто. Отправляемся в раздел "PBX -> PBX Configuration -> General Settings -> Call Recording" интерфейса Web и указываем настройки:

В поле "Run after record:" следует указать следующее: "/etc/asterisk/scripts/mixmon-mp3.sh ^{MIXMON_DIR} ^{CALLFILENAME} ^{MIXMON_FORMAT}". Это скрипт автоматически запускается сразу после окончания записи. Он выполняет сжатие аудиофайлов в формат MP3, что обеспечит существенную экономию дискового пространства. Вот его содержимое:

#!/bin/sh

if [ -z "${MIXMONFILE}" ]; then
MIXMONFILE=${1}/${2}.${3}
fi

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

TEMPFILE=`/bin/mktemp -u -p ${TEMPDIR} mixmon-mp3.XXXXXXXXXX`
TEMPFILEMP3=${TEMPFILE}".mp3"
TEMPFILEWAV=${TEMPFILE}".wav"
SUDO="/usr/bin/sudo"
LOWNICE="/bin/nice -n 19 /usr/bin/ionice -c3"

${SUDO} ${LOWNICE} /usr/bin/lame --quiet --preset phone -h -v ${MIXMONFILE} ${TEMPFILEMP3}
${SUDO} ${LOWNICE} /usr/bin/ffmpeg -v quiet -y -i ${TEMPFILEMP3} -f wav -acodec copy ${TEMPFILEWAV}

${SUDO} /bin/chmod --reference=${MIXMONFILE} ${TEMPFILEWAV}
${SUDO} /bin/chown --reference=${MIXMONFILE} ${TEMPFILEWAV}
${SUDO} /bin/touch --reference=${MIXMONFILE} ${TEMPFILEWAV}
${SUDO} /bin/mv -f ${TEMPFILEWAV} ${MIXMONFILE}
${SUDO} /bin/rm -f ${TEMPFILEMP3} ${TEMPFILE}

Вызов утилиты LAME выполняет кодирование из несжатого WAV в MP3, а FFmpeg – добавляет к файлу MP3 заголовок RIFF. Тем самым преобразуя его в сжатый WAV.
Поскольку IP-PBX Asterisk работает от лица одноименного непривилегированного пользователя, разрешим ему доступ к некоторым командам с правами администратора root через утилиту sudo. Для этого добавим в файл "/etc/sudoers" следующие строки:

asterisk ALL = NOPASSWD: /bin/nice
asterisk ALL = NOPASSWD: /usr/bin/ionice
asterisk ALL = NOPASSWD: /bin/chmod
asterisk ALL = NOPASSWD: /bin/chown
asterisk ALL = NOPASSWD: /bin/mv
asterisk ALL = NOPASSWD: /bin/rm
asterisk ALL = NOPASSWD: /bin/touch

Все предыдущие шаги носили подготовительный характер. Непосредственно сама запись включается для каждого внутреннего номера индивидуально в соответствующем разделе: "PBX -> PBX Configuration -> Extensions -> Extension: XXX -> Recording Options".

Если в вашей конфигурации используются очереди (queues) или конференции, то необходимо в соответствующих разделах также включить запись. Следует обратить внимание на то, что для звонков, обрабатываемых через механизм очередей (queues), вышеприведенный скрипт, сжимающий записи в формат MP3, не запускается автоматически. Для того, что бы это скомпенсировать создадим еще один скрипт нижеследующего содержания и поместим его в файле "/etc/cron.daily/queues-mixmon-mp3.sh":

#!/bin/sh

for MIXMONFILE in /var/spool/asterisk/monitor/q*.wav; do
/usr/bin/ffprobe -i ${MIXMONFILE} 2>&1 | /bin/grep -qs "0x0055)," || source /etc/asterisk/scripts/mixmon-mp3.sh
done

exit 0

Таким образом, раз в сутки все еще несжатые файлы с записями очередей будут конвертироваться в MP3. Как обстоят дела с записями конференций, т.е. нужно ли их тоже дополнительно обрабатывать, я, честно говоря, не знаю, поскольку в моей конфигурации соответствующий функционал IP-PBX Elastix не используется. Однако, вы сможете легко доработать запускаемый раз в сутки скрипт, зная место размещения и принцип именования файлов с записями конференций.
Получить доступ к файлам записей можно в разделе "PBX -> Monitoring" интерфейса Web:
Организовать ротацию старых записей можно с помощью утилиты tmpwatch. Например, выполняя раз в сутки следующую команду из планировщика заданий cron: "/usr/sbin/tmpwatch -c -f -q 8760 /var/spool/asterisk/monitor/". Таким образом, все файлы, созданные более года тому назад, будут автоматически удаляться.

Поделиться ссылкой:

Запись телефонных разговоров в IP-PBX Elastix/FreePBX was last modified: 15 июня, 2015 by DAN
Exit mobile version