Migration von v1.x auf v2.0

Auf dieser Seite werden die in […], eingeführten Kompatibilitätsänderungen behandelt. v2.0.0 (veröffentlicht am 07.02.2025). Die letzte Version der Version 1.x war v1.7.2 (08.08.2024).

Umfang der Plattform

Die meisten kompatibilitätsbrechenden Änderungen in Version 2.0.0 betreffen die JavaScript-SDK nur. Wesentliche Änderungen an nativen Anwendungen (iOS/Android) werden ausdrücklich hervorgehoben.

Einstellung der Chat-API

Die Chat-API ist veraltet und wird in einer zukünftigen Version entfernt. Chat-bezogene Änderungen mit Kompatibilitätsproblemen (z. B. ChannelType umbenannt in MemberChannelType, MemberChannelType (Schlüssel in PascalCase, veraltete Signaturen der Chat-Funktionen wurden entfernt) werden hier nicht dokumentiert. Erstellen Sie keine neuen Applications unter Verwendung der Chat-API.

Versionszuordnung

v1.x (aktuell) v2.x (erste Version)
1.7.2 2.0.0

Umbenennung von Enum-Schlüsseln (JS)

Alle Enum-Schlüssel wurden von der Groß-/Kleinschreibung in Version 1.x geändert zu PascalCase. Das zugrunde liegende Werte sind unverändert – nur die Schlüssel, mit denen Sie darauf zugreifen, unterscheiden sich.

Grund für den Anrufabbruch

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
REMOTE_HANGUP RemoteHangup 'REMOTE_HANGUP'
REMOTE_REJECT RemoteReject 'REMOTE_REJECT'
REMOTE_NO_ANSWER_TIMEOUT RemoteNoAnswerTimeout 'REMOTE_NO_ANSWER_TIMEOUT'
LOCAL_HANGUP LocalHangup 'LOCAL_HANGUP'
MEDIA_TIMEOUT MediaTimeout 'MEDIA_TIMEOUT'

LegStatus

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
RINGING Ringing 'RINGING'
ANSWERED Answered 'ANSWERED'
COMPLETED Completed 'COMPLETED'

CallDisconnectReason

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
networkChange NetworkChange 'networkChange'

Stornierungsgrund

Die Schlüssel waren bereits in Version 1.x im PascalCase-Format — keine Änderung erforderlich.

Schlüssel Wert
RemoteCancel 'RemoteCancel'
RejectedElsewhere 'RejectedElsewhere'
RemoteTimeout 'RemoteTimeout'
AnsweredElsewhere 'AnsweredElsewhere'

VoiceChannelType

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
app App 'app'
phone Phone 'phone'
sip Sip 'sip'
websocket Websocket 'websocket'

Vonage-Fehlertyp

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
CS_ERROR CsError 'CS_ERROR'
SESSION_ERROR SessionError 'SESSION_ERROR'
NETWORK_ERROR NetworkError 'NETWORK_ERROR'
INTERNAL_ERROR InternalError 'INTERNAL_ERROR'
UNKNOWN_ERROR UnknownError 'UNKNOWN_ERROR'

SessionErrorReason

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
TRANSPORT_CLOSED TransportClosed 'TRANSPORT_CLOSED'
PING_TIMEOUT PingTimeout 'PING_TIMEOUT'
EXPIRED_TOKEN ExpiredToken 'EXPIRED_TOKEN'

Beispiel

// v1.x
if (reason === HangupReason.REMOTE_HANGUP) { /* ... */ }
if (error.type === VonageErrorType.CS_ERROR) { /* ... */ }
if (channel === VoiceChannelType.app) { /* ... */ }

// v2.0
if (reason === HangupReason.RemoteHangup) { /* ... */ }
if (error.type === VonageErrorType.CsError) { /* ... */ }
if (channel === VoiceChannelType.App) { /* ... */ }

CSErrorCodes & SessionErrorCodes: Objekt zu Enum (JS)

In Version 1.x, CSErrorCodes und SessionErrorCodes waren Re-Exporte von Kotlin-Objekten mit SCREAMING_SNAKE_CASE Getter-Eigenschaften. In Version 2.0 sind sie echte TypeScript-Eigenschaften im Enum-Stil const Objekte mit PascalCase Schlüssel, die mit allen anderen SDK-Enumerationen übereinstimmen.

CSErrorCodes

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
CONVERSATION_DUPLICATE_NAME ConversationDuplicateName 'CONVERSATION_DUPLICATE_NAME'
MEMBER_ALREADY_JOINED MemberAlreadyJoined 'MEMBER_ALREADY_JOINED'
MEMBER_ALREADY_INVITED MemberAlreadyInvited 'MEMBER_ALREADY_INVITED'
CONVERSATION_NOT_FOUND ConversationNotFound 'CONVERSATION_NOT_FOUND'
MEMBER_NOT_FOUND MemberNotFound 'MEMBER_NOT_FOUND'
USER_NOT_FOUND UserNotFound 'USER_NOT_FOUND'
INVALID_CURSOR InvalidCursor 'INVALID_CURSOR'
VALIDATION_FAIL ValidationFail 'VALIDATION_FAIL'
CONVERSATION_MAX_NUMBER_OF_MEMBERS ConversationMaxNumberOfMembers 'CONVERSATION_MAX_NUMBER_OF_MEMBERS'
CUSTOM_DATA_OVERALL_LIMIT_EXCEEDED CustomDataOverallLimitExceeded 'CUSTOM_DATA_OVERALL_LIMIT_EXCEEDED'

Session-Fehlercodes

v1.x-Schlüssel v2.0-Schlüssel Wert (unverändert)
TIMEOUT Timeout 'TIMEOUT'
EXPIRED_TOKEN ExpiredToken 'EXPIRED_TOKEN'
EMPTY_TOKEN EmptyToken 'EMPTY_TOKEN'
FORCED_DISCONNECT ForcedDisconnect 'FORCED_DISCONNECT'
INTERNAL_FAILURE InternalFailure 'INTERNAL_FAILURE'
NO_ACTIVE_SESSION NoActiveSession 'NO_ACTIVE_SESSION'
ALREADY_ACTIVE_SESSION AlreadyActiveSession 'ALREADY_ACTIVE_SESSION'
INVALID_TOKEN InvalidToken 'INVALID_TOKEN'
INVALID_USER InvalidUser 'INVALID_USER'
AUTHORIZATION_ERROR AuthorizationError 'AUTHORIZATION_ERROR'
INVALID_SESSION InvalidSession 'INVALID_SESSION'
MAX_OPEN_SESSIONS MaxOpenSessions 'MAX_OPEN_SESSIONS'
INVALID_SOCKET_TRANSPORT InvalidSocketTransport 'INVALID_SOCKET_TRANSPORT'
CLIENT_DISCONNECT ClientDisconnect 'CLIENT_DISCONNECT'
PING_TIMEOUT_DISCONNECT PingTimeoutDisconnect 'PING_TIMEOUT_DISCONNECT'
TRANSPORT_CLOSED_DISCONNECT TransportClosedDisconnect 'TRANSPORT_CLOSED_DISCONNECT'

Beispiel

// v1.x (Kotlin object re-export with SCREAMING_SNAKE getters)
if (code === CSErrorCodes.CONVERSATION_NOT_FOUND) { /* ... */ }
if (code === SessionErrorCodes.EXPIRED_TOKEN) { /* ... */ }

// v2.0 (TypeScript enum-style const object with PascalCase keys)
if (code === CSErrorCodes.ConversationNotFound) { /* ... */ }
if (code === SessionErrorCodes.ExpiredToken) { /* ... */ }

Veraltete Funktionen entfernt

Protokollierungsfunktionen (alle Plattformen)

Entfernte Funktion Plattform
setDefaultLoggingLevel() Alle
setVonageClientLoggingLevel() JS

Legen Sie die Protokollierungsstufe stattdessen bei der Initialisierung des Clients fest. Siehe Protokollierung und Diagnose für Konfigurationsdetails und Beispiele.

Registrierung für Push-Token (iOS)

Entfernte Funktion Ersatz
registerDevicePushToken() registerDeviceVoipToken()

Feste Typen (JS)

Es handelt sich hierbei um Fehlerbehebungen, die jedoch dazu führen können, dass Code, der die bisherigen falschen Typen umgangen hat, nicht mehr funktioniert:

  • VonageError.type — gab zuvor eine fehlerhafte Kotlin-Typzeichenfolge zurück; gibt nun eine korrekte VonageErrorType Verbindungszeichenfolge
  • on('sessionError') Grund für den Callback – gab zuvor eine verfälschte Kotlin-Typzeichenfolge zurück; gibt nun eine korrekte SessionErrorReason Verbindungszeichenfolge

Falls Ihr Code diese mit rohen Zeichenketten verglichen oder die verfälschte Ausgabe verarbeitet hat, passen Sie ihn so an, dass er die Enum-Objekte verwendet:

// v2.0 — correct usage
client.on('sessionError', (reason) => {
  if (reason === SessionErrorReason.ExpiredToken) {
    // refresh token
  }
});

Upgrade auf Kotlin 2.0.0

Die Kernbibliothek wurde von Kotlin 1.9.x auf Kotlin 2.0.0 aktualisiert (mit API-Kompatibilität zu 1.9.21). Wenn Sie das Android SDK nutzen und in Ihrem Gradle-Build Versionsbeschränkungen für Kotlin festgelegt haben, stellen Sie sicher, dass diese mit Kotlin 2.0.0 kompatibel sind.