Настройка конференц-комнат ConfBridge в Asterisk: профили и меню
- Ошибка
No bridge technology foundпри попытке входа в конференцию. - Участники слышат сильное эхо, фоновый шум или роботизированный голос при микшировании каналов.
- DTMF-команды управления звуком (Mute/Unmute) и меню администратора не реагируют на нажатия кнопок.
- Аудиозапись конференции не инициируется или повреждается при завершении сессии.
1. Архитектура ConfBridge в Asterisk
Модуль app_confbridge пришел на смену устаревшему MeetMe, не требует обязательного таймера DAHDI и оперирует тремя компонентами:
- bridge profile: параметры микширования звука, видеопотока и битрейта;
- user profile: права пользователя (администратор, слушатель, спикер, музыка на удержании);
- menu profile: обработчик интерактивных команд по DTMF.
2. Конфигурация профилей в /etc/asterisk/confbridge.conf
; --- Профиль моста конференц-комнаты ---
[default_bridge]
type=bridge
max_members=50
record_conference=yes
record_file=/var/spool/asterisk/monitor/conf_${CONFBRIDGE(conference,name)}_${EPOCH}.wav
internal_sample_rate=auto
; --- Профиль обычного участника ---
[default_user]
type=user
music_on_hold_when_empty=yes
music_on_hold_class=default
announce_user_count=yes
announce_join_leave=yes
dsp_drop_silence=yes
; --- Профиль администратора ---
[admin_user]
type=user
admin=yes
marked=yes
music_on_hold_when_empty=no
announce_user_count=yes
; --- Интерактивное меню DTMF ---
[sample_user_menu]
type=menu
*1=toggle_mute
*4=decrease_listening_volume
*6=increase_listening_volume
*9=leave_conference
[sample_admin_menu]
type=menu
*1=toggle_mute
*2=admin_toggle_conference_lock
*3=admin_kick_last
*0=admin_toggle_mute_participants3. Маршрутизация в диалплане extensions.conf
[from-internal]
; Публичная комната 800 (с запросом PIN-кода)
exten => 800,1,NoOp(=== Entering ConfBridge 800 ===)
same => n,Answer()
same => n,Read(ENTERED_PIN,conf-getpin,4,,,5)
; Проверка: 1111 = админ, 2222 = участник
same => n,GotoIf($["${ENTERED_PIN}" = "1111"]?admin:check_user)
same => n(check_user),GotoIf($["${ENTERED_PIN}" = "2222"]?user:wrong_pin)
; Вход админа
same => n(admin),NoOp(Admin Entered)
same => n,ConfBridge(room800,default_bridge,admin_user,sample_admin_menu)
same => n,Hangup()
; Вход участника
same => n(user),NoOp(User Entered)
same => n,ConfBridge(room800,default_bridge,default_user,sample_user_menu)
same => n,Hangup()
; Ошибка авторизации
same => n(wrong_pin),Playback(conf-invalidpin)
same => n,Hangup()4. Управление активной конференцией через CLI Asterisk
# Список активных конференций и участников
confbridge list
confbridge list room800
# Принудительное отключение микрофона участнику или кик
confbridge mute room800 PJSIP/101-0000001
confbridge kick room800 PJSIP/102-0000002 Частые вопросы (FAQ)
Что дает директива marked=yes в профиле администратора?
Участники с профилем marked выступают маркерами активности комнаты. Если в профиле обычных участников включена опция end_marked=yes, конференция автоматически завершится, как только выйдет администратор.
Как снизить нагрузку на CPU сервера при микшировании 50+ участников?
Установите internal_sample_rate=8000 (если используются только кодеки G.711/G.729), а также включите dsp_drop_silence=yes, чтобы Asterisk не тратил ресурсы CPU на микширование каналов, находящихся в тишине.
Поддерживает ли ConfBridge передачу HD-звука (Wideband)?
Да. При использовании кодеков Opus или G.722 и значении internal_sample_rate=16000 (или auto) конференция микширует звук с частотой дискретизации до 48 кГц.
Как заблокировать конференцию от входа новых участников во время совещания?
Нажмите комбинацию меню администратора (*2 в нашем примере) или выполните команду в консоли: confbridge lock room800.