Запись телефонных разговоров в 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}
fiif [ -z "${1}" ]; then
TEMPDIR="/var/spool/asterisk/monitor/"
else
TEMPDIR=${1}
fiTEMPFILE=`/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
doneexit 0
Таким образом, раз в сутки все еще несжатые файлы с записями очередей будут конвертироваться в MP3. Как обстоят дела с записями конференций, т.е. нужно ли их тоже дополнительно обрабатывать, я, честно говоря, не знаю, поскольку в моей конфигурации соответствующий функционал IP-PBX Elastix не используется. Однако, вы сможете легко доработать запускаемый раз в сутки скрипт, зная место размещения и принцип именования файлов с записями конференций.
Получить доступ к файлам записей можно в разделе "PBX -> Monitoring" интерфейса Web:
Организовать ротацию старых записей можно с помощью утилиты tmpwatch. Например, выполняя раз в сутки следующую команду из планировщика заданий cron: "/usr/sbin/tmpwatch -c -f -q 8760 /var/spool/asterisk/monitor/". Таким образом, все файлы, созданные более года тому назад, будут автоматически удаляться.
Добрый день! А подскажите, как использовать данный скрипт, если установлен 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
вот здесь для новой версии уже готовый скрипт:
github
Спасибо за доработку.
Сама система не сильно изменилась. Есть улучшения, а есть мелкие недочеты. Я просто не могу найти Record Location, т.к. необходимого раздела нет.
В файле настроек "/etc/asterisk/asterisk.conf" выясните значение опции astspooldir. В заданном ею каталоге будет располагаться поддиректория monitor. Это и есть месторасположение для файлов записи по умолчанию.
Здравствуйте.
Сталкивались ли Вы со следующей задачей?
Схема соединения двух АТС:
Провайдер_SIP Elastix (DAHDI) (ISDN PRI) LG_Panasonic "медные" городские номера ГТС
Настроить запись_разговоров определённых абонентов "другой АТС" (в данной схеме это LG или Panasonic), которая соединена с Asterisk через ISDN платы (DAHDI).
Записывать нужно звонки, идущие через Elastix.
Некоторые символы в схеме были отфильтрованы. Попробую еще раз.
Схема:
Провайдер_SIP ===> Elastix (DAHDI) ===> (ISDN PRI) LG_Panasonic ===> "медные" городские номера ГТС
Нет, не сталкивался. Задача нетривиальная. Требует проработки. Возможно, придется менять схему сопряжения АТС друг с другом.
Я для тестов сделал, как говорят "костыль": ручками вписал в отдельный контекст в файле "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 логика явно не вписывается в рамки вашей задачи и будет создавать проблемы в реализации.
Здравствуйте есть задача сделать запись звонков после автоматического голосового сообщения тобиш Здравствуйте вы позвонили туда то можете говорить после сигнала , и я вовсе не понимаю что делать голосовое меню или сразу как то. Прошу помочь.
"можете говорить после сигнала" – это голосовая почта. Elastix ее поддерживает.