Когда пользователь звонит на другой телефон, он слышит в трубке длинные гудки. Но как только в нашем диалплане встречается директива Answer() или Playback() или еще что-то, что передает звук, гудки сразу прекращаются и после проигрывания мелодии наступает трагическое молчание.
При этом, это не значит, что удаленный абонент ответил. Например, мы сообщили пользователю, что его звонок переводится на секретаря, у секретаря зазвонил телефон – а в трубке набирающего – тишина.
Чтобы побороть это, используем музыку ожидания (music on hold).
Первым делом, разумеется, нужна сама музыка. Обращаю ваше внимание, что ее проигрывание по закону приравнивается к публичной трансляции – будьте внимательны с авторскими правами. Ищите либо свободно распространяемую музыку (Creative Commons music), либо покупайте права у автора.
Пережимаем наш mp3 (или другой формат) в wav и записываем на сервер.
Дальше добавляем конфиг /etc/asterisk/musiconhold.conf:
; Для всех будет играться музыка из одного
; процесса/источника.
; это позволяет не запускать кждый раз музыку сначала, плюс
; снижает нагрузку на процессор
cachertclasses=yes
[default]
mode=files
; указываем путь до музыкальной библиотеки
; в данном случае - относительный (/var/lib/asterisk)
directory=sounds/music
И теперь для всех Dial, где надо играть музыку, добавляем флаг m.