Asterisk: запись разговоров MixMonitor с датой и номером телефона в имени файла
- В компании отсутствует запись звонков менеджеров, из-за чего невозможно разрешить конфликтные ситуации с клиентами.
- Файлы записей сохраняются в одну кучу с непонятными системными ID (Uniqueid), и найти нужный разговор невозможно.
- Записи разговоров забивают жесткий диск сервера на 100% из-за отсутствия сжатия и структуры каталогов по годам и месяцам.
- Запись прерывается или записывает только один голос (тишина с одной стороны).
Что такое приложение MixMonitor в Asterisk?
MixMonitor — это стандартное высокопроизводительное приложение ядра Asterisk. Оно одновременно перехватывает входящий (RX) и исходящий (TX) аудиопотоки разговора, в реальном времени склеивает их в единый стерео/моно аудиофайл и сохраняет на диск без создания критической нагрузки на процессор.
Пошаговая настройка в файле extensions.conf:
Шаг 1. Создание красивого формата имени файла и структуры папок
Чтобы аудиозаписи автоматически раскладывались по папкам Год/Месяц/День, а имя файла содержало [Время]_[Кто_звонил]_[Кому_звонил]:
- Откройте файл диалплана:
sudo nano /etc/asterisk/extensions.conf - В контексте входящих или исходящих вызовов перед командой
Dialдобавьте блок переменных и вызовMixMonitor:[from-internal] ; 1. Задаем путь сохранения по датам same => n,Set(RECORD_DIR=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y/%m/%d)}) ; 2. Формируем понятное имя файла: 20240315-143022_От_101_Кому_89991234567.wav same => n,Set(RECORD_FILE=${RECORD_DIR}/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_From_${CALLERID(num)}_To_${EXTEN}.wav) ; 3. Создаем папку, если ее еще нет same => n,System(mkdir -p ${RECORD_DIR}) ; 4. Запускаем запись с опцией b (запись только после ответа) same => n,MixMonitor(${RECORD_FILE},b) ; 5. Совершаем сам вызов same => n,Dial(SIP/${EXTEN},30,tT) same => n,Hangup()
Шаг 2. Разбор полезных флагов MixMonitor:
b: начинать физическую запись файла только после того, как абонент поднял трубку (чтобы не записывать длинные гудки ожидания и не тратить место на диске при недозвонах).v(2): регулировка громкости записи входящего голоса (Volume adjustment).V(2): регулировка громкости исходящего голоса.a: дописывать звук в конец существующего файла (append).
Шаг 3. Включение записи в интерфейсе FreePBX (в 2 клика)
Если у вас установлена панель FreePBX:
- Откройте меню Applications (Приложения) -> Extensions (Внутренние номера).
- Выберите нужного сотрудника и перейдите во вкладку Advanced (Дополнительно).
- Найдите блок Recording Options (Параметры записи):
- Inbound External Calls (Входящие из города): Force (Принудительно).
- Outbound External Calls (Исходящие в город): Force.
- Inbound/Outbound Internal (Внутри офиса): Yes / Don't Care.
- Нажмите Submit и Apply Config. Все звонки начнут автоматически записываться в
/var/spool/asterisk/monitor/.
Частые вопросы (FAQ)
В каком формате лучше сохранять записи: WAV или MP3?
Asterisk напрямую пишет в несжатый формат WAV (WAV49 / GSM), что экономит ресурсы процессора. Для долгосрочного архива настройте ночной скрипт конвертации старых записей в MP3 через ffmpeg/lame, что уменьшит размер файлов в 5 раз.
Как автоматически удалять записи разговоров старше 6 месяцев?
Создайте задачу в cron (crontab -e): 0 3 * * * find /var/spool/asterisk/monitor/ -type f -mtime +180 -name '*.wav' -delete. Скрипт каждую ночь будет стирать файлы старше 180 дней.
Законно ли записывать разговоры клиентов?
Да, при условии обязательного предварительного уведомления. Перед направлением звонка на оператора включите воспроизведение аудиоролика: 'В целях контроля качества обслуживания все разговоры записываются'.
Почему при переводе звонка (Transfer) запись обрывается?
При обычном переводе создается новый канал. Чтобы MixMonitor продолжал писать звонок после перевода на другого коллегу, используйте флаг 'mixmonitor' в настройках transfer во FreePBX или опцию 'AUTOMIXMON'.