Видеоконференция BigBlueButton

Этот плагин интегрирует экземпляр Discourse с BigBlueButton — инструментом видеоконференцсвязи с открытым исходным кодом, разработанным для онлайн-обучения. Для использования этого плагина у вас должен быть запущен сервер с экземпляром BBB. Подробнее см. на сайте http://docs.bigbluebutton.org. По сравнению с Zoom, Jitsi и Whereby, BigBlueButton обеспечивает лучшую поддержку браузеров: в моих тестах он сразу работал во всех современных браузерах, включая Safari на iOS и Chrome на Android.

Скриншоты


Чтобы добавить видеоконференцию к теме или сообщению, используйте кнопку «Добавить BigBlueButton» в выпадающем меню опций при составлении сообщения:

Возможности

  • Поддержка нескольких комнат
  • Пользователи с правами персонала и пользователи из настраиваемой группы автоматически признаются модераторами в встречах BBB
  • Администраторы могут выбрать встраивание встречи в Discourse (через iframe) или перенаправление на отдельную страницу (с отдельными настройками для мобильных устройств и настольных компьютеров)
  • Рядом с кнопкой «Присоединиться» отображаются аватары пользователей, уже находящихся в видеоконференции

Примечания

Хочу поблагодарить @Stephen за то, что он указал мне на BigBlueButton, а также за тестирование и предоставление обратной связи по ранним версиям плагина.

41 лайк

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

15 лайков

Очень своевременно. Мы используем наш форум openmod как площадку для наших недавно запущенных интерактивных вебинаров, публикуя ссылки на вебинары только в закрытых темах. Это не совсем надёжно, но мы стараемся поддерживать чистоту нашего форума. Поэтому я очень заинтересован в этих разработках. @pmusaraj: спасибо!

4 лайка

Все три группы волонтёров, которым я помогаю в это непростое время, перешли на использование BigBlueButton.

Значительную часть успеха этого перехода обеспечил этот плагин. Переход от темы в Discourse к конференции проходит абсолютно бесшовно, и мы не сталкиваемся с обычными проблемами.

Моя жизнь стала в 1000 раз проще, так как мне больше не нужно выполнять роль технической поддержки.

Ещё раз спасибо @pmusaraj!

9 лайков

Спасибо большое за работу над этим. Я протестировал, и всё работает отлично.

Однако у меня есть несколько предложений по упрощению использования. Я исхожу из сценария, когда сотрудник форума не очень знаком с внутренним устройством BigBlueButton, а его предыдущий опыт ограничивается использованием интерфейса BigBlueButton для создания комнат (Greenlight).

С учётом этого, вот мои предложения:

  1. Объясните в исходном посте, как создавать кнопки «Начать конференцию»
    После установки мне потребовалось довольно много времени, чтобы понять, что для добавления кнопки BigBlueButton нужно использовать раздел «Опции» (значок шестерёнки) в текстовом редакторе. Возможно, упоминание этого в инструкциях поможет избежать путаницы.

  2. Сделайте создание паролей более простым

    • Кнопки для генерации случайных паролей: Все знают, что люди ленивы и, скорее всего, выберут слабый пароль. Поэтому можно предоставить пользователю ещё более простой вариант, который на самом деле сделает его более защищённым.
    • Пометьте пароли как «(необязательно)» (альтернативное решение). Если пароль не указан, генерируйте случайный. Однако пользователя следует предупредить примечанием, что вместо него будет создан случайный пароль.
  3. Рассмотрите возможность скрытия опций паролей в разделе «Дополнительно»
    Думаю, эти опции можно даже скрыть, так как большинству пользователей, вероятно, просто нужно создать комнату внутри Discourse, а не подключить её к комнате, созданной в другом приложении.

  4. Избегайте использования технического жаргона

    • Я знаю, что в Discourse часто упоминают iframe, но обычный пользователь не знает, что это такое. Если заменить label на «Показывать внутри поста», это станет понятнее.
    • Meeting ID — это жаргон BigBlueButton. Для большинства пользователей, думаю, лучше подойдёт «Название встречи». Возможно, стоит добавить ниже серую подсказку, объясняющую, что это и есть «Meeting ID».

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

Но ещё раз: это уже очень полезный плагин, особенно для людей, работающих в сфере образования. Спасибо ещё раз!

6 лайков

Я только что отправил письмо в BigBlueButton, чтобы узнать, можно ли добавить эту интеграцию на их сайт BigBlueButton LMS Integrations | Designed for Schools | BigBlueButton.

Если появятся какие-либо обновления, я опубликую их здесь.

2 лайка

Спасибо за обратную связь @core (и за пиар)! Я реализовал некоторые из предложенных вами разумных пунктов.

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

Я не буду вносить это изменение. Я понимаю, что iframe — это технический термин, но в данном случае, думаю, замена только навредит: фраза «внутри поста» вызовет ещё больше путаницы. Однако… вы можете настроить эту метку на своём экземпляре в разделе Настроить > Текст, отфильтровав по «bbb.modal». Как на этом скриншоте:

5 лайков

Ваше решение выглядит идеально. Минимализм действительно имеет значение. И спасибо, что нашли время :slight_smile:

Отличный компромисс. Спасибо!

1 лайк

@pmusaraj ответа на запрос о добавлении плагина Discourse на сайт BBB пока нет. В ближайшие дни я попробую написать в их список рассылки.

1 лайк

@pmusaraj Моя заявка на вступление в рассылку была отклонена (не знаю почему). Так что у меня сейчас мало вариантов, как связаться с ними по поводу интеграции. Я тоже думал открыть вопрос на GitHub, но это может быть довольно раздражающим, так как это не касается кодовой базы BBB.


редактирование: оказывается, это должно было быть опубликовано в списке bigbluebutton-users. Именно поэтому меня, вероятно, и отклонили.

1 лайк

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

2 лайка

Я упустил это. Извините. Но здорово, что это всё равно дошло до участников! Спасибо, что проверили!

Отличный плагин, спасибо!
Как открыть существующую встречу (запланированную другим инструментом)? Как узнать ID встречи? Что бы я ни ввёл в это поле, всегда запускается новая встреча.

Это больше похоже на вопрос для BBB, но в теории, если вы используете тот же ID комнаты, что и в другом инструменте, должно загрузиться то же самое совещание.

1 лайк

Я уже делал это однажды, но это было немного сложно. Вам нужно использовать API BBB.

Я постараюсь составить для этого руководство через несколько дней.

Основная проблема, возможно, в том, что наиболее часто используемый инструмент (Greenlight) не показывает эту низкоуровневую информацию.

3 лайка

Спасибо, это было бы отлично!

1 лайк

«Добавить BigBlueButton» к уже существующей конференции

Этот плагин автоматически создаёт для вас комнату, когда вы нажимаете «Добавить BigBlueButton». Однако вы можете захотеть использовать уже существующую комнату (созданную до установки этого плагина). Вот два примера, почему это может понадобиться.

  • Вы уже создали комнату — (например, в Greenlight) и хотите разрешить людям присоединяться также через Discourse.

  • Также разрешить присоединение по ссылке — При использовании Greenlight (стандартного фронтенда) генерируется общая ссылка для подключения к звонку. С помощью этого люди могут присоединяться как через Discourse, так и по ссылке.

:warning: Это довольно инвазивный процесс, поэтому убедитесь, что вы точно понимаете, что делаете.

Инструкция

Скорее всего, используемый вами фронтенд (Greenlight?) не предоставляет низкоуровневую информацию, такую как идентификатор встречи (meeting ID) или attendeePW (который отличается от кода доступа к комнате — знаю, это запутанно). Поэтому, чтобы получить эти данные, нам придётся использовать API BigBlueButton для получения всей информации о встречах.

Примечание: Возможно, существует более простой способ сделать это, но я о нём не знаю. Если это так, дайте мне знать.

Предварительные требования

  • доступ к терминалу сервера BBB (например, через SSH);
  • базовые знания Python (для проверки моего кода);
  • понимание рисков безопасности при использовании API BBB.

1. Получение секретного ключа и конечной точки API BBB

Зайдите в оболочку (например, через SSH) на сервере, где запущен BBB, и выполните команду:

sudo bbb-conf --secret

Это выдаст вам URL и Secret. Они понадобятся позже.

:warning: Любой, кто знает этот секретный ключ, может совершить вредоносные действия на вашем сервере! Поэтому храните его в безопасности.

2. Создание скрипта на Python 3 для получения информации о встрече

Ниже представлен простой скрипт на Python 3, который принимает ваш URL и секретный ключ (полученные на шаге 1) и формирует API-запрос для получения информации о встречах:

:warning: Не просто вставляйте случайные скрипты, найденные в интернете (включая этот!). Проверьте их, убедитесь, что они имеют смысл, и при необходимости ознакомьтесь с документацией API.

import hashlib
from urllib.parse import urljoin

# Вставьте ваши переменные здесь
base_url = "ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_URL" + "api/"
secret = "ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_SECRET"

# генерация контрольной суммы безопасности
plaintext = "getMeetings" + secret
sha1 = hashlib.sha1()
sha1.update(plaintext.encode('utf-8'))
checksum = sha1.hexdigest()

# получение URL API для получения информации о встречах
url = urljoin(base_url, "getMeetings?checksum=" + checksum)
print("откройте следующий URL, чтобы увидеть информацию о встрече")
print(url)

Замените ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_URL на полученный ранее URL API, а ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_SECRET — на ваш секретный ключ, затем запустите скрипт.

После этого должен отобразиться URL вида https://example.com/bigbluebutton/api/getMeetings?checksum=20e928e8928e8e9f919928e829d999df82882818.

:warning: Любой, у кого есть этот URL, может совершить вредоносные действия!

Они смогут увидеть все текущие встречи, количество пользователей в каждой из них, а также получить учётные данные для подключения к ним.

3. Открытие URL

Откройте его в режиме инкогнито, чтобы убедиться, что URL не сохранится в истории браузера из-за предупреждения выше.

Просто запустите встречу, которую вы планируете добавить, и обновите страницу с API-URL. После этого вы должны увидеть что-то вроде:

<response>
<returncode>SUCCESS</returncode>
<meetings>
<meeting>
<meetingName>Название вашей комнаты</meetingName>
<meetingID>XXXXXXXXXXXXXXXXXXXXXXXXXXX</meetingID>
...
<attendeePW>YYYYYYY</attendeePW>
<moderatorPW>ZZZZZZZ</moderatorPW>
...

Просто найдите строки под нужной вам встречей и возьмите:

  • meetingID
  • attendeePW
  • moderatorPW

После получения этих данных удалите все файлы и закройте все вкладки с доступом к API.
Мы не хотим никаких инцидентов безопасности!

4. «Добавить BigBlueButton» к вашему сообщению

Вместо добавления через обычный интерфейс «Добавить BigBlueButton», просто вставьте следующее в ваше сообщение:

[wrap=discourse-bbb meetingID="XXXXX" attendeePW="YYYYY" moderatorPW="ZZZZZ"  mobileIframe="false" desktopIframe="false"][/wrap] 

И замените значения на полученные на шаге 3:

  • XXXXX — содержимое meetingID
  • YYYYY — содержимое attendeePW
  • ZZZZZZ — содержимое moderatorPW

Затем сохраните сообщение.

6. Теперь всё должно работать \o/

Теперь вы сможете присоединяться как через Discourse, так и через используемый вами другой фронтенд. Если это был Greenlight, теперь вы также сможете присоединяться по ссылке.}

3 лайка

Привет!

Отличная работа над плагином, нам он очень нравится!

Я заметил несколько моментов, которые ещё нужно доработать, поэтому фиксирую их здесь:

  1. Функция демонстрации экрана не работает
    (Не появляется всплывающее окно для запроса разрешений, процесс просто завершается неудачей)

  2. При встраивании сессии через iframe у вас нет возможности записывать встречу

Подскажите, куда можно сообщить об этих проблемах? В репозитории GitHub, похоже, отключена возможность создания задач.

Общий экран работает, мы используем его очень активно. Chrome не разрешает передачу экрана в iFrame из соображений конфиденциальности и безопасности.

Chrome не поддерживает демонстрацию экрана в iFrame из соображений конфиденциальности и безопасности.

Думаю, именно поэтому это не работает и в Firefox.