API-Fehlerreferenz
Jede fehlgeschlagene API-Anfrage an BigBlueButton gibt eine standardisierte XML-Fehlerantwort zurück. Dieses Kapitel bietet eine vollständige Referenz aller Fehlercodes und Meldungen, die die API zurückgeben kann, basierend auf Quellcodeanalysen von BigBlueButton 3.0.
Format der Fehlerantwort
Wenn ein API-Aufruf fehlschlägt, gibt BigBlueButton eine XML-Antwort mit drei Schlüsselelementen zurück: einem returncode, einem maschinenlesbaren messageKey und einer menschenlesbaren message. Jede Fehlerantwort folgt dieser Struktur:
<response>
<returncode>FAILED</returncode>
<messageKey>errorKeyHere</messageKey>
<message>A human-readable description of the error.</message>
</response> Der Wert returncode ist bei Fehlern immer FAILED. Die einzige Ausnahme ist duplicateWarning, das SUCCESS zurückgibt, aber einen Warnungs-Nachrichtenschlüssel enthält. Ihre Integration sollte immer das Feld messageKey prüfen, nicht nur den Rückgabecode.
Authentifizierungs- und Autorisierungsfehler
Diese Fehler treten auf, wenn eine Anfrage nicht authentifiziert werden kann oder wenn dem Aufrufer die erforderlichen Berechtigungen fehlen:
messageKey | Nachricht | Auslösende Endpunkte |
|---|---|---|
checksumError | Die checksum stimmt nicht überein. | Alle Endpunkte |
invalidPassword | Das angegebene Passwort ist ungültig. | join, end |
guestDeniedAccess | Zugriff aufgrund der guest policy verweigert. | join |
missingToken | Das session token fehlt. | getJoinUrl, learningDashboard |
missingSession | Das session token ist ungültig. | getJoinUrl, learningDashboard |
apiNotEnabled | Der API-Dienst ist auf diesem Server nicht aktiviert. | Alle Endpunkte |
Fehler bei der Meetingverwaltung
Diese Fehler beziehen sich auf das Erstellen, Beitreten und Verwalten von Meetings:
messageKey | Nachricht | Auslösende Endpunkte |
|---|---|---|
invalidMeetingId | Die angegebene meeting ID existiert nicht. | getMeetingInfo, isMeetingRunning, end, join |
invalidMeetingIdentifier | Ein Meeting mit dieser ID existiert nicht. | join |
meetingForciblyEnded | Einem Meeting, das zwangsweise beendet wurde, kann nicht beigetreten werden. | join |
idNotUnique | Ein Meeting mit dieser ID existiert bereits. | create |
nonUniqueVoiceBridge | Die ausgewählte voice bridge wird bereits verwendet. | create |
duplicateWarning | Diese Konferenz existiert bereits und läuft möglicherweise. returncode ist SUCCESS | create |
mismatchCreateTimeParam | Der Parameter createTime stimmt nicht mit dem aktuellen Meeting überein. | join |
maxParticipantsReached | Die maximale Teilnehmerzahl wurde erreicht. | join |
parentMeetingIDMissing | Für den Breakout-Raum wurde keine parentMeetingID angegeben. | create (breakout) |
parentMeetingDoesNotExist | Kein übergeordnetes Meeting für den breakout room gefunden. | create (breakout) |
meetingNotFound | Das Meeting wurde nicht gefunden. | sendChatMessage, getJoinUrl, learningDashboard |
Fehler bei der Parametervalidierung
Diese Fehler werden zurückgegeben, wenn erforderliche Parameter fehlen oder wenn Anfragedaten die Validierung nicht bestehen:
messageKey | Nachricht | Auslösende Endpunkte |
|---|---|---|
MissingParam | Erforderlicher Parameter {param} fehlt (dynamisch). | create, join, end, getMeetingInfo, und andere |
missingParamMeetingID | Die meeting ID muss angegeben werden. | create, join, isMeetingRunning, end, getMeetingInfo, insertDocument, sendChatMessage |
missingParamFullName | Der fullName muss angegeben werden. | join |
missingParamRecordID | Die recording ID muss angegeben werden. | updateRecordings, publishRecordings, deleteRecordings, getRecordingTextTracks |
missingParamPublish | Der Wert publish (true/false) muss angegeben werden. | publishRecordings |
validationError | Allgemeiner Validierungsfehler (verschiedene Meldungen). | Mehrere Endpunkte |
unsupportedContentType | Der Content-Type der POST-Anfrage fehlt oder wird nicht unterstützt. | create, join, end, getMeetingInfo, insertDocument, sendChatMessage |
emptyError | Das Feld darf nicht leer sein. | Allgemeine Validierung |
fileNameError | Der Dateiname konnte nicht decodiert werden. | insertDocument |
Fehler bei Aufzeichnungen
Diese Fehler sind spezifisch für die Verwaltung von Aufzeichnungen und Textspur-Operationen:
messageKey | Nachricht | Auslösende Endpunkte |
|---|---|---|
notFound | Keine Aufzeichnungen gefunden. | updateRecordings, publishRecordings, deleteRecordings |
noRecordings | Keine Aufzeichnung für die angegebene recording ID gefunden. | putRecordingTextTrack |
empty_uploaded_text_track | Die hochgeladene text track-Datei ist leer. | putRecordingTextTrack |
paramError | Parameter {paramName} fehlt (dynamisch). | putRecordingTextTrack |
invalidKind | Ungültiger Parameter kind — erwartet: subtitles oder captions. | putRecordingTextTrack |
invalidLang | Ungültiger Sprachparameter. | putRecordingTextTrack |
Sitzungs- und Benutzerfehler
Diese Fehler treten während der Validierung von Sitzungen und Benutzern auf:
messageKey | Nachricht | Auslösende Endpunkte |
|---|---|---|
userNotFound | Keine aktive Sitzung für die angegebene user ID gefunden. | join (mit existingUserID) |
configNotFound | Keine Konfiguration für dieses Token gefunden. | Interne Validierung |
noConfigFound | Keine Konfiguration für diese Anfrage gefunden. | Interne Validierung |
Fehlerbehebung
Wenn Sie auf einen API-Fehler stoßen, befolgen Sie diese Schritte, um das Problem zu diagnostizieren und zu beheben:
Prüfen Sie den messageKey — verwenden Sie die obigen Fehlercodetabellen, um die genaue Ursache des Fehlers und den auslösenden Endpunkt zu identifizieren.
checsumError. Prüfen Sie sorgfältig, dass Sie das richtige shared secret, den richtigen Hash-Algorithmus verwenden und dass der Query-String exakt übereinstimmt.
Prüfen Sie erforderliche Parameter — Fehler wegen fehlender Parameter (MissingParam, missingParamMeetingID usw.) weisen darauf hin, dass ein erforderliches Feld in der Anfrage nicht enthalten war.
Bestätigen Sie den Meeting-Status — Fehler wie invalidMeetingId oder meetingForciblyEnded bedeuten, dass das Meeting nicht existiert oder bereits beendet wurde. Verwenden Sie getMeetingInfo, um den aktuellen Status vor einem erneuten Versuch zu überprüfen.
Prüfen Sie die Server-Logs — wenn die Fehlermeldung nicht spezifisch genug ist, sehen Sie in den BigBlueButton-Server-Logs in /var/log/bigbluebutton/ nach, um detailliertere Informationen zu erhalten.
Einige Fehlermeldungen sind dynamisch und enthalten den Namen oder Wert des problematischen Parameters. Protokollieren Sie immer die vollständige XML-Antwort der API, um das Debugging zu erleichtern.
Beim Umgang mit dem Message-Key duplicateWarning beachten Sie bitte, dass der returncode SUCCESS ist, nicht FAILED. Dies ist ein Sonderfall, bei dem BigBlueButton signalisiert, dass bereits ein Meeting mit derselben ID existiert, aber die bestehenden Meeting-Daten zurückgibt, anstatt einen Fehler auszulösen.
Häufig gestellte Fragen
BigBlueButton 3.0 extrahiert. Die offizielle BBB-Dokumentation enthält keine vollständige Fehlerreferenz. Die Definitionen sind über mehrere Quelldateien verteilt, darunter ApiErrors.java, ApiController.groovy und RecordingController.groovy.messageKey versionsübergreifend tendenziell stabil bleiben, kann sich der menschenlesbare Meldungstext ändern. Verwenden Sie für die programmgesteuerte Fehlerbehandlung immer den messageKey, nicht den Meldungstext.invalidMeetingId wird von getMeetingInfo, isMeetingRunning, end und join verwendet. meetingNotFound wird von sendChatMessage, getJoinUrl und learningDashboard verwendet.duplicateWarning ist ein Sonderfall: Der returncode ist SUCCESS, aber der messageKey signalisiert, dass bereits ein Meeting mit derselben ID existiert. Ihre Anwendung sollte prüfen, ob die bestehenden Meeting-Parameter mit dem übereinstimmen, was Sie beabsichtigt haben. Falls ja, können Sie sicher fortfahren. Andernfalls wählen Sie eine andere Meeting-ID.shared secret, Anwendung des falschen Hash-Algorithmus, inkonsistente URL-Codierung des Query-Strings oder Einbeziehung des Parameters checksum selbst in die Hash-Eingabe. Stellen Sie sicher, dass die zu hashende Zeichenkette wie folgt aufgebaut ist: apiMethodName + queryString + sharedSecret, wobei queryString den Parameter checksum nicht enthält.POST-Anfrage der Header Content-Type fehlt oder ein Content-Type verwendet wird, den BigBlueButton nicht unterstützt. Stellen Sie sicher, dass Ihre POST-Anfragen den Header Content-Type: application/x-www-form-urlencoded enthalten.messageKey stoßen, prüfen Sie die Server-Logs und eventuell installierte Plugins für weitere Informationen.