Встановлюємо Music On Hold на Asterisk 11 + FreePBX і конвертуємо звукові файли за допомогою SoX (Sound eXchange).
Є розгорнутий Asterisk 11 + FreePBX (по цієї статті) на Ubuntu server 14.04.5 LTS і наступна ситуація, що при постановки дзвонить на утримання виклику, що дзвонить чує в трубці гробової тиші, щоб як то розважити дзвонить в режимі утримання встановимо модуль Music On Hold. Оскільки у нас разом з Asterisk працює FreePBX, то встановлювати модуль ми будемо через FreePBX.
Перейдемо в Admin - Module Admin
Натискаємо Check Online
У списку доступних модулів знаходимо модуль Music on Hold. Натискаємо на нього і вибираємо Download and Install і натискаємо кнопку Process
Підтверджуємо установку модуля Confirm, після установки обов'язково натискаємо Apply Config
Модуль встановлений і налаштування його знаходяться Settings - Music On Hold. В налаштуваннях можна створювати категорії в яких будуть зберігається різного роду ваші мелодії і відповідно які потім можна призначати на номери на вашу вимогу, завантажити мелодії.
Зупинимося по подробней на дуже важливому пункті завантаження мелодій. Для коректної роботи програвання мелодій потрібні певні параметри звукового файлу, а саме формат звукового файлу повинен бути wav, одне канальним і з частотою 8000 (саме така частота використовується для голосових повідомлень в телефоні).
Призводити до потрібних параметрах звуковий файл будемо за допомогою утиліти SoX (Sound eXchange) на Ubuntu server 14.04.5 LTS. Встановимо її (якщо не встановлена).
sudo apt-get install sox
Тепер розглянемо приклад конвертації будь-якого звукового файлу в потрібний нам формат і з потрібними параметрами. Подивимося параметри вихідного звукового файлу який потрібно перетворити:
soxi MusicHoldOn / MOH.wav Input File: 'MusicHoldOn / MOH.wav' Channels: 2 Sample Rate: 44100 Precision: 16-bit Duration: 00: 03: 44.97 = 9921024 samples = 16872.5 CDDA sectors File Size: 39.7M Bit Rate: 1.41M Sample Encoding: 16-bit Signed Integer PCM
Бачимо що звуковий файл, двох канальний і з частотою 44100, даний файл відтворюється Asterisk не буде. Конвертуємо його в прийнятні нам параметри:
sox -v 0.5 MusicHoldOn / MOH.wav -t wav -r 8000 -c 1 MusicHoldOn / MOHasterisk.wav
Розберемо використовувані ключі:
-v Даний параметр регулює гучність файлу. Це лінійна (амплітуда) регулювання так що якщо число менше 1 зменшує обсяг, є більше 1 то збільшує. Якщо задано негативно число, то на додаток до регулювання гучності звуковий сигнал буде інвертований. -t Здається тип звукового файлу. -r Здається частота дискредитації в Гц (Hz). -c Кількість звукових каналів в аудіофайл.
Подивимося який звуковий файл вийшов на виході:
soxi MusicHoldOn / MOHasterisk.wav Input File: 'MusicHoldOn / MOHasterisk.wav' Channels: 1 Sample Rate: 8000 Precision: 16-bit Duration: 00: 03: 44.97 = 1799732 samples ~ 16872.5 CDDA sectors File Size: 3.60M Bit Rate: 128k Sample Encoding: 16-bit Signed Integer PCM
Бачимо що вийшов звуковий файл тепер відповідає вимогам і його можна використовувати в модулі Music On Hold.
Перевіримо роботу модуля Music On Hold. У FreePBX, переходимо Settings - Music On Hold. Створимо категорію музики (Add Music Category) і додамо в неї наш вийшов після конвертації файл. Має вийти ось так:
Після того як додали звуковий файл, не забуваємо натискати Apply Config
Тепер призначимо створену нами категорію музики на будь-якої номер. Після установки модуля Music On Hold в параметрах вхідного (incoming) / вихідного (outbound) дзвінка з'явився параметр Music On Hold. Ось в ньому і потрібно нам вибрати категорію щоб програвалася музика з неї абонентам поставленим на утримання виклику.
Якщо все зробили правильно, то в логах asterisk можна спостерігати що при постановки на утримання починається програватися музика абоненту.
І коли повертаємо абонента з утримання бачимо що програвання музики припинилося.
Ось і розібрали як скрасити очікування абонента в разі постановки його на утримання.