Migration de la version 1.x à la version 2.0

Cette page présente les modifications importantes introduites dans v2.0.0 (publié le 7 février 2025). La dernière version v1.x était v1.7.2 (8 août 2024).

Périmètre de la plateforme

La plupart des changements incompatibles de la version 2.0.0 concernent le SDK JavaScript uniquement. Les modifications compatibles avec les versions natives (iOS/Android) sont clairement signalées.

Obsolescence de l'API Chat

L'API Chat est obsolète et sera supprimée dans une prochaine version. Modifications majeures liées à Chat (par exemple : ChannelType renommé en MemberChannelType, MemberChannelType Les clés en PascalCase et les signatures de fonctions Chat obsolètes ont été supprimées. Elles ne sont pas documentées ici. Ne créez pas de nouvelles applications à l'aide de l'API Chat.

Correspondance des versions

v1.x (dernière version) v2.x (première version)
1.7.2 2.0.0

Renommer les clés d'une énumération (JS)

Toutes les clés d'énumération ont été modifiées : leur casse, qui était celle de la version 1.x, a été remplacée par PascalCase. Le fond valeurs restent inchangés — seules les touches que vous utilisez pour y accéder diffèrent.

Motif de la coupure

Clé v1.x Clé v2.0 Valeur (inchangée)
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

Clé v1.x Clé v2.0 Valeur (inchangée)
RINGING Ringing 'RINGING'
ANSWERED Answered 'ANSWERED'
COMPLETED Completed 'COMPLETED'

Motif de coupure de l'appel

Clé v1.x Clé v2.0 Valeur (inchangée)
networkChange NetworkChange 'networkChange'

Motif d'annulation

Dans la version 1.x, les clés étaient déjà en PascalCase — aucune modification nécessaire.

Clé Valeur
RemoteCancel 'RemoteCancel'
RejectedElsewhere 'RejectedElsewhere'
RemoteTimeout 'RemoteTimeout'
AnsweredElsewhere 'AnsweredElsewhere'

Type de canal vocal

Clé v1.x Clé v2.0 Valeur (inchangée)
app App 'app'
phone Phone 'phone'
sip Sip 'sip'
websocket Websocket 'websocket'

VonageErrorType

Clé v1.x Clé v2.0 Valeur (inchangée)
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

Clé v1.x Clé v2.0 Valeur (inchangée)
TRANSPORT_CLOSED TransportClosed 'TRANSPORT_CLOSED'
PING_TIMEOUT PingTimeout 'PING_TIMEOUT'
EXPIRED_TOKEN ExpiredToken 'EXPIRED_TOKEN'

Exemple

// 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 et SessionErrorCodes : conversion d'un objet en énumération (JS)

Dans la version 1.x, CSErrorCodes et SessionErrorCodes il s'agissait de réexportations d'objets Kotlin avec SCREAMING_SNAKE_CASE propriétés « getter ». Dans la version 2.0, il s'agit de véritables énumérations de type TypeScript const objets avec PascalCase clés, conformes à toutes les autres énumérations du SDK.

Codes d'erreur CSError

Clé v1.x Clé v2.0 Valeur (inchangée)
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'

Codes d'erreur de session

Clé v1.x Clé v2.0 Valeur (inchangée)
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'

Exemple

// 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) { /* ... */ }

Suppression des fonctions obsolètes

Fonctions de journalisation (toutes les plateformes)

Fonction supprimée Plate-forme
setDefaultLoggingLevel() Tous
setVonageClientLoggingLevel() JS

Définissez plutôt le niveau de journalisation lors de l'initialisation du client. Voir Journalisation et diagnostics pour plus de détails sur la configuration et des exemples.

Enregistrement d'un jeton de notification (iOS)

Fonction supprimée Remplacement
registerDevicePushToken() registerDeviceVoipToken()

Types fixes (JS)

Il s'agit de corrections de bogues, mais elles peuvent entraîner des dysfonctionnements dans le code qui contournait les types incorrects précédents :

  • VonageError.type — affichait auparavant une chaîne de caractères de type Kotlin mal formée ; renvoie désormais une chaîne correcte VonageErrorType chaîne de jonction
  • on('sessionError') motif de la fonction de rappel — renvoyait auparavant une chaîne de caractères représentant un type Kotlin déformé ; renvoie désormais une chaîne correcte SessionErrorReason chaîne de jonction

Si votre code comparait ces valeurs à des chaînes brutes ou traitait la sortie altérée, modifiez-le pour utiliser les objets énumérés :

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

Mise à jour vers Kotlin 2.0.0

La bibliothèque principale a été mise à jour, passant de Kotlin 1.9.x à Kotlin 2.0.0 (avec une compatibilité API 1.9.21). Si vous utilisez le SDK Android et que votre configuration Gradle comporte des contraintes de version pour Kotlin, assurez-vous qu'elles soient compatibles avec Kotlin 2.0.0.