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

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

Call RecordingВ поле "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".

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

Похожие публикации
Оставите комментарий ?

14 Комментарии。

  1. Игорь Сергеев

    Добрый день! А подскажите, как использовать данный скрипт, если установлен Elastix 2.5?

    • Нет, с этой версией я еще не сталкивался. А там с точки зрения записи телефонных разговоров внесли серьезные изменения по сравнению с Elastix v2.4.0 Stable? Необходима адаптация изложенного выше решения?

    • В Elastix v2.5 обновили FreePBX до v2.11 и теперь необходимо настраивать в нем все, что связано с записью телефонных разговоров. Детальную инструкцию по адаптации решения в изложенной выше заметке, к сожалению, предоставить не могу. Но начать следует с того, что включить опции "Display Readonly Settings" и "Override Readonly Settings" в разделе "Settings -> Advanced Settings". После этого там же станет доступна "Post Call Recording Script", в которой указывается автоматически запускаемый скрипт сразу после окончания записи. "Extension Recoding Override" более недоступна. Вот несколько полезных ссылок по этой теме:
      http://community.freepbx.org/t/solved-how-to-email-call-recordings-post-call-recording-script/26747/6
      http://wiki.freepbx.org/x/aIEzAQ
      http://wiki.freepbx.org/x/igOuAQ

  2. Игорь Сергеев

    Сама система не сильно изменилась. Есть улучшения, а есть мелкие недочеты. Я просто не могу найти Record Location, т.к. необходимого раздела нет.

    • В файле настроек "/etc/asterisk/asterisk.conf" выясните значение опции astspooldir. В заданном ею каталоге будет располагаться поддиректория monitor. Это и есть месторасположение для файлов записи по умолчанию.

  3. Валерий

    Здравствуйте.
    Сталкивались ли Вы со следующей задачей?
    Схема соединения двух АТС:
    Провайдер_SIP Elastix (DAHDI) (ISDN PRI) LG_Panasonic "медные" городские номера ГТС

    Настроить запись_разговоров определённых абонентов "другой АТС" (в данной схеме это LG или Panasonic), которая соединена с Asterisk через ISDN платы (DAHDI).
    Записывать нужно звонки, идущие через Elastix.

  4. Валерий

    Некоторые символы в схеме были отфильтрованы. Попробую еще раз.
    Схема:
    Провайдер_SIP ===> Elastix (DAHDI) ===> (ISDN PRI) LG_Panasonic ===> "медные" городские номера ГТС

    • Нет, не сталкивался. Задача нетривиальная. Требует проработки. Возможно, придется менять схему сопряжения АТС друг с другом.

  5. Валерий

    Я для тестов сделал, как говорят "костыль": ручками вписал в отдельный контекст в файле "extensions_custom.conf" для каждого абонента "другой АТС".
    Для входящих, получилось примерно так:
    exten => _84990001122,n,MixMonitor(${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
    exten => _84990001122,n,Set(CDR(userfield)=audio:${CALLFILENAME}.${MIXMON_FORMAT})

    Где _84990001122 - входящий номер для абонента "другой АТС", (например 2XX)

    • Для того, что бы понять, как работает данный костыль, необходимо вникать в настройки ваших АТС, разбираться с коммутацией звонков. Если вы хотите реализовывать запись, используя напрямую команды Monitor или MixMonitor в плане нумерации, то, возможно, имеет смысл делать это на чистом Asterisk: http://prog-it.github.io/Asterisk-CDR-Viewer-Mod/ Поскольку заложенная в Elastix и FreePBX логика явно не вписывается в рамки вашей задачи и будет создавать проблемы в реализации.

  6. Здравствуйте есть задача сделать запись звонков после автоматического голосового сообщения тобиш Здравствуйте вы позвонили туда то можете говорить после сигнала , и я вовсе не понимаю что делать голосовое меню или сразу как то. Прошу помочь.

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>