Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MOH_CLASS_NOT_FOUND IP-Телефония и СКУД

Asterisk: res_musiconhold.c Music on Hold class not found fallback to default

Обновлено: 24.08.2026 · Официальная документация ↗
  • Предупреждение в логах: WARNING: res_musiconhold.c: Music on Hold class 'custom_queue_music' not found, falling back to default.
  • Абоненты в очереди или на удержании (Hold) слышат стандартную музыку вместо корпоративного приветствия или тишину.
  • Ошибка формата кодеков при попытке воспроизведения неподдерживаемых файлов MP3/WAV.

1. Проверка классов музыки на удержании в CLI

asterisk -rx "moh show classes"
asterisk -rx "moh show files"

2. Корректная настройка /etc/asterisk/musiconhold.conf

Создайте и настройте нужные классы удержания:

[general]

[default]
mode = files
directory = /var/lib/asterisk/moh
sort = random

[custom_queue_music]
mode = files
directory = /var/lib/asterisk/moh/custom_queue
sort = alpha
announcement = none

3. Правильная конвертация аудиофайлов под формат телефонии

Asterisk работает максимально производительно с нативными несжатыми аудиофайлами (WAV PCM 8000 Hz / 16000 Hz 16-bit Mono):

# Установка ffmpeg / sox
apt-get install -y sox libsox-fmt-all || dnf install -y sox

# Конвертация исходного трека в идеальный формат телефонии (slin / wav)
mkdir -p /var/lib/asterisk/moh/custom_queue
sox input_track.mp3 -r 8000 -c 1 -e signed-integer -b 16 /var/lib/asterisk/moh/custom_queue/track1.wav
sox input_track.mp3 -r 16000 -c 1 -e signed-integer -b 16 /var/lib/asterisk/moh/custom_queue/track1.wav16

4. Назначение прав и перезагрузка модуля MOH

chown -R asterisk:asterisk /var/lib/asterisk/moh
chmod -R 755 /var/lib/asterisk/moh
asterisk -rx "moh reload"

5. Использование класса в диалплане

exten => 500,1,Answer()
same => n,Set(CHANNEL(musicclass)=custom_queue_music)
same => n,Queue(sales_queue,t,,,300)
💡 Практика специалистов: Не используйте стереофонические WAV-файлы с битрейтом 44.1/48 kHz для Music on Hold — это вызывает непрерывную фоновую нагрузку на CPU из-за программного ресемплинга и транскодирования каждого голосового канала.

Частые вопросы (FAQ)

Почему Asterisk не воспроизводит MP3 файлы в MOH?

Для прямого воспроизведения MP3 требуется модуль format_mp3 или внешний плеер (mpg123). Рекомендуется заранее конвертировать треки в формат WAV PCM (8kHz/16kHz Mono) через SoX для экономии CPU на транскодировании.

Как привязать определенную музыку на удержании к конкретному SIP-транку?

В pjsip.conf в секции endpoint добавьте параметр: moh_suggest = custom_queue_music.

Что произойдет, если класс default также не найден или пуст?

Абонент на удержании будет слышать полную тишину, а в логах Asterisk появится ошибка unable to open MOH file.

Как воспроизводить поток интернет-радио в качестве Music on Hold?

В musiconhold.conf настройте класс с mode=custom и application=/usr/bin/mpg123 -q -r 8000 -f 8192 -s --mono -@ http://stream.radio.url.

Полезные материалы
Рекомендуем