Asterisk. Музыка на удержании (Music on hold)

В этой статье я приведу примеры изменения музыки на удержании, принудительного включения музыки на удержании и т.д.

Чтобы работала музыка на удержании (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

Смотрите также мои статьи:
Как конвертировать звуковые файлы в ulaw, alaw, gsm, g722 и т.д. для Asterisk
Другие мои статьи про Asterisk

Оставьте комментарий

Добавить комментарий