В FreePBX можно включить запись всех звонков или записывать отдельные звонки по комбинации клавиш (обычно во время разговора *1). Но записи сохраняются в формате wav, что занимает больше места чем например популярный mp3.
Есть инструкции на эту тему, например тут. Но как правило они все для случая когда FreePBX и база данных находятся на одном сервере, у меня же FreePBX на одной машине в Docker контейнере, база данных на другой. По этому немного модернизируем скрипт.
Включаем так же как во всех инструкциях, заходим в меню Общие настройки — Дополнительные настройки и включаем пункты Отображать установки только для чтения и Подавлять установки только для чтения:
Нажимаем Сохранить.
Теперь в общих настройках будет доступен пункт Скрипт обработки записи после вызова, в это поле мы пишем путь к скрипту и передаваемые параметры.
Вообще скрипт можно положить в любое место, главное сделать для него правильный путь. Если у Вас FreePBX запущен в Docker контейнере то скорее всего на хосте где запущен Docker есть папка data и там есть папки контейнера FreePBX. у меня это папка /var/lib/asterisk и параметр в поле Скрипт обработки записи после вызова будет:
/var/lib/asterisk/to_mp3.sh ^{YEAR} ^{MONTH} ^{DAY} ^{CALLFILENAME}
создаем в папке файл скрипта:
nano to_mp3.sh
и вставляем следующие данные:
#!/bin/bash CALLFILENAME=$4 FILE=/var/spool/asterisk/monitor/$1/$2/$3/$4 if [ -f "$FILE.wav" ]; then /usr/bin/lame -h -b 192 $FILE.wav $FILE.mp3 && /bin/rm -rf $FILE.wav mysql -h freepbx-db -u asterisk -pasteriskpass -e "UPDATE cdr SET recordingfile='$CALLFILENAME.mp3' WHERE recordingfile='$CALLFILENAME.wav';" asterisk fi
где в строке mysql -h freepbx-db -u asterisk -pasteriskpass -e «UPDATE cdr SET recordingfile=’$CALLFILENAME.mp3′ WHERE recordingfile=’$CALLFILENAME.wav’;» asterisk
-h freepbx-db — freepbx-db это имя хоста с базой данных, если у вас база и FreePBX на одной машине то можно заменить на -h localhost или удалить этот параметр
-u asterisk — имя пользователя базы данных
-pasteriskpass — пароль asteriskpass пользователя базы данных, между флагом -p и паролем пробел на нужен
в конце строки asterisk это имя базы данных.
вставьте свои данные и сохраните скрипт, делаем права на выполнение
chmod +x to_mp3.sh
на этом всё, теперь после завершения звонка записи будут конвертироваться в mp3 и будет вносится в базу данных изменение.