Загружается...
 
Приложение ConfBridge

Приложение ConfBridge


Обзор возможностей.


С самого начала своего существования в Asterisk для организации конференций предлагалось использовать приложение MeetMe (модуль app_meetme.so). Это приложение предоставляет возможность программного смешивания нескольких звуковых потоков для организации многопользовательской конференц связи на основе интерфейса DAHDI. Конференция MeetMe используется почти во всех задачах на основе сервера Asterisk – решения для небольшого офиса, call центры, в решениях для среднего и больших офисов, в решениях сторонних разработчиков и т.д. Оно довольно успешно работало, когда требовалось смешивание голосовых потоков с различных источников.

Со временем, пользователи стали сталкиваться с некоторыми существенными ограничениями, которые накладывало приложение MeetMe. Среди них выделяются два: приложению MeetMe требуется наличие драйвера и модуля DAHDI в системе, для смешивания звуковых каналов. Таким образом, частота дискретизации звукового сигнала ограничивается на уровне в 8 кГц. Также само приложение MeetMe довольно статично в плане управления, и не обеспечивает широкие возможности по его конфигурации.

Чтобы избавиться от этих ограничений , в Asterisk 10 появилось новое приложение для организации конференц связи , которое базируется на приложении ConfBridge, которое впервые появилось в Asterisk начиная с версии 1.6.0. Новое приложение ConfBridge заменяет собой старую версию этого приложения. Оно не разрабатывалось, как прямая замена приложению конференц связи MeetMe. Вместо этого, новое приложение ConfBridge обеспечивает полностью переработанный функционал, что, вероятно, большинство пользователей найдут более удобным для себя в части организации конференц связи.

Концепция работы приложения ConfBridge.


Приложение ConfBridge имеет четыре внутренние концепции:
  1. Номер конференции (Conference Number)
  2. Профиль конференции (Bridge Profile)
  3. Профиль пользователя (User Profile)
  4. Меню конференции (Conference Menu)

Номер конференции - это числовое представление отдельной “комнаты” в конференции. Абоненты, входящие в конференцию с одинаковым номером, попадают в одну и ту же конференцию и соединяются между собой. Абоненты, которые входят в конференцию с различными номерами, находятся в разных конференциях и не могут разговаривать друг с другом. Номер конференции устанавливается в плане набора. В отличие от приложения MeetMe оно не указывается явно в качестве аргумента.

Профиль конференции - это именованный набор параметров, которые управляют поведением конкретной “комнаты” конференции. Каждая комната конференции должна иметь свой собственный профиль. Одна комната не может иметь более одного профиля конференции.

Профиль пользователя - это именованный набор параметров, которые контролируют работу и права пользователей как члена определенной “комнаты” конференции. Каждый пользователь, участвующих в конференции может иметь свой индивидуальный профиль.

Меню конференции - это именованный набор параметров,
которые предоставляют пользователю конференции выполнить какие-либо действия с помощью DTMF. Каждый пользователь, участвующих в конференции может иметь свои индивидуальные меню.

Конфигурация ConfBridge.


Профили и меню приложения ConfBridge описываются в файле конфигурации confbridge.conf, который обычно находиться в: /etc/asterisk/confbridge.conf.
Файл содержит три разделов с зарезервированными именами:

  • [general]
  • [default_bridge]
  • [default_user]

Секция [general] на данный момент не используется, но зарезервирована на будущее.
Секция [default_bridge] содержит настройки для профиля конференции по умолчанию, для случая, если пользователь попадает в конференцию ConfBridge из плана набора, в котором не был установлен профиль конференции.
Секция [default_user] содержит настройки для профиля пользователя по умолчанию, для случая, если пользователь попадает в конференцию ConfBridge из плана набора, в котором не был установлен профиль пользователя.

Каждая секция содержит параметр type. Он определяет функцию раздела.
Параметр types может принимать три различных значения:

  • bridge
  • user
  • menu

bridge: используется, если в секции описываются параметры Профиля Конференции.
user: используется, если в секции описываются параметры Профиля Пользователя.
menu: используется, если в секции описываются параметры Меню Конференции.

Все остальные секции, определенные как имя секции заключенное в квадратные скобки, описывают пользовательские профили или меню.

Пример

Это пример демонстрирует только организацию файла конфигурации, в нем используются недопустимые параметры и функции файла конфигурации confbridge.conf. Различные параметры и функции описываются далее в соответствующих разделах.

[general] 
; comments are preceded by a comma 
; 
; эта секция пока пустая 
; 
[default_bridge] 
type=bridge 
; Далее идут параметры профиля конференции 
myoption=value 
myoption2=othervalue 
; 
[default_user] 
type=user 
; Далее идут параметры профиля пользователя
myoption=value 
myoption2=othervalue 
; 
[sample_menu] 
type=menu 
; Далее идут параметры меню конференции
DTMF=function 
otherDTMF=otherFunction 
;


Параметры для настройки Профиля конференции


Для настройки профиля конференции используются следующие параметры конфигурации:


Параметр Значение Описание
type bridge Указывает, что в данной секции описывается конфигурация профиля конференции.
max_members число, например: 50 Ограничивает количество участников одной конференции указанным числом. По умолчанию, у конференции нет ограничения на число участников. После того, как лимит будет превышен, конференция будет заблокирована, пока кто-то ее не покинет. Пользователи с уровнем Администратора, освобождаются от этого ограничения и по-прежнему смогут присоединиться к конференции.
record_conference yes/no Включает запись конференции, начиная с момента, когда первый пользователь входит в нее, и заканчивается, когда последний пользователь вышел из комнаты конференции. По умолчанию, запись производиться в файл с именем: "confbridge-<имя конференции >-.wav. Формат записи по умолчанию: 8kHz SLIN. Данный параметр, по умолчанию выключен. Файл с записью будет создан в каталоге, указанном в параметре мониторинга, в файле конфигурации asterisk.conf.
record_file путь, например: /tmp/myfiles Если параметр ‘record_conference’ установлен в ‘yes’, данным параметром можно явно указать имя файла, для записи конференции. Стоит отметить, что поскольку несколько конференций могут использовать один и тот же профиль конференции, то использование этой возможности может вызвать проблемы. Рекомендуется использовать этот параметр только при создании динамического профиля конференции из плана набора функцией CONFBRIDGE(). Это позволит выбрать уникальное имя для записи конкретной «комнаты” конференции. По умолчанию, файлы с записью конференции создаются в директории asterisk/spool сервера Asterisk , с уникальным именем, начинающегося с префикса "confbridge".
internal_sample_rate auto, 8000, 12000, 16000, 24000, 32000, 44100, 48000, 96000, 192000 Параметр устанавливает внутреннюю частоту дискретизации для смешивания звуковых потоков в конференции. Значение "Авто" позволяет серверу Asterisk самостоятельно выбирать частоту дискретизации для обеспечения лучшего соотношения качество/производительность в зависимости от данных звуковых потоков участников конференции. Числовое значение этого параметра фиксирует частоту дискретизации на указанном значении. Если указано значение частоты дискретизации, которое не поддерживается, то будет выбрано ближайшее значение, которое поддерживается в Asterisk.
mixing_interval 10, 20, 40, 80 Установка, в миллисекундах, определяющая внутреннюю нарезку звуковых потоков на семплы для их смешивания. По умолчанию, продолжительность семплов, которые будут смешиваться для получения исходящего звукового потока равен: 20ms. Этот параметр влияет на то на сколько "жестким" или "свободным" будет смикшированный сигнал конференции. Меньшие интервалы обеспечивают более "жесткий" звук с меньшей задержкой в конференции, но требуют больше ресурсов системы. Высокие значения создают более "свободный" звук с большими задержками, но требуют меньше ресурсов системы.
video_mode none, follow_talker, last_marked, first_marked Настройка способа распределения видео (в отличие от аудио) между участниками конференции. Участники видеоконференции должны использовать одинаковый видео кодек. Confbridge не предоставляет функциональность MCU сервера. Он не производит перекодирование между видеокодеками, на масштабирует видео и не производит никаких иных действий с видеосигналом. Значение "none" указывает, что нет источника видеосигнала по умолчанию, который увидят участники конференции, и источник видеосигнала будет выбран позже посредством AMI или DTMF меню. Значение "follow_talker" переключает видеосигнал на говорящего в данный момент участника конференции. Значение "last_marked," выбирает последнего вошедшего в конференцию пользователя, с которого есть видеосигнал и который отмечен как “marked user” в качестве единственного источника видео для всех участников конференции. Когда данный пользователь покидает конференцию, предыдущий “marked user”, с которого поступает видеосигнал, становиться источником видео для всех участников конференции. Значение "first-marked" выбирает первого вошедшего в конференцию пользователя, с которого есть видеосигнал и который отмечен как “marked user” в качестве единственного источника видео для всех участников конференции. Если данный участник выходит из конференции, то следующий пользователь, отмеченный как “marked user” становиться источником видеосигнала всех участников конференции. Использование видео в сочетании с использованием jitterbuffer для звука может приводить к рассинхронизации изображения и звука, т.к. jitterbuffer работает только для звукового потока. Следовательно, следует отключать Jitterbuffer при использовании видео в конференции.
sound_join filename Звуковой файл, который будет проигран всем участникам конференции, когда кто-либо входит в конференцию, обычно, это короткий звуковой сигнал.
sound_leave filename Звуковой файл, который будет проигран всем участникам конференции, когда кто-либо покидает конференцию, обычно, это так же короткий звуковой сигнал.
sound_has_joined filename Звуковой файл, который будет проигран всем участникам конференции при входе нового абонента в нее. Например: "xxxx входит в конференцию."
sound_has_left filename Звуковой файл, который будет проигран всем участникам конференции, когда кто-либо покидает ее. Например: "xxxx покидает конференцию."
sound_kicked filename Звуковой файл, который будет проигран всем участникам конференции, когда кого-либо удаляют из конференции.
sound_muted filename Звуковой файл, который будет проигран участнику конференции, когда у него отключается микрофон (mute).
sound_unmuted filename Звуковой файл, который будет проигран участнику конференции, когда у него включается микрофон (unmute).
sound_only_person filename Звуковой файл, который будет проигран участнику конференции, если он единственный участник конференции.
sound_only_one filename Звуковой файл, который будет проигран участнику конференции, если в конференции, помимо него, есть только один участник.
sound_there_are filename Звуковой файл, проигрываемый при анонсе числа участников в конференции.
sound_other_in_party filename Используется в связке с параметром “sound_there_are”, как вторая часть предложения "sound_there_are" <кол-во участников> "sound_other_in_party"
sound_place_into_conference filename Звуковой файл, который проигрывается, когда кто-либо заходит в конференцию после того как туда зашел отмеченный (marked) пользователь.
sound_wait_for_leader filename Звуковой файл, который проигрывается, когда кто-либо заходит в конференцию, но конференция не может быть начата до входа ведущего конференции (marked user).
sound_leader_has_left filename Звуковой файл, который проигрывается, когда ведущий конференции (marked user) покидает ее.
sound_get_pin filename Звуковой файл, который проигрывается в качестве приглашения для ввода PIN кода для входа в конференцию.
sound_invalid_pin filename Звуковой файл, который проигрывается, когда пользователь несколько раз ввел неправильный PIN код конференции (3 раза).
sound_locked filename Звуковой файл, который проигрывается пользователю при попытке войти в заблокированную конференцию.
sound_locked_now filename Звуковой файл, который проигрывается пользователям с правами Администратора конференции, после блокирования входа в конференцию.
sound_unlocked_now filename Звуковой файл, который проигрывается пользователям с правами Администратора конференции, после разблокирования входа в конференцию.
sound_error_menu filename Звуковой файл, который проигрывается пользователю при выборе неправильного пункта меню.


Пример

В данном примере создается профиль конференции с именем "fancybridge. Для профиля этой конференции устанавливается лимит в 20 пользователей, продолжительность семплов для смешивания звукового потока устанавливается в 10ms и внутренняя частота дискретизации выбирается автоматически.
Дополнительно, эта конференция будет записываться.

[fancybridge] 
type=bridge 
max_members=20 
mixing_interval=10 
internal_sample_rate=auto 
record_conference=yes


Параметры для настройки Профиля Пользователя.


Для настройки профиля пользователя используются следующие параметры конфигурации:

Параметр Значение Описание
type user Указывает, что в данной секции описывается конфигурация профиля пользователя.
admin yes/no Устанавливает, является ли пользователь администратором конференции или нет. По умолчанию: no.
marked yes/no Устанавливает, является ли пользователь ведущим конференции (Marked) или нет. По умолчанию: no.
startmuted yes/no Устанавливает, должен ли пользователь входить в конференцию с выключенным микрофоном (muted) или нет. По умолчанию: no.
music_on_hold_when_empty yes/no Устанавливает, будет ли проигрываться музыка (music on hold), когда в конференции только один пользователь или когда пользователь ожидает входа в конференцию ведущего (marked user). По умолчанию: выключено.
music_on_hold_class music on hold class Устанавливает имя класса для музыки ожидания (music on hold).
quiet yes/no Если установлено в "yes," то сообщения участникам о входе или выходе пользователя конференции и приветствия самому пользователю входящему в конференцию проигрываться не будут. По умолчанию: no.
announce_user_count yes/no Устанавливает, будет ли проигрываться анонс числа участников конференции входящему в конференцию пользователю. По умолчанию: no.
announce_user_count_all yes/no; или число Устанавливает, будет ли проигрываться анонс числа участников конференции всем ее участникам, когда новый пользователь входит в нее. Если аргументом является число, то анонс будет производиться если число участников конференции превышает указанное значение.
announce_only_user yes/no Устанавливает, будет ли проигрываться анонс о пустой конференции, когда пользователь первый входит в конференцию. По умолчанию: yes.
wait_marked yes/no Устанавливает, должен ли пользователь ожидать входа пользователя, который отмечен как ведущий конференции (marked user), перед тем как войти в конференцию. По умолчанию: no.
end_marked yes/no Если включено, все пользователи с данным профилем будут удалены из конференции, когда все пользователи отмеченные, как ведущие конференции покинут ее.
dsp_drop_silence yes/no Указывает серверу Asterisk детектировать тишину и не позволяет звуковым данным, которые определяются как тишина, попадать в конференцию. Включение этой опции может резко повысить производительность и помогает в удалении фоновых шумов из конференции. Эта опция рекомендуется для крупных конференций, в связи с повышением производительности.
dsp_talking_threshold число в миллисекундах Время в миллисекундах, по умолчанию: 160, продолжительности звука, которое DSP анализирует на наличие разговора пользователя, перед тем, как пользователь будет считаться ”говорящим”, если до этого для него сработал детектор тишины.
Это значение влияет на некоторые другие параметры:
1. Звуковой поток от пользователя будет смешиваться в исходящий из конференции суммарный звуковой поток, только если обнаружено, что пользователь начал говорить. Если значение этого параметра слишком большое, то пользователь будет слышать себя в конференции с ”обрезанным” началом предложения, каждый раз, когда он начинает говорить, т.к. DSP требуется большее время на определение факта начала разговора пользователя.
2. Если включена отправка AMI событий при детектировании начала разговора пользователя, это значение определяет момент начала разговора пользователя конференции, что приводит к отправки события через AMI.Если значение этого параметра слишком мало, возможно появление ложных событий AMI, например, из-за фоновых шумов поступающих от пользователя конференции.
3. Параметр “drop_silence” зависит от данного значения, на его основе определяется, когда нужно включать звуковой поток пользователя в конференцию, после периода тишины. Если значение этого параметра слишком большое, то будет обрезаться начало первого слова, при переходе пользователя из состояния тишины в состояние разговора.
dsp_silence_threshold число в миллисекундах Время в миллисекундах, по умолчанию: 2500, продолжительности звука, которое DSP анализирует на наличие тишины, перед тем как для пользователя будет установлено состояние молчания (тишины). Самый лучший способ в подборе значения этого параметра – это установить его чуть большим, чем пауза, которую пользователи делают в естественной речи, когда они заканчивают свою фразу в диалоге.
Это значение влияет на некоторые другие параметры:
1. Если включена отправка AMI событий при детектировании начала разговора пользователя, данное значение определяет, когда пользователь закончил свою фразу и замолчал. Если значение этого параметра слишком маленькое, то возможно поступление ложных AMI событий об окончании разговора пользователя конференции, из-за естественных коротких пауз в середине предложения.
2. Параметр “drop_silence” зависит от данного значения, на его основе определяется, когда звуковой поток от пользователя нужно отключить от конференции, после того, как он закончил говорить. Если значение этого параметра установлено слишком малым, то говорящего абонента другие участники будут слышать с прерываниями.
talk_detection_events yes/no Устанавливает, отправлять или нет события через интерфейс AMI с уведомления о том, когда пользователь конференции начинает и заканчивает говорить. По умолчанию: no.
denoise yes/no Применять или нет фильтр шумоподавления для аудиопотока пользователя конференции перед его смешиванием. По умолчанию выключено. Включение этого шумоподавителя требует, чтобы codec_speex был собран и установлен. Не стоит путать этот параметр с опцией “drop_silence”. Шумоподавитель полезен, если от пользователя конференции поступает много фонового шума, так как он пытается удалить шум, сохраняя при этом речь. Этот параметр не влияет на удаление тишины из процесса смешивания звуковых потов в конференции и его работа ведет к небольшому падению производительности системы.
jitterbuffer yes/no Применять или нет jitter буфер для аудиопотока пользователя конференции перед его смешиванием. Включение этой функции очень рекомендуется, но это вносит некоторую задержку в прохождении звукового сигнала в конференцию и повлечет за собой небольшое снижение производительности. Включение этого параметра приводит к неявному использованию функции плана набора JITTERBUFFER с адаптивным jitterбуфером по умолчанию. Для более тонкой настройки jitter буфера, выключите этот параметр и используйте функцию плана набора JITTERBUFFER для канала перед тем, как абоненты попадут в приложение ConfBridge.
pin число Устанавливает PIN код для конференции, который пользователю необходимо набрать для доступа к ней. Пользователю будет проиграно приглашение с просьбой ввести PIN код.
announce_join_leave yes/no Если включено, пользователю будет предложено представиться перед тем, как он войдет в конференцию. После того, как имя будет записано, оно будет использоваться в сообщениях о входе и выходе пользователя в конференцию. По умолчанию: no.
dtmf_passthrough yes/no Должны или нет DTMF сигналы, принятые от пользователя проходить через конференцию к другим пользователям. По умолчанию: no.


Пример

В данном примере создается профиль пользователя с именем "fancyuser", в котором включена музыка ожидания, анонс числа пользователей в конференции, анонс о входе и выходе пользователей, детектор тишины, шумоподавитель и установлен PIN код для конференции в значение 456.

[fancyuser] 
type=user 
music_on_hold_when_empty=yes 
music_on_hold_class=default 
announce_user_count_all=yes 
announce_join_leave=yes 
dsp_drop_silence=yes 
denoise=yes 
pin=456



Параметры для настройки меню конференции.


Для настройки меню конференции используются следующие параметры конфигурации:

Параметр Значение Описание
type menu Указывает, что в данной секции описывается конфигурация меню конференции
playback (<имя звукового файла1>&< имя звукового файла 2>&...) Воспроизведение пользователю аудио-файла или списка звуковых файлов, имена которых разделены символом ‘&', затем возвращает пользователя в конференцию.
playback_and_continue (<имя звукового файла 1>&< имя звукового файла 2>&...) Воспроизведение пользователю аудио-файла или списка звуковых файлов, имена которых разделены символом ‘&', при этом продолжая ожидать ввода DTMF последовательности. Можно применять как голосовая помощь по пунктам меню. Обратите внимание, что при получении любого DTMF символа прерывает воспроизведение файлов.
toggle_mute Включение или выключение микрофона. Если у пользователю выключен микрофон, он не может общаться с другими пользователями конференции, но он по прежнему может слышать всех пользователей конференции. В режиме выключенного микрофона, DTMF команды по прежнему могут быть приняты и обработаны.
no_op Задает пустое действие. Его единственная реальная задача – дать возможность зарезервировать последовательность в конфигурации для выхода из меню.
decrease_listening_volume Уменьшение уровня громкости у абонента. Все что он слышит, будет звучать тише.
increase_listening_volume Увеличение уровня громкости у абонента. Все что он слышит, будет звучать громче.
reset_listening_volume Сброс уровня громкости у абонента в значение по умолчанию.
decrease_talking_volume Уменьшение уровня громкости звука поступающего от абонента в конференцию. Все что он говорит, будет звучать тише у других участников конференции.
increase_talking_volume Увеличение уровня громкости звука поступающего от абонента в конференцию. Все что он говорит, будет звучать громче у других участников конференции.
reset_talking_volume Сброс уровня громкости звука поступающего от абонента в значение по умолчанию.
dialplan_exec (context,exten,priority) Позволяет выйти из конференции и выполнить команды плана набора. По окончанию выполнения команд пользователь будет возвращен обратно в конференцию.
leave_conference Позволяет пользователю покинуть конференцию и продолжить для него выполнение команд плана набора.
admin_kick_last Позволяет администратору исключить последнего вошедшего пользователя из конференции. Эта команда работает только для тех пользователей, для которых установлен признак администратора конференции в профиле пользователя.
admin_toggle_conference_lock Позволяет администратору закрыть или открыть доступ в конференцию. Когда конференция закрыта, только администраторы конференции могут в нее зайти. Если конференция открыта, то в нее может войти любой пользователь, пока не достигнуто ограничение на количество участников, заданное в параметре max_members профиля конференции. Эта команда работает только для тех пользователей, для которых установлен признак администратора конференции в профиле пользователя..
set_as_single_video_src Позволяет пользователю установить себя в качестве единственного источника видео для всех участников конференции. Это действие отменяет настройки в параметре video_mode.
release_as_single_video_src Позволяет пользователю снять с себя обязанности источника видео для всех участников конференции. После снятия источника видео и/или, если video_mode установлено в значение "none," результатом выполнения этой команды будет возврат к видео режиму, который был установлен в профиле конференции. Если пользователь не был источником видеосигнала для конференции, то эта команда не производит ни каких действий. Также нет никаких гарантий, что при использовании этой команды пользователь в дальнейшем не станнит источником видеосигнала для конференции.


Пример

В данном примере, мы создаем меню с именем "fancymenu." В этом меню мы будем использовать множество действий, которые были перечислены выше. Первое что мы делаем – это создаем голосовую подсказку по всем пунктам меню, если пользователь нажал кнопку *. Поскольку мы сделали это с помощью команды playback_and_continue, мы определим все остальные пункты меню как "подмножество" команды , которые начинаются с символа *. Например, *4, т.к. пользователь может сначала нажать звездочку *, потом прослушал голосовую подсказку и после этого уже нажать кнопку команды, например: 4, чтобы выполнить те действия, которые ему нужны. В дополнение к этому, мы продублировали команды с вариантом без звездочки *, т.к. пользователь мог уже сто раз слышать это меню и уже знает какую кнопку нажать, чтобы выполнить нужное действие.


[fancymenu] 
type=menu 
*=playback_and_continue(conf-togglemute&press&digits/1&silence/1&conf-leave&press&digits/2& silence/1&add-a-caller&press&digits/3&silence/1& conf-decrease-talking&press&digits/4& silence/1&reset-talking&press&digits/5&silence/1&increase-talking&press&digits/6&silence/ 1&conf-decrease-listening&press&digits/7&silence/1& conf-reset-listening&press&digits/8&silence/1& conf-increase-listening&press&digits/9&silence/1&conf-exit-menu&press&digits/0) 

*1=toggle_mute 
1=toggle_mute 
*2=leave_conference 
2=leave_conference 
*3=dialplan_exec(addcallers,1,1) 
3=dialplan_exec(addcallers,1,1) 
*4=decrease_listening_volume 
4=decrease_listening_volume 
*5=reset_listening_volume 
5=reset_listening_volume 
*6=increase_listening_volume 
6=increase_listening_volume 
*7=decrease_talking_volume 
7=decrease_talking_volume 
*8=reset_talking_volume 
8=reset_talking_volume 
*9=increase_talking_volume 
9=increase_talking_volume 
*0=no_op 
0=no_op


Особое внимание в этом примере стоит уделить использованию параметра меню dialplan_exe. В этой команде мы указали "addcaller,1,1" в качестве аргумента. Это означает, что если кто-либо нажмет кнопку 3, то Asterisk ненадолго выведет его из конференции для того, чтобы выполнить команду плана набора с приоритетом 1 для экстеншена 1 в контексте addcaller (extensions.conf). Наш план набора, который включает контекст addcaller, может выглядеть примерно так:

[addcaller] 
exten => 1,1,Originate(SIP/otherpeer,exten,conferences,100,1) 

[conferences] 
exten => 100,1,ConfBridge(1234)


Таким образом, когда кто-то набирает "3" находясь в конференции, он будут инициировать вызов из плана набора, который поместит абонента “SIP/otherpeer” в конференцию. Как только вызов будет завершен, тот, кто набрал "3", снова окажется в конференции.

Синтаксис использования приложения ConfBridge в плане набора


Синтаксис вызова нового приложения ConfBridge выглядит следующим образом:

ConfBridge([confno][,bridge_profile[,user_profile[,menu]]])


В приложении ConfBridge используются следующие аргументы:

  • confno – номер конференции.
  • bridge_profile – Имя профиля конференции, описанного в файле конфигурации confbridge.conf. Если аргумент не указан, будет использован динамический профиль конференции, созданный для данного канала функцией плана набора CONFBRIDGE. Если динамический профиль конференции не был создан, то будет использоваться профиль с именем 'default_bridge' из файла конфигурации confbridge.conf.
exclaim Важно отметить, что в то время как профили пользователей являются уникальными для каждого участника, профиль конференции являются уникальным для конференции, но * не * для пользователя. Следовательно, Вы можете создать только один профиль конференции для каждой из конференции.

  • user_profile - Имя профиля пользователя, описанного в файле конфигурации confbridge.conf. Если аргумент не указан, будет использован динамический профиль пользователя, созданный для данного канала функцией плана набора CONFBRIDGE. Если динамический профиль пользователя не был создан, то будет использоваться профиль с именем 'default_user' описанный в файле конфигурации confbridge.conf.
  • menu - Имя DTMF меню, описанного в файле конфигурации confbridge.conf, которое будет использоваться в конференции для данного канала. По умолчанию, если этот параметр опущен, в конференции не будет использоваться меню.

Пример 1

В этом примере, абоненты помещаются в в конференцию с номером 1234, используется профиль конференции и профиль пользователя по умолчанию, у конференции нет меню.
exten => 1,1,Answer()
exten => 1,n,ConfBridge(1234)

Пример 2

В данном пример, абонент будет присоеденен к конференции с номером 1234,с профилем конференции по умолчанию, с профилем пользователя под именем "1234_participants" и будет использоваться меню конференции с именем "1234_menu".
exten => 1,1,Answer()
exten => 1,n,ConfBridge(1234,,1234_participants,1234_menu)

Функция плана набора ConfBridge

Функция плана набора CONFBRIDGE используется для установки на текущем канале динамических параметров профиля пользователя или конференции для их последующего использования в приложении ConfBridge. Используются те же параметры, что и в файле конфигурации конференции confbridge.conf.

Синтаксис

CONFBRIDGE(type,option)


  • type - Тип профиля, параметры которого мы хотим установить. Тип профиля может быть или 'bridge' или 'user'.
  • option - Параметр профиля, который мы хотим установить для текущего канала. Имена параметров идентичны используемым в файле конфигурации confbridge.conf. Данным параметром мы также можем указать на профиль пользователя или конференции с помощью аргумента "template". В данном случае, мы можем на лету изменять или добавлять параметры уже существующих профилей пользователя или конференции.

Пример 1
В этом примере создается пользовательский профиль пользователя для канала, в котором включен announce_join_leave (пользователям будет сообщаться о входе и выходе абонентов конференции), при входе в конференцию у пользователей будет выключен микрофон (их не будет слышно в конференции) и пользователь помещается в конференцию номер "1."
exten => 1,1,Answer() 
exten => 1,n,Set(CONFBRIDGE(user,announce_join_leave)=yes) 
exten => 1,n,Set(CONFBRIDGE(user,startmuted)=yes) 
exten => 1,n,ConfBridge(1)


Пример 2
В этом примере мы будем использовать существующий профиль пользователя default_user, который определен в confbridge.comf. Мы установим дополнительные параметры (admin и marked), которые не были определены в профиле default_user.
exten => 1,1,Answer() 
exten => 1,n,Set(CONFBRIDGE(user,template)=default_user) 
exten => 1,n,Set(CONFBRIDGE(user,admin)=yes) 
exten => 1,n,Set(CONFBRIDGE(user,marked)=yes) 
exten => 1,n,ConfBridge(1)

Функция плана набора CONFBRIDGE_INFO используется для получение информации о конференции, например, закрыт или открыт вход в нее или количество участников, включая администраторов и ведущих конференции.

Синтаксис

CONFBRIDGE_INFO(type,conf)

  • type - Тип получаемой информации. Может быть: parties, admins, marked или locked.
  • conf - Имя конференции, параметры которой необходимо получить.

Функция CONFBRIDGE_INFO возвращает положительное число, если имя конференции правильное (например, 0 или 1 для запроса параметра конференции 'locked') или "", если имя конференции неправильное или она не существует.

CLI команды для ConfBridge


ConfBridge предлагает несколько команд, которые могут быть вызваны из Asterisk CLI.

confbridge kick <conference> <channel>
Удаляет указанный канал из конференции, например:
*CLI> confbridge kick 1111 SIP/mypeer-00000000 
Kicking SIP/mypeer-00000000 from confbridge 1111


confbridge list
Показывает краткий список всех конференц-комнат, например:
*CLI> confbridge list 
Conference Bridge Name Users Marked Locked? 
================================ ====== ====== ======== 
1111 1 0 unlocked


confbridge list <conference>
Показывает подробный список участников указанной конференции, например:
*CLI> confbridge list 1111 
Channel User Profile Bridge Profile Menu 
============================= ================ ================ ================ 
SIP/mypeer-00000001 default_user 1111 sample_user_menu


confbridge lock <conference>
Закрывает вход в указанную конференцию, только администраторы конференции могут войти. Пример:
*CLI> confbridge lock 1111 
Conference 1111 is locked.


confbridge unlock <conference>
Открывает вход в указанную конференцию. Пример:
*CLI> confbridge unlock 1111 
Conference 1111 is unlocked.


confbridge mute <conference> <channel>
Выключение микрофона конкретного пользователя в указанной конференции, например:
*CLI> confbridge mute 1111 SIP/mypeer-00000001 
Muting SIP/mypeer-00000001 from confbridge 1111


confbridge unmute <conference> <channel>
Включает микрофон конкретного пользователя в указанной конференции, например:
*CLI> confbridge unmute 1111 SIP/mypeer-00000001 
Unmuting SIP/mypeer-00000001 from confbridge 1111


confbridge record start <conference> <file>
Включает запись конференции.Если указан аргумент "file", то для записи используется указанное имя файла, иначе используется имя из параметра record_file профиля конференции. Если в профиле конференции не указан параметр record_file, имя автоматически будет сгенерировано сервером Asterisk в директории “monitor”. Пример использования:
*CLI> confbridge record start 1111 
Recording started 
*CLI> == Begin MixMonitor Recording ConfBridgeRecorder/conf-1111-uid-618880445


confbridge record stop <confererence>

Останавливает запись указанной конференции, например:
*CLI> confbridge record stop 1111 
Recording stopped. 
*CLI> == MixMonitor close filestream (mixed) 
== End MixMonitor Recording ConfBridgeRecorder/conf-1111-uid-618880445


confbridge show menus
Выводит список меню конференций, которые определены в файле конфигурации confbridge.conf, пример:
*CLI> confbridge show menus 
--------- Menus ----------- 
sample_admin_menu 
sample_user_menu


confbridge show menu <menu name>
Показывает подробный список меню конференций, например:
*CLI> confbridge show menu sample_admin_menu 
Name: sample_admin_menu 
*9=increase_talking_volume 
*8=no_op 
*7=decrease_talking_volume 
*6=increase_listening_volume 
*4=decrease_listening_volume 
*3=admin_kick_last 
*2=admin_toggle_conference_lock 
*1=toggle_mute 
*=playback_and_continue(conf-adminmenu)


confbridge show profile bridges
Выводит список профилей конференций, которые определены в файле конфигурации confbridge.conf, пример:
*CLI> confbridge show profile bridges 
--------- Bridge Profiles ----------- 
1111 
default_bridge


confbridge show profile bridge <bridge>
Показывает подробный список профилей конференций, например:
*CLI> confbridge show profile bridge 1111 
-------------------------------------------- 
Name: 1111 
Internal Sample Rate: 16000 
Mixing Interval: 10 
Record Conference: no 
Record File: Auto Generated 
Max Members: No Limit 
sound_only_person: conf-onlyperson 
sound_has_joined: conf-hasjoin 
sound_has_left: conf-hasleft 
sound_kicked: conf-kicked 
sound_muted: conf-muted 
sound_unmuted: conf-unmuted 
sound_there_are: conf-thereare 
sound_other_in_party: conf-otherinparty 
sound_place_into_conference: conf-placeintoconf 
sound_wait_for_leader: conf-waitforleader 
sound_get_pin: conf-getpin 
sound_invalid_pin: conf-invalidpin 
sound_locked: conf-locked 
sound_unlocked_now: conf-unlockednow 
sound_lockednow: conf-lockednow 
sound_error_menu: conf-errormenu


confbridge show profile users
Выводит список профилей пользователей, которые определены в файле конфигурации confbridge.conf, пример:
*CLI> confbridge show profile users 
--------- User Profiles ----------- 
awesomeusers 
default_user


confbirdge show profile user <user>
Показывает подробный список профилей пользователей, например:
*CLI> confbridge show profile user default_user 
-------------------------------------------- 
Name: default_user 
Admin: false 
Marked User: false 
Start Muted: false 
MOH When Empty: enabled 
MOH Class: default 
Quiet: disabled 
Wait Marked: disabled 
END Marked: disabled 
Drop_silence: enabled 
Silence Threshold: 2500ms 
Talking Threshold: 160ms 
Denoise: disabled 
Talk Detect Events: disabled 
DTMF Pass Through: disabled 
PIN: None 
Announce User Count: enabled 
Announce join/leave: enabled 
Announce User Count all: enabled


ConfBridge команды для Asterisk Manager Interface (AMI)


ConfbridgeList
Список всех пользователей в конференции ConfBridge. Результат запроса ConfbridgeList приходит в виде отдельных событий, завершает его финальное событие с именем ConfbridgeListComplete
Пример
Action: ConfbridgeList 
Conference: 1111 

Response: Success 
EventList: start 
Message: Confbridge user list will follow 

Event: ConfbridgeList 
Conference: 1111 
CallerIDNum: malcolm 
CallerIDName: malcolm 
Channel: SIP/malcolm-00000000 
Admin: No 
MarkedUser: No 

Event: ConfbridgeListComplete 
EventList: Complete 
ListItems: 1

ConfbridgeListRooms
Список всех активных конференции . Результат запроса ConfbridgeListRooms приходит в виде отдельных событий, завершает его финальное событие с именем ConfbridgeListRooms
Пример
Action: ConfbridgeListRooms 

Response: Success 
EventList: start 
Message: Confbridge conferences will follow 

Event: ConfbridgeListRooms 
Conference: 1111 
Parties: 1 
Marked: 0 
Locked: No 

Event: ConfbridgeListRoomsComplete 
EventList: Complete 
ListItems: 1


ConfbridgeMute

Выключает микрофон указанного пользователя в конкретной конференции.
Пример
Action: ConfbridgeMute 
Conference: 1111 
Channel: SIP/mypeer-00000001 

Response: Success 
Message: User muted


ConfbridgeUnmute
Включает микрофон указанного пользователя в конкретной конференции.
Пример
Action: ConfbridgeUnmute 
Conference: 1111 
Channel: SIP/mypeer-00000001 

Response: Success 
Message: User unmuted


ConfbridgeKick
Удаляет указанного пользователя из конкретной конференции.
Пример
Action: ConfbridgeKick 
Conference: 1111 
Channel: SIP/mypeer-00000001 

Response: Success 
Message: User kicked


ConfbridgeLock
Закрывает вход в указанную конференцию.
Пример
Action: ConfbridgeLock 
Conference: 1111 

Response: Success 
Message: Conference locked


ConfbridgeUnlock
Открывает вход в указанную конференцию.
Пример
Action: ConfbridgeUnlock 
Conference: 1111 

Response: Success 
Message: Conference unlocked


ConfbridgeStartRecord
Включает запись указанной конференции. Если конференция уже записывается, будет возвращено сообщение об ошибке. Если указан RecordFile, то для записи используется указанное имя файла, иначе используется имя из параметра record_file профиля конференции. Если в профиле конференции не указан параметр record_file, имя автоматически будет сгенерировано сервером Asterisk в директории “monitor”.
Пример
Action: ConfbridgeStartRecord 
Conference: 1111 

Response: Success 
Message: Conference Recording Started. 

Event: VarSet 
Privilege: dialplan,all 
Channel: ConfBridgeRecorder/conf-1111-uid-1653801660 
Variable: MIXMONITOR_FILENAME 
Value: /var/spool/asterisk/monitor/confbridge-1111-1303309869.wav 
Uniqueid: 1303309869.6


ConfbridgeStopRecord
Останавливает запись указанной конференции.
Пример
Action: ConfbridgeStopRecord 
Conference: 1111 

Response: Success 
Message: Conference Recording Stopped. 

Event: Hangup 
Privilege: call,all 
Channel: ConfBridgeRecorder/conf-1111-uid-1653801660 
Uniqueid: 1303309869.6 
CallerIDNum: <unknown> 
CallerIDName: <unknown> 
Cause: 0 
Cause-txt: Unknown


ConfbridgeSetSingleVideoSrc
Устанавливает указанного пользователя конференции в качестве единственного источника видео для всех остальных участников конференции, способных принимать видео.
Пример
Action: ConfbridgeSetSingleVideoSrc 
Conference: 1111 
Channel: SIP/mypeer-00000001 

Response: Success 
Message: Conference single video source set.



ConfBridge события Asterisk Manager Interface (AMI)


ConfbridgeStart
Это событие будет отправлено, когда первый пользователь входит в конференцию и создается новая комната конференции.
Пример
Event: ConfbridgeStart 
Privilege: call,all 
Conference: 1111


ConfbridgeJoin
Это событие будет отправлено, когда пользователь входит в конференцию, как в случае, если он входит в уже существующую конференцию, так и в случае, если создается новая комната конференции.
Пример
Event: ConfbridgeJoin 
Privilege: call,all 
Channel: SIP/mypeer-00000001 
Uniqueid: 1303309562.3 
Conference: 1111 
CallerIDnum: 1234 
CallerIDname: mypeer


ConfbridgeLeave
Это событие будет отправлено, когда пользователь покидает конференцию.
Пример
Event: ConfbridgeLeave 
Privilege: call,all 
Channel: SIP/mypeer-00000001 
Uniqueid: 1303308745.0 
Conference: 1111 
CallerIDnum: 1234 
CallerIDname: mypeer


ConfbridgeEnd
Это событие будет отправлено, когда последний пользователь покидает конференцию и конференц комната закрывается.
Пример
Event: ConfbridgeEnd 
Privilege: call,all 
Conference: 1111


ConfbridgeTalking
Это событие отсылается, когда конференция определяет, что какой-либо пользователь начал говорить ли замолчал.
Пример события начала разговора
Event: ConfbridgeTalking 
Privilege: call, all 
Channel: SIP/mypeer-00000001 
Uniqueid: 1303308745.0 
Conference: 1111 
TalkingStatus: on

Пример события окончания разговора
Event: ConfbridgeTalking 
Privilege: call, all 
Channel: SIP/mypeer-00000001 
Uniqueid: 1303308745.0 
Conference: 1111 
TalkingStatus: off


Звуковые приветствия.


Следующие звуковые файлы доступны для использования в качестве параметров для меню конференции и профиля конференции и входят в комплект дистрибутива Asterisk. В настоящее время поставляются файлы только на английском языке.

  • confbridge-begin-glorious-a - "The conference will begin when our glorious leader arrives."
  • confbridge-begin-glorious-b - "The conference will begin when our *glorious leader* arrives."
  • confbridge-begin-glorious-c - "The conference will begin when our *glorious leader arrives.*"
  • confbridge-conf-begin - "The conference will now begin."
  • confbridge-conf-end - "The conference has ended."
  • confbridge-dec-list-vol-in - "To decrease the audio volume from other participants..."
  • confbridge-dec-list-vol-out - "...to decrease the audio volume from other participants."
  • confbridge-dec-talk-vol-in - "To decrease your speaking volume to other participants..."
  • confbridge-dec-talk-vol-out - "...to decrease your speaking volume to other participants."
  • confbridge-has-joined - "...has joined the conference."
  • confbridge-has-left - "...has left the conference."
  • confbridge-inc-list-vol-in - "To increase the audio volume from other participants..."
  • confbridge-inc-list-vol-out - "...to increase the audio volume from other participants."
  • confbridge-inc-talk-vol-in - "To increase your speaking volume to other participants..."
  • confbridge-inc-talk-vol-out - "...to increase your speaking volume to other participants."
  • confbridge-invalid - "You have entered an invalid option."
  • confbridge-leave-in - "To leave the conference..."
  • confbridge-leave-out - "...to leave the conference."
  • confbridge-lock-extended - "...to lock or unlock the conference. When a conference is locked, only conference administrators can join."
  • confbridge-lock-in - "To lock or unlock the conference."
  • confbridge-lock-no-join - "The conference is currently locked and cannot be joined."
  • confbridge-lock-out 0- "...to lock or unlock the conference."
  • confbridge-locked - "The conference is now locked."
  • confbridge-menu-exit-in - "To exit the menu..."
  • confbridge-menu-exit-out - "...to exit the menu."
  • confbridge-mute-extended - "...to mute or unmute yourself. When you are muted, you cannot send audio to other participants; however you will still hear audio from other unmuted participants.
  • confbridge-mute-in - "To mute or unmute yourself..."
  • confbridge-mute-out - "...to mute or unmute yourself."
  • confbridge-muted - "You are now muted."
  • confbridge-only-one - "There is currently one other participant in the conference."
  • confbridge-only-participant - "You are currently the only participant in the conference."
  • confbridge-participants - "...participants in the conference."
  • confbridge-pin-bad - "You have entered too many invalid personal identification numbers."
  • confbridge-pin - "Please enter your personal identification number followed by the pound or hash key."
  • confbridge-remove-last-in - "To remove the participant who most recently joined the conference..."
  • confbridge-remove-last-out - "...to remove the participant who most recently joined the conference."
  • confbridge-removed - "You have been removed from the conference."
  • confbridge-rest-list-vol-in - "To reset the audio volume of the conference to the default level..."
  • confbridge-rest-list-vol-out - "...to reset the audio volume of the conference to the default level."
  • confbridge-rest-talk-vol-in - "To reset your speaking volume to the default level..."
  • confbridge-rest-talk-vol-out - "...to reset your speaking volume to the default level."
  • confbridge-there-are - "There are currently..."
  • confbridge-unlocked - "The conference is now unlocked."
  • confbridge-unmuted - "You are no longer muted."


Видеоконференции.

Крайне важно, чтобы в видеоконференции небыло участников, использующих разные видео кодеки или разные профили кодирования. Все участники *должны* использовать одинаковые кодеки и их профили. В противном случае, видео-сессии не будут работать – с высокой вероятностью у Вас будет останавливаться “замерзать” изображение, когда конференция будет переключаться с одного видео потока с кодеком, который Ваш клиент поддерживает и объявил в SDP, на видео потока с кодеком, который ваш клиент не согласовал в SDP или не поддерживает.

Клиенты с поддержкой Video
ConfBridge был протестирован некоторых SIP клиентах с поддержкой видео. Успешное применение может варьироваться для разных случаев.

Видео клиенты, которые заработали:
  • Jitsi - Jitsi нормально работал с видео кодеками H.264 и H.263+1998, на Mac, Linux и Windows машинах. В настоящее время, Jitsi кажется лучший рабочий и свободный вариант H.264-совместимого SIP видео клиента.
  • Linphone - Linphone нормально работал с видео кодеками H.263+1998 и H.263 на Linux, Mac и мобильная версия не поддерживают видео. В настоящее время, Linphone тоже довольно неплохой рабочий и свободный вариант H.263- совместимого SIP видео клиента, после Jitsi.
  • Empathy - Empathy работал с использованием кодека H.264, но его наудивление трудно настроить (почему нужно сделать два SIP аккаунта, чтобы просто сделать вызов через SIP – остается загадкой).
  • Lifesize - Lifesize клиент поддерживает H.264 и работает только на Windows. Он работает очень не плохо, но не является бесплатным клиентом.
  • Polycom VVX 1500 - The Polycom VVX 1500 нормально работал с кодеком H.264. Если вы подключаете его к клиенту Jitsi, вы можете настроить Jitsi для использования базового профиля H.264 вместо основного.

Видео клиенты, которые не тестировались или работали не всегда:
  • Xlite - Xlite работает в некоторых случаях, но падает в некоторых случаях, вне зависимости от используемой операционной системы. В некоторых случаях, Xlite не может декодировать видео получаемого от других клиентов.
  • Ekiga - Ekiga не был проверен, т.к. камера, используемая для тестов, не поддерживалась этим клиентом. Данная камера поддерживалась всеми остальными программными клиентами.
  • SIPDroid - SIPDroid очень похоже, что не работает.
  • OfficeSIP Messenger - OfficeSIP Messenger не может выполнять SIP регистрацию. Исходя из этого, не рекомендуется его использовать.

Интервалы для микширования аудиопотоков.

Интервал для микширования аудиопотоков конференции указывается в профиле конференции. Доступные значения: 10, 20, 40 и 80, все значения в миллисекундах. Использования интервала 80 мс поддерживается только для конференций, где используется частота дискретизации 8, 12, 16, 24, 32 и 48 кГц. Использование интервала 40 мс поддерживается для всех вышеупомянутых частот дискретизации, а также 96 кГц. Для конференций, где используется частот дискретизации 192 кГц, поддерживаются только 10 и 20 мс интервалы для микширования звука. Эти ограничения связаны с тем, что большие значения интервалов микширования звукового потока с большой частотой дискретизации вызывает значительное увеличение потребления памяти. Продвинутые пользователи могут самостоятельно изменить значение MAX_DATALEN в файле bridge_softmix.c, чтобы позволить конференциям с частотой дискретизации звука 96 кГц и 192 кГц работать с более длинными интервалами – установите 16192 для 96 кГц и 80 мс или в: 32384 для 192 кГц и 80 мс, пересоберите и перезапустите.

Максимализация производительности.

Для того, чтобы максимально повысить производительность системы, ориентированной на работу с ConfBridge, есть несколько моментов, которые следует выполнить.
  • Включите dsp_drop_silence в профилях пользователей.
    • Это один из *самых важных* шагов, позволяющий увеличить число участников конференций, с которыми может справиться одна машина. Включение этого параметра означает, что звуковой поток пользователей, которые молчат в данный момент, не принимает участия в формировании исходящего из конференции суммарного аудиопотока.
  • Подберите оптимальное значение mixing_interval в профиле конференции.
    • Значение по умолчанию: 20 мс. Другие возможные значения:e 10, 40 и 80 мс. Меньшие значения обеспечивают более качественный звук, но требуют значительно больше ресурсов процессора. Более высокие значения обеспечивают менее провайдер качественный звук, но потребляют существенно меньше ресурсов процессора. Установка значения в 80 мс, позволяет подключить наибольшее число участников конференции.

  • Подключайте абонентов с одинаковыми интервалами для микширования аудиопотоков .
    • Ресамплинг между клиентами конференции, которые используют кодеки с разными интервалами семплирования является довольно ресурсоемкой операцией. Если все клиенты подключаются к конференции с одинаковыми интервалами семплирования и конференция работает на одной частоте дискретизации, например, 16 кГц – то число возможных клиентов будет максимальным.
  • Запускайте сервер Asterisk с более высоким приоритетом.
    • По умолчанию, сервер Asterisk c относительно нормальныv приоритетом,по сравнению с другими процессами в системе. Чтобы увеличить число потенциальных клиентов, Asterisk должен быть запущен с использованием флага *-p* (realtime). Если нагрузка становится слишком большой, это может негативно повлиять на производительность других процессов, в том числе самой консоли - что делает затруднительным удаленное администрирование системы при полной нагрузке.

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

Ссылки по теме:

  • CONFBRIDGE: Установка для текущего канала динамических параметров конференции и профиля пользователя для приложения конференц связи ConfBridge, используя параметры, что определены в файле конфигурации confbridge.conf.
  • ConfBridge: Точка входа в конференцию ConfBridge.
  • Список команд.




Создано yuri. Последнее изменение: вторник 24 / июль, 2012 13:49:57 MSK автор yuri.