Глава 23

Справочник ошибок API

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

Формат ответа с ошибкой

Когда вызов API завершается ошибкой, BigBlueButton возвращает XML-ответ с тремя ключевыми элементами: returncode, машиночитаемым messageKey и человекочитаемым message. Каждый ответ с ошибкой имеет следующую структуру:

<response>
  <returncode>FAILED</returncode>
  <messageKey>errorKeyHere</messageKey>
  <message>A human-readable description of the error.</message>
</response>

Для ошибок значение returncode всегда равно FAILED. Единственное исключение — duplicateWarning, который возвращает SUCCESS, но включает ключ предупреждающего сообщения. Ваша интеграция всегда должна проверять поле messageKey, а не только код возврата.

Ошибки аутентификации и авторизации

Эти ошибки возникают, когда запрос не может быть аутентифицирован или когда у вызывающей стороны нет необходимых разрешений:

messageKey Сообщение Конечные точки, вызывающие ошибку
checksumError Значение checksum не совпадает. Все конечные точки
invalidPassword Указанный пароль недействителен. join, end
guestDeniedAccess Доступ запрещён на основании guest policy. join
missingToken Отсутствует session token. getJoinUrl, learningDashboard
missingSession Недействительный session token. getJoinUrl, learningDashboard
apiNotEnabled Служба API не включена на этом сервере. Все конечные точки

Ошибки управления встречами

Эти ошибки связаны с созданием, присоединением и управлением встречами:

messageKey Сообщение Конечные точки, вызывающие ошибку
invalidMeetingId Указанный meeting ID не существует. getMeetingInfo, isMeetingRunning, end, join
invalidMeetingIdentifier Встреча с этим идентификатором не существует. join
meetingForciblyEnded Невозможно присоединиться к встрече, которая была принудительно завершена. join
idNotUnique Встреча с этим идентификатором уже существует. create
nonUniqueVoiceBridge Выбранный voice bridge уже используется. create
duplicateWarning Эта конференция уже существует и может быть запущена. returncode имеет значение SUCCESS create
mismatchCreateTimeParam Параметр createTime не соответствует текущей встрече. join
maxParticipantsReached Достигнуто максимальное количество участников. join
parentMeetingIDMissing Для групповой комнаты не указан parentMeetingID. create (breakout)
parentMeetingDoesNotExist Для breakout room родительская встреча не найдена. create (breakout)
meetingNotFound Встреча не найдена. sendChatMessage, getJoinUrl, learningDashboard

Ошибки проверки параметров

Эти ошибки возвращаются, когда отсутствуют обязательные параметры или данные запроса не проходят проверку:

messageKey Сообщение Конечные точки, вызывающие ошибку
MissingParam Отсутствует обязательный параметр {param} (динамический). create, join, end, getMeetingInfo, и другие
missingParamMeetingID Необходимо указать meeting ID. create, join, isMeetingRunning, end, getMeetingInfo, insertDocument, sendChatMessage
missingParamFullName Необходимо указать fullName. join
missingParamRecordID Необходимо указать recording ID. updateRecordings, publishRecordings, deleteRecordings, getRecordingTextTracks
missingParamPublish Необходимо указать значение publish (true/false). publishRecordings
validationError Общая ошибка проверки (различные сообщения). Несколько конечных точек
unsupportedContentType Content-Type запроса POST отсутствует или не поддерживается. create, join, end, getMeetingInfo, insertDocument, sendChatMessage
emptyError Поле не должно быть пустым. Общая проверка
fileNameError Не удалось декодировать имя файла. insertDocument

Ошибки записи

Эти ошибки относятся к управлению записями и операциям с текстовыми дорожками:

messageKey Сообщение Конечные точки, вызывающие ошибку
notFound Записи не найдены. updateRecordings, publishRecordings, deleteRecordings
noRecordings Для указанного recording ID запись не найдена. putRecordingTextTrack
empty_uploaded_text_track Загруженный файл text track пуст. putRecordingTextTrack
paramError Параметр {paramName} отсутствует (динамический). putRecordingTextTrack
invalidKind Недопустимый параметр kind — ожидается: subtitles или captions. putRecordingTextTrack
invalidLang Недопустимый параметр language. putRecordingTextTrack

Ошибки сеанса и пользователя

Эти ошибки возникают во время проверки сеанса и пользователя:

messageKey Сообщение Конечные точки, вызывающие ошибку
userNotFound Для указанного user ID активная сессия не найдена. join (с existingUserID)
configNotFound Для этого токена конфигурация не найдена. Внутренняя проверка
noConfigFound Для этого запроса конфигурация не найдена. Внутренняя проверка

Устранение неполадок

При возникновении ошибки API выполните следующие шаги, чтобы диагностировать и устранить проблему:

Проверьте messageKey — используйте приведённые выше таблицы кодов ошибок, чтобы определить точную причину сбоя и то, какой эндпоинт его вызвал.

— наиболее распространённая ошибка: checsumError. Ещё раз убедитесь, что вы используете правильный shared secret, верный алгоритм хеширования и что строка запроса точно совпадает.

Проверьте обязательные параметры — ошибки отсутствующих параметров (MissingParam, missingParamMeetingID и т. д.) указывают на то, что обязательное поле не было включено в запрос.

Подтвердите состояние встречи — такие ошибки, как invalidMeetingId или meetingForciblyEnded, означают, что встреча не существует или уже завершена. Используйте getMeetingInfo, чтобы проверить текущее состояние перед повторной попыткой.

Проверьте журналы сервера — если сообщение об ошибке недостаточно конкретно, проверьте журналы сервера BigBlueButton в /var/log/bigbluebutton/ для получения более подробной информации.

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

При обработке ключа сообщения duplicateWarning обратите внимание, что returncode имеет значение SUCCESS, а не FAILED. Это особый случай, когда BigBlueButton сообщает, что встреча с таким же ID уже существует, но возвращает данные существующей встречи вместо выдачи ошибки.

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

Коды ошибок, перечисленные в этой справке, извлечены непосредственно из исходного кода BigBlueButton 3.0. Официальная документация BBB не содержит полной справки по ошибкам. Определения разбросаны по нескольким исходным файлам, включая ApiErrors.java, ApiController.groovy и RecordingController.groovy.

Да. Хотя значения messageKey, как правило, остаются стабильными между версиями, человекочитаемый текст сообщения может меняться. Для программной обработки ошибок всегда используйте messageKey, а не строку сообщения.

Оба значения указывают на то, что запрошенная встреча не существует, но возвращаются разными эндпоинтами. invalidMeetingId используется в getMeetingInfo, isMeetingRunning, end и join. meetingNotFound используется в sendChatMessage, getJoinUrl и learningDashboard.

duplicateWarning — это особый случай: returncode имеет значение SUCCESS, но messageKey сигнализирует о том, что встреча с тем же ID уже существует. Ваше приложение должно проверить, совпадают ли параметры существующей встречи с тем, что вы намеревались создать. Если да, можно безопасно продолжать. Если нет, выберите другой meeting ID.

Наиболее распространённые причины: используется неверный shared secret, применяется неправильный алгоритм хеширования, строка запроса URL-кодируется непоследовательно или в данные для хеширования включается сам параметр checksum. Убедитесь, что строка для хеширования строится так: apiMethodName + queryString + sharedSecret, где queryString не включает параметр checksum.

Эта ошибка возвращается, когда в запросе POST отсутствует заголовок Content-Type или используется тип содержимого, который BigBlueButton не поддерживает. Убедитесь, что ваши запросы POST включают заголовок Content-Type: application/x-www-form-urlencoded.

BigBlueButton может возвращать дополнительные коды ошибок из плагинов или пользовательских модулей, которые не являются частью основного API. Перечисленные здесь коды охватывают основной API BigBlueButton 3.0. Если вы столкнулись с неизвестным messageKey, проверьте журналы сервера и установленные плагины для получения дополнительной информации.
Руководство по API BigBlueButton