В этой статье я приведу примеры изменения музыки на удержании, принудительного включения музыки на удержании и т.д.
Чтобы работала музыка на удержании (Music on hold) — должен быть загружен модуль, в файле /etc/asterisk/modules.conf:
load => res_musiconhold.so
Можно проверить загружен ли он:
asterisk -rvv
module show like res_musiconhold.so
exit
Конфигурация находится в файле /etc/asterisk/musiconhold.conf, например:
[default]
mode=files
directory=moh
[newclass]
mode=files
directory=/var/lib/asterisk/moh/newclass
random=yes
Также можно посмотреть ее в консоли asterisk:
asterisk -rvv
moh show classes
moh show files
exit
moh по умолчанию это директория /var/lib/asterisk/moh, но можно указать и полный путь, если файлы находятся в указанной директории, то они автоматически воспроизводятся в случайном порядке, например когда вызов поставили на удержание или подняли трубку и потом перевели на другой номер.
Хорошую бесплатную музыку можно найти например в Фонотеке Youtube (https://www.youtube.com/audiolibrary)
Я в Linux конвертировал звуковые файлы в формат wav 16 bit 8khz mono, приведу пример команд:
ffmpeg -i ixnfo.com.mp3 -acodec pcm_s16le -ar 8000 -ac 1 ixnfo.com.wav
sox ixnfo.com.wav -r 8000 -c1 ixnfo.com.gsm lowpass 4000 compand 0.02,0.05 -60,-60,-30,-10,-20,-8,-5,-8,-2,-8 -8 -7 0.05
После конвертирования необходимо обязательно проверить может ли asterisk прочитать созданный звуковой файл.
Приведу простой пример проигрывания музыки на удержании сразу после поднятия трубки:
exten => 220,1,Answer
exten => 220,n,MusicOnHold()
exten => 220,1,Answer()
exten => 220,n,StartMusicOnHold()
exten => 220,n,Wait(10)
exten => 220,n,StopMusicOnHold()
В скобках можно указать класс и длительность музыки на удержании, например MusicOnHold(default,60)
Также можно указывать музыку на удержании прямо в команде Dial:
exten => 220,1,Dial(SIP/220,30,m(newclass))
После изменений в конфигурации перезапустим asterisk:
service asterisk restart
Либо без перезапуска asterisk скажем ему перечитать конкретную конфигурацию, например musiconhold.conf и extensions.conf:
asterisk -rvv
moh reload
dialplan reload
exit
Смотрите также мои статьи:
MP3 для Music on hold (moh)
Как конвертировать звуковые файлы в ulaw, alaw, gsm, g722 и т.д. для Asterisk
Другие мои статьи про Asterisk