Глава 10 GET POST

getMeetingInfo – Получить сведения о встрече

Конечная точка getMeetingInfo возвращает подробную информацию об одной встрече BigBlueButton, включая её текущих участников, метаданные, параметры конфигурации и статус записи. Используйте её для анализа конкретной встречи в реальном времени.

Конечная точка

GET/POST https://api-guide.bbbserver.com/bigbluebutton/api/getMeetingInfo?<parameter>&checksum=replace-with-checksum

Эта конечная точка требует действительной контрольной суммы, вычисленной на основе общего секрета вашего сервера BigBlueButton. Поддерживаются как запросы GET, так и POST.

Параметры

Параметр Тип Обязательно Описание
meetingID String Да Идентификатор встречи, информацию о которой нужно запросить. Это ID, который вы указали при создании встречи.

Поля ответа

Успешный ответ содержит следующие поля, описывающие встречу и ее текущее состояние:

Поле Тип Описание
returncode String Указывает, был ли вызов успешным. Возвращает SUCCESS или FAILED.
meetingName String Понятное человеку название встречи.
meetingID String Внешний идентификатор встречи, указанный при создании.
internalMeetingID String Внутренний уникальный идентификатор, сгенерированный BigBlueButton.
createTime Long Метка времени (в миллисекундах с начала эпохи), когда встреча была создана.
createDate String Понятные человеку дата и время создания встречи.
voiceBridge String Номер голосового моста для подключения по телефону.
dialNumber String Номер телефона для доступа по звонку, если настроен.
attendeePW String deprecated Пароль участника. Включён для обратной совместимости, но устарел с версии BigBlueButton 2.5.
moderatorPW String deprecated Пароль модератора. Включён для обратной совместимости, но устарел с версии BigBlueButton 2.5.
running Boolean Запущена ли встреча в данный момент (true) или нет (false).
duration Integer Максимальная длительность встречи в минутах. Значение 0 означает без ограничений.
hasUserJoined Boolean Указывает, присоединился ли к встрече хотя бы один пользователь.
recording Boolean Указывает, записывается ли встреча.
hasBeenForciblyEnded Boolean Была ли встреча завершена API-вызовом end.
startTime Long Метка времени (в миллисекундах), когда встреча началась.
endTime Long Метка времени (в миллисекундах), когда встреча завершилась. Возвращает 0, если она все еще идет.
participantCount Integer Общее количество участников, которые в данный момент находятся на встрече.
listenerCount Integer Количество участников в режиме только прослушивания.
voiceParticipantCount Integer Количество участников, подключившихся к аудиоканалу.
videoCount Integer Количество участников, которые транслируют свою веб-камеру.
maxUsers Integer Максимально допустимое количество пользователей. Значение 0 означает без ограничений.
moderatorCount Integer Количество модераторов, которые в данный момент находятся на встрече.
attendees XML Container Содержит список элементов attendee с подробной информацией о каждом подключенном участнике (см. ниже поля Attendee).
metadata XML Container Содержит пользовательские пары ключ-значение метаданных, переданные при создании встречи.
isBreakout Boolean Указывает, является ли встреча комнатой для групповой работы.
parentMeetingID String ID родительской встречи. Присутствует только для комнат групповой работы.
sequence Integer Порядковый номер комнаты групповой работы. Присутствует только для комнат групповой работы.
freeJoin Boolean Указывает, могут ли участники свободно выбирать, к какой комнате групповой работы присоединиться. Присутствует только для комнат групповой работы.
breakoutRooms XML Container Содержит идентификаторы сессионных залов, связанных с этой встречей. Присутствует только тогда, когда сессионные залы были созданы.

Поля участника

Каждый элемент attendee внутри attendees содержит следующие поля:

Поле Тип Описание
userID String Внутренний идентификатор пользователя BigBlueButton, обычно в формате w_xxxxxxxx.
fullName String Отображаемое имя участника.
role Enum Роль участника: MODERATOR или VIEWER.
isPresenter Boolean Указывает, является ли участник в данный момент ведущим.
isListeningOnly Boolean Находится ли участник в режиме только прослушивания.
hasJoinedVoice Boolean Подключился ли участник к аудиоканалу с микрофоном.
hasVideo Boolean Делится ли участник своим изображением с веб-камеры.
clientType String Тип клиента, который использует участник. Обычно HTML5.
customdata XML Container Содержит пользовательские данные ключ-значение в виде дочерних элементов XML. Присутствует только тогда, когда для участника были заданы пользовательские данные при join.

Пример запроса

GET https://api-guide.bbbserver.com/bigbluebutton/api/getMeetingInfo?meetingID=replace-with-meeting-id&checksum=replace-with-checksum

Пример ответа (успех)

<response>
  <returncode>SUCCESS</returncode>
  <meetingName>Project Discussion</meetingName>
    <meetingID>replace-with-meeting-id</meetingID>
    <internalMeetingID>replace-with-internal-meeting-id</internalMeetingID>
  <createTime>1715261728123</createTime>
  <createDate>Thu May 09 13:35:28 UTC 2024</createDate>
  <voiceBridge>66052</voiceBridge>
  <dialNumber>613-555-1234</dialNumber>
    <attendeePW>replace-with-password</attendeePW>
    <moderatorPW>replace-with-password</moderatorPW>
  <running>true</running>
  <duration>0</duration>
  <hasUserJoined>true</hasUserJoined>
  <recording>true</recording>
  <hasBeenForciblyEnded>false</hasBeenForciblyEnded>
  <startTime>1715261728142</startTime>
  <endTime>0</endTime>
  <participantCount>3</participantCount>
  <listenerCount>1</listenerCount>
  <voiceParticipantCount>2</voiceParticipantCount>
  <videoCount>2</videoCount>
  <maxUsers>0</maxUsers>
  <moderatorCount>1</moderatorCount>
  <attendees>
    <attendee>
    <userID>replace-with-user-id</userID>
      <fullName>Max Mustermann</fullName>
      <role>MODERATOR</role>
      <isPresenter>true</isPresenter>
      <isListeningOnly>false</isListeningOnly>
      <hasJoinedVoice>true</hasJoinedVoice>
      <hasVideo>true</hasVideo>
      <clientType>HTML5</clientType>
    </attendee>
  </attendees>
  <metadata>
    <bbb-origin>greenlight</bbb-origin>
    <bbb-origin-version>v3.1.0</bbb-origin-version>
    <endcallbackurl>https://api-guide.bbbserver.com/callbacks/meeting-ended</endcallbackurl>
  </metadata>
  <isBreakout>false</isBreakout>
</response>

Ответ с ошибкой

Если указанный идентификатор встречи не существует или встреча уже завершена, API возвращает ответ FAILED:

<response>
  <returncode>FAILED</returncode>
  <messageKey>notFound</messageKey>
  <message>We could not find a meeting with that meeting ID</message>
</response>

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

getMeetingInfo против getMeetings

Аспект getMeetings getMeetingInfo
Область Все активные встречи на сервере Одна конкретная встреча
Параметры Не требуется meetingID обязательно
Сведения об участниках Все пользователи, включая тех, кто уже вышел Только пользователи, подключенные в данный момент
Сценарий использования Обзор панели мониторинга и состояния Целенаправленная проверка конкретной встречи

Распространённые сценарии использования

  • Логика входа — проверьте, присутствует ли модератор, прежде чем перенаправлять гостей на встречу.
  • Списки участников — отображайте текущих участников во внешнем приложении или на странице ожидания.
  • Статус записи — проверьте, активна ли в данный момент запись встречи.
  • Отладка — выполните подробный анализ конкретной встречи для устранения неполадок.
На bbbserver.de конечная точка getMeetingInfo доступна на всех тарифах. Вы можете найти свои API-учётные данные в панели управления сервером.

Советы

Опрос getMeetingInfo с определённым интервалом позволяет построить живой список участников. Комбинируйте поля voiceParticipantCount и videoCount, чтобы определить, сколько пользователей активно используют аудио и видео.

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

Поля attendeePW и moderatorPW устарели с версии BigBlueButton 2.5. Они всё ещё возвращаются для обратной совместимости, но вам не следует полагаться на них в логике аутентификации новых интеграций.

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

Вы получите ответ FAILED с messageKey «notFound». BigBlueButton удаляет данные встречи из памяти после её завершения. Чтобы получить информацию о прошедших встречах, используйте конечную точку getRecordings.

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

Сам BigBlueButton не накладывает жёсткого ограничения по частоте запросов, но частый опрос (например, каждую секунду) может создавать ненужную нагрузку на сервер. Для большинства сценариев обычно достаточно интервала опроса от 5 до 10 секунд.

Да. Вызовите getMeetingInfo с meetingID. Если в ответе returncode равно SUCCESS, встреча существует и активна. Если это FAILED с messageKey «notFound», встреча не существует или уже завершена.

Поля вроде parentMeetingID, sequence, freeJoin и breakoutRooms появляются в ответе только тогда, когда встреча является групповой комнатой или имеет групповые комнаты. Для обычных встреч isBreakout равно false, а остальные поля групповых комнат опускаются.

Контейнер customdata содержит пользовательские пары ключ-значение, которые были переданы как параметры, когда пользователь присоединился ко встрече через API-вызов join. Каждый ключ становится дочерним элементом XML. Если пользовательские данные не были переданы, этот элемент может отсутствовать.
Руководство по API BigBlueButton