Глава 22

Клиентские библиотеки и инструменты интеграции

Клиентские библиотеки скрывают детали вычисления checksum, построения HTTP-запросов и разбора XML-ответов, позволяя вам взаимодействовать с API BigBlueButton через типизированные методы на предпочитаемом вами языке программирования. В этой главе представлен обзор доступных библиотек, инструментов интеграции и рекомендации по выбору подходящего варианта для вашего проекта.

Официальные библиотеки

Следующие библиотеки поддерживаются самим проектом BigBlueButton или тесно связанными участниками. Обычно они хорошо сопровождаются и отслеживают новые возможности API по мере их появления.

Библиотека Язык Репозиторий Заметки
bigbluebutton-api-php PHP GitHub Официальная библиотека PHP. Используется плагином Moodle BBB. Активно поддерживается.
bigbluebutton-api-js JavaScript / Node.js GitHub Официальная библиотека JavaScript для серверного использования Node.js.

Библиотеки сообщества

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

Библиотека Язык Репозиторий Заметки
bigbluebutton-api-python Python PyPI Поддерживаемая сообществом библиотека Python.
bigbluebutton-api-ruby Ruby RubyGems От проекта Mconf. Поддерживается сообществом.

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

Инструменты интеграции

Помимо клиентских библиотек, несколько инструментов могут помочь вам тестировать, управлять и масштабировать развертывания BigBlueButton:

Инструмент Описание
API Mate (bigbluebutton.org) Веб-инструмент для тестирования вызовов BBB API. bigbluebutton.org/api-mate/
API Mate (Mconf) Альтернативный веб-инструмент для тестирования API. mconf.github.io/api-mate/
bbb-conf CLI-инструмент на сервере BBB. Отображает секрет, URL и статус через bbb-conf --secret.
Greenlight Официальный фронтенд BBB, построенный с использованием Ruby on Rails. Внутренне использует API для управления комнатами и встречами.
Scalelite Балансировщик нагрузки для нескольких серверов BBB. Перенаправляет и распределяет вызовы API между доступными экземплярами.

Выбор библиотеки

При оценке клиентской библиотеки для вашего проекта учитывайте следующие критерии:

  • Поддержка версий BBB: Поддерживает ли библиотека возможности BBB 3.0, такие как role вместо password, sendChatMessage и clientSettingsOverride?
  • Алгоритм checksum: Поддерживает ли библиотека SHA-256 и SHA-512 или только устаревший SHA-1?
  • Поддержка POST: Может ли библиотека отправлять тела XML (необходимо для загрузки презентаций и clientSettingsOverride)?
  • Статус сопровождения: Когда был последний коммит? Есть ли нерешённые проблемы без какого-либо ответа?
  • Поддержка webhook: Предлагает ли библиотека вспомогательные функции для регистрации webhook и проверки callback-запросов?

Если вам нужны только базовые операции, такие как создание встреч и присоединение к ним, полнофункциональная библиотека может быть не нужна. Лёгкая пользовательская интеграция может быть проще в сопровождении и легче для аудита.

Создание собственной интеграции

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

Функция checksum — вычисляет хеш SHA-256 из имени вызова API, строки запроса и общего секрета. См. главу об аутентификации по checksum для примеров реализации на разных языках.

HTTP GET/POST — отправьте запрос на URL BBB API с контрольной суммой, добавленной как параметр запроса.

Разбор XML — разберите ответ XML и проверьте поле returncode на значения SUCCESS или FAILED.

Для простых интеграций, которым нужны только create и join, это можно реализовать всего несколькими строками кода — полноценная библиотека строго не обязательна.

# Minimal example: create + join (pseudocode)

secret = "replace-with-secret"
base   = "https://api-guide.bbbserver.com/bigbluebutton/api"

# 1. Build query string
params = "name=Demo&meetingID=replace-with-meeting-id&attendeePW=replace-with-password&moderatorPW=replace-with-password"

# 2. Compute checksum
checksum = sha256("create" + params + secret)

# 3. Send request
response = http_get(base + "/create?" + params + "&checksum=" + checksum)

# 4. Parse XML response
if parse_xml(response).returncode == "SUCCESS":
    # Build join URL for a moderator
    join_params = "fullName=Admin&meetingID=demo-1&role=MODERATOR"
    join_checksum = sha256("join" + join_params + secret)
    redirect_to(base + "/join?" + join_params + "&checksum=" + join_checksum)

Всегда генерируйте вызовы API на стороне сервера. Общий секрет никогда не должен раскрываться в клиентском коде, таком как JavaScript, выполняемом в браузере, или в мобильных приложениях.

Часто задаваемые вопросы

Нет. Клиентская библиотека удобна, но не обязательна. API использует простые HTTP GET/POST-запросы с параметром checksum. Любой язык, умеющий выполнять HTTP-запросы, вычислять хеш SHA-256 и разбирать XML, может напрямую взаимодействовать с API.

Рекомендуемым выбором является официальная библиотека bigbluebutton-api-php. Она активно поддерживается проектом BBB и используется плагином Moodle BigBlueButton.

Да. Сообщество создало библиотеки и для других языков, таких как Java, .NET и Go. Ищите в репозиториях пакетов для вашего языка или смотрите рекомендации на форумах сообщества BigBlueButton.

Используйте API Mate — веб-инструмент, который позволяет интерактивно создавать и отправлять вызовы API BBB. Вы вводите URL вашего сервера и общий секрет, выбираете эндпоинт, заполняете параметры, и инструмент сам генерирует checksum и отправляет запрос.

Greenlight — это полноценное веб-приложение (фронтенд) для управления комнатами и встречами BigBlueButton. Клиентская библиотека — это пакет кода, который вы используете внутри собственного приложения для программного выполнения вызовов API. Greenlight внутренне использует клиентскую библиотеку.

Scalelite — это балансировщик нагрузки, распределяющий вызовы API между несколькими серверами BigBlueButton. Он нужен, когда один сервер не может обработать ожидаемое количество одновременных встреч или участников. Он действует как прозрачный прокси — ваше приложение отправляет вызовы API в Scalelite, который маршрутизирует их на доступный сервер BBB.
Руководство по API BigBlueButton