Глава 11 GET POST

getRecordings – Получить записи

Эндпоинт getRecordings возвращает список записей с вашего сервера BigBlueButton, отфильтрованных по meeting ID, recording ID или состоянию. Начиная с BBB 2.7 он поддерживает пагинацию, что позволяет удобно получать большие наборы записей управляемыми порциями.

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

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

Параметры

Параметр Тип Обязательно По умолчанию Описание
meetingID String Список meeting ID, разделённых запятыми. Игнорируется, если указан recordID. Если параметр опущен, возвращаются все записи.
recordID String Список идентификаторов записей, разделённых запятыми. Имеет приоритет над meetingID. Поддерживается сопоставление по префиксу — например, 652c9eb4 соответствует всем записям, идентификатор которых начинается с этого префикса.
state String published,unpublished Фильтр состояния, разделённый запятыми. Допустимые значения: processing, processed, published, unpublished, deleted. Используйте any, чтобы вернуть все состояния.
meta String Фильтр метаданных в том же формате, что и в вызове create (например, meta_presenter=John).
offset Integer 0 Начальный индекс для пагинации. Используется только если также указан limit. BBB 2.7+
limit Integer Максимальное количество записей в одном ответе (от 1 до 100). Значения вне этого диапазона автоматически ограничиваются. BBB 2.7+

Ни один из параметров не является обязательным. Вызов getRecordings без каких-либо фильтров возвращает все записи published и unpublished на сервере.

Состояния записи

Состояние Описание
processing Запись в настоящее время обрабатывается.
processed Обработка завершена, но запись ещё не опубликована.
published Запись опубликована и доступна пользователям.
unpublished Запись существует, но недоступна пользователям.
deleted Запись помечена для удаления.

Фильтр состояния по умолчанию включает только записи published и unpublished. Чтобы увидеть записи, которые всё ещё обрабатываются или были удалены, необходимо явно задать параметр state.

Поля ответа

Поле Тип Описание
recordID String Уникальный идентификатор записи.
meetingID String Внешний идентификатор встречи, связанный с этой записью.
internalMeetingID String Внутренний meeting ID, используемый BigBlueButton.
name String Название встречи на момент записи.
isBreakout Boolean Является ли эта запись записью из комнаты для групповой работы.
published Boolean Опубликована ли эта запись в данный момент.
state String Текущее состояние записи (processing, processed, published, unpublished, deleted).
startTime Long Unix-метка времени в миллисекундах, когда началась встреча.
endTime Long Unix-метка времени в миллисекундах, когда завершилась встреча.
participants Integer Количество участников встречи.
rawSize Long Размер исходных данных записи в байтах.
size Long Размер обработанной записи в байтах.
metadata Object Пользовательские пары ключ-значение метаданных, связанных с записью.
playback Object Сведения о формате воспроизведения, включая URL, время обработки, длительность, размер и миниатюры предпросмотра.
totalElements Integer Общее количество совпадающих записей. Присутствует только при использовании параметров пагинации. BBB 2.7+

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

Все опубликованные записи

getRecordings?checksum=replace-with-checksum

Записи для конкретной встречи

getRecordings?meetingID=replace-with-meeting-id&checksum=replace-with-checksum

Несколько встреч

getRecordings?meetingID=replace-with-meeting-id-1,replace-with-meeting-id-2&checksum=replace-with-checksum

По ID записи

getRecordings?recordID=replace-with-recording-id&checksum=replace-with-checksum

Все состояния

getRecordings?state=any&checksum=replace-with-checksum

Запрос с пагинацией (записи с 21 по 30)

getRecordings?state=published&offset=20&limit=10&checksum=replace-with-checksum

Пример ответа

<response>
  <returncode>SUCCESS</returncode>
  <recordings>
    <recording>
    <recordID>replace-with-recording-id</recordID>
    <meetingID>replace-with-meeting-id</meetingID>
    <internalMeetingID>replace-with-internal-meeting-id</internalMeetingID>
      <name>Project Meeting</name>
      <isBreakout>false</isBreakout>
      <published>true</published>
      <state>published</state>
      <startTime>1462283509434</startTime>
      <endTime>1462284509434</endTime>
      <participants>5</participants>
      <metadata>
        <bbb-origin>greenlight</bbb-origin>
      </metadata>
      <rawSize>123456789</rawSize>
      <size>98765432</size>
      <playback>
        <format>
          <type>presentation</type>
                    <url>https://api-guide.bbbserver.com/playback/presentation/2.3/replace-with-recording-id</url>
          <processingTime>62890</processingTime>
          <length>45</length>
          <size>98765432</size>
          <preview>
            <images>
              <image width="176" height="136" alt="Welcome">
                                https://api-guide.bbbserver.com/presentation/replace-with-recording-id/thumbnail_0.png
              </image>
            </images>
          </preview>
        </format>
      </playback>
    </recording>
  </recordings>
</response>

Пагинация BBB 2.7+

Если вы включаете параметры offset и/или limit, ответ содержит дополнительное поле totalElements, указывающее общее количество совпадающих записей. Это позволяет вычислить общее число страниц и создать элементы управления пагинацией в вашем приложении.

<response>
  <returncode>SUCCESS</returncode>
  <totalElements>42</totalElements>
  <recordings>
    <!-- recording elements -->
  </recordings>
</response>
bbbserver.de — На bbbserver.de эндпоинт getRecordings полностью доступен через API. Пагинация поддерживается на всех актуальных тарифах сервера с BBB 2.7 или новее.

Советы

  • Используйте recordID с префиксом для поиска записей, когда у вас есть только частичный ID — BigBlueButton сопоставляет все записи, ID которых начинается с указанной строки.
  • Всегда явно указывайте параметр state, если вам нужно видеть записи, которые всё ещё обрабатываются или были удалены, так как по умолчанию они исключаются.
  • Комбинируйте meetingID с state, чтобы эффективно сузить результаты — например, чтобы найти только опубликованные записи для конкретной встречи.
  • Для крупных развертываний с большим количеством записей используйте пагинацию, чтобы избежать тайм-аутов и уменьшить размер ответов.
  • Используйте фильтры метаданных (параметры meta_), чтобы находить записи на основе пользовательских атрибутов, заданных при создании встречи.

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

Эндпоинт вернёт все записи в состоянии published или unpublished. Записи, которые всё ещё обрабатываются или были помечены на удаление, не включаются, если вы явно не зададите параметр state.

Когда вы указываете частичный recording ID, BigBlueButton сопоставляет все записи, полный ID которых начинается с заданной строки. Например, передача 652c9eb4 вернёт каждую запись, ID которой начинается с этого префикса. В официальной документации это иногда называют wildcard matching, но фактически используется строгое сопоставление по префиксу (startsWith), а не поиск по подстроке.

Да. Используйте параметр meta с теми же именами ключей, которые вы задавали при создании встречи. Например, если при создании встречи вы передали meta_presenter=John, вы можете фильтровать по той же паре ключ-значение в getRecordings. Обратите внимание, что точное поведение сопоставления для фильтров метаданных в официальной документации описано не полностью.

meetingID — это внешний идентификатор, который вы назначили при создании встречи. Одна встреча может породить несколько записей. recordID — это уникальный идентификатор каждой отдельной записи. Если указаны оба параметра, recordID имеет приоритет, а meetingID игнорируется.

Для пагинации требуется BBB 2.7 или новее. Установите параметр limit, чтобы контролировать количество записей, возвращаемых за запрос (от 1 до 100), и используйте offset, чтобы пропустить определённое число результатов. Ответ будет содержать поле totalElements, чтобы вы могли вычислить общее количество страниц. Параметр offset не оказывает эффекта, если также не указан limit.

BigBlueButton автоматически ограничивает значение допустимым диапазоном. Если вы передадите значение больше 100, оно будет трактоваться как 100. Если вы передадите значение меньше 1, оно будет трактоваться как 1. Ошибка не возвращается.

Да. Записи групповых комнат включаются и могут быть определены по полю isBreakout со значением true. Они также могут содержать дополнительные поля, такие как ID родительской встречи и номер последовательности групповой комнаты.
Руководство по API BigBlueButton