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 обязательно |
| Сведения об участниках | Все пользователи, включая тех, кто уже вышел | Только пользователи, подключенные в данный момент |
| Сценарий использования | Обзор панели мониторинга и состояния | Целенаправленная проверка конкретной встречи |
Распространённые сценарии использования
- Логика входа — проверьте, присутствует ли модератор, прежде чем перенаправлять гостей на встречу.
- Списки участников — отображайте текущих участников во внешнем приложении или на странице ожидания.
- Статус записи — проверьте, активна ли в данный момент запись встречи.
- Отладка — выполните подробный анализ конкретной встречи для устранения неполадок.
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. Если пользовательские данные не были переданы, этот элемент может отсутствовать.