Pull to refresh

BigBlueButton: открытое решение организации конференций

Open source *

Почти уверен что перед каждым ИТ отделом ставилась задача организовать видеоконференцию, или просто конференцию, например с филиалом. Решений задачи много — от дорогих аппаратных до бесплатных софтовых. Хочу обратить внимание хабрсообщества на одно из бесплатных решений этой задачи — BigBlueButton. На хабре уже была небольшая заметка о нем, я попытаюсь рассказать немного подробнее об этом решении, а так же о опыте его внедрения у нас в компании.


Сами разработчики позиционируют его как решение для обучения и проведения презентаций, заявленный функционал ничуть не мешает нам использовать его для наших бизнес-целей. На главной странице проекта есть ссылка на демонстрацию решения. В первый раз наткнувшись на BigBlueButton в поисках решения организации конференции я пошел именно по этой ссылке, то что я там увидел впечатлило и казалось, полностью подойдет под наши нужды (впрочем, так и оказалось).

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

Скачав и запустив образ мы практически сразу получаем решение «из коробки» (ip машина получает по dhcp). Уже в таком виде вполне можно пользоваться bbb, для этого нам понадобиться видеокамера и гарнитура. Демо конференции доступны если зайти браузером на адрес развернутого сервера.

После входа в конференцию открывается основное окно:


В верхней левой части окна отображаются участники конференции. Тут стоит отметить что участники могут быть двух типов — обычный участник и модератор. Обычный участник может слушать и смотреть конференцию. Модератор может управлять микрофонами участников, а так же давать участникам право демонстрации. Участник обладающий правом демонстрации может размещать на панели демонстрации (панель по середине) различные материалы (например документ word или powerpoint) которые будут доступны для просмотра всем участникам конференции. Также участник конференции может смотреть изображение с камеры других участников, если другой участник ее включил.

В нижней левой части располагается окно так называемых «слушателей» — это участники конференции, попавшие в нее дозвонившись на телефонный номер конференции. Этот функционал весьма интересен и полезен (нам по крайней мере) и о на его настройке я остановлюсь немного подробнее позже.

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

Более подробно работа с интерфейсом bbb описана в документе, ссылку на который я приложил в конце заметки, это реальная инструкция участника используемая нами.

Теперь я хочу рассказать о том, что собственно мы изменили «под себя»


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

Образ распространяется как демонстрационный и изначально имеется несколько шаблонов-примеров, для того чтобы понять каким образом создаются конференции. Шаблоны находятся здесь:

/var/lib/tomcat6/webapps/bigbluebutton/demo

Изучив их мы просто создали свой, теперь у нас при входе на сервер конференций примерно следующее:



Второе, что хотелось реализовать — дозвон в конференцию с телефонов.


В BigBlueButton телефония (да и вообще весь голос) поддерживается встроенным Asterisk, соответственно нам придется как-то связать существующую сеть телефонии с bbb Asterisk. Все необходимые конфигурационные файлы Asterisk лежат в

/etc/asterisk/

Собственно, нам понадобится только два файла:

bbb_sip.conf
bbb_extensions.conf


Телефония у нас в компании организована посредством Cisco CallManager, связать его с Asterisk мы можем, например, SIP-транком. Для этого на стороне Asterisk мы меняем bbb_sip.conf таким образом:

[bbbuser]
type=friend
username=bbbuser
insecure=very
qualify=no
nat=yes
host=dynamic
canreinvite=no
context=bbb-voip
disallow=all
allow=ulaw

[TO_CCM]
disallow=all
type=friend
context=bigbluebutton
host=172.31.0.2
port=5062
allow=ulaw
allow=alaw
nat=no
canreinvite=no
qualify=no
dtmfmode=rfc2833

где 172.31.0.2 — адрес нашего CCM, 5062 — транковый порт.

На стороне CCM также создается SIP-транк в сторону Asterisk, создается роут-паттерн с какого-нибудь внутреннего номера в этот транк, таким образом звонок на внутренний номер будет заворачиваться на Asterisk и в конференции.

На стороне Asterisk также был немного изменен файл bbb_extensions.conf

В разделе

[prompt]
exten => s,1,Read(CONF_NUM,conf-getconfno,5,,3,10)
exten => s,n,Goto(bbb-conference,${CONF_NUM},1)

Необходимо прописать число символов в номере конференции, у нас 5.

Также мы поменяли раздел

[bbb-conference]
include => echo-test

exten => _XXXX.,1,Agi(agi://localhost/findConference?conference=${EXTEN})
exten => _XXXX.,n,GotoIf($[${EXTEN} = ${CONFERENCE_FOUND}]?valid:invalid)
exten => _XXXX.,n(valid),Playback(conf-placeintoconf)
; exten => _XXXX.,n,MeetMe(${CONFERENCE_FOUND},cdMsT)
exten => _XXXX.,n,Set(CALLERID(name)= ${IF($["${CALLERID(name)}" = ""]?${CALLERID(num)}:${CALLERID(name)})})
exten => _XXXX.,n,Konference(${CONFERENCE_FOUND},H)
exten => _XXXX.,n(invalid),Goto(handle-invalid-conference,s,1)


Суть изменений такова: когда внешний абонент дозванивается и попадает в конференцию его CALLERNAME показывается в окне слушателей, но т.к. имя звонящего далеко не всегда передается конечной АТС в конечном итоге почти всегда в окне слушателей появляется «unknown caller», что само по себе логично, но мешает понять кто есть кто в слушающих, приведенное изменение служит для того, чтобы в случае отсутствия имени у звонящего выводился его определившийся номер телефона.

Что еще?
Платформа оказалась на удивление гибкой и дружественной к изменениям, в случае такой необходимости весь предоставляемый ею функционал можно встроить в корпоративный портал, можно автоматизировать заказ конференций, можно прикрутить еще что-нибудь к телефонии, да вообще много чего можно :)

Полезные ссылки:
Сайт разработчиков
Группа BBB в google
Рабочая инструкция участника видеоконференции: Скачать Инструкция_участника_видеоконференции_хабр.docx с WebFile.RU
Tags:
Hubs:
Total votes 35: ↑35 and ↓0 +35
Views 79K
Comments Comments 22