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 correcteVonageErrorTypechaîne de jonctionon('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 correcteSessionErrorReasonchaî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.