Migración de la versión 1.x a la 2.0
Esta página recoge los cambios que afectan a la compatibilidad introducidos en v2.0.0 (publicada el 7 de febrero de 2025). La última versión de la serie v1.x fue v1.7.2 (8 de agosto de 2024).
Ámbito de la plataforma
La mayoría de los cambios que implican incompatibilidad con versiones anteriores en la v2.0.0 afectan a la SDK de JavaScript Solo eso. Los cambios que afectan a la compatibilidad con las aplicaciones nativas (iOS/Android) se indican de forma explícita.
Desuso progresivo de la API de chat
La API de Chat ha quedado obsoleta y se eliminará en una futura versión. Cambios importantes relacionados con el chat (p. ej., ChannelType ha pasado a llamarse MemberChannelType, MemberChannelType Las claves en PascalCase y las firmas de funciones de Chat (ya en desuso) no se documentan aquí. No crees nuevas Applications utilizando la API de Chat.
Correspondencia de versiones
| v1.x (última) | v2.x (primera) |
|---|---|
| 1.7.2 | 2.0.0 |
Cambio de nombre de claves de enumeración (JS)
Todas las claves de las enumeraciones han cambiado de su formato de mayúsculas y minúsculas de la versión 1.x a PascalCase. El subyacente valores no han cambiado; lo único que varía son las claves que utilizas para acceder a ellas.
Motivo de la desconexión
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
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
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
RINGING |
Ringing |
'RINGING' |
ANSWERED |
Answered |
'ANSWERED' |
COMPLETED |
Completed |
'COMPLETED' |
Motivo de la desconexión de la llamada
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
networkChange |
NetworkChange |
'networkChange' |
Motivo de la cancelación
En la versión 1.x, las claves ya se escribían en mayúsculas y minúsculas alternadas (PascalCase) — no es necesario realizar ningún cambio.
| Clave | Valor |
|---|---|
RemoteCancel |
'RemoteCancel' |
RejectedElsewhere |
'RejectedElsewhere' |
RemoteTimeout |
'RemoteTimeout' |
AnsweredElsewhere |
'AnsweredElsewhere' |
Tipo de canal de voz
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
app |
App |
'app' |
phone |
Phone |
'phone' |
sip |
Sip |
'sip' |
websocket |
Websocket |
'websocket' |
Tipo de error de Vonage
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
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' |
Motivo del error de sesión
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
TRANSPORT_CLOSED |
TransportClosed |
'TRANSPORT_CLOSED' |
PING_TIMEOUT |
PingTimeout |
'PING_TIMEOUT' |
EXPIRED_TOKEN |
ExpiredToken |
'EXPIRED_TOKEN' |
Ejemplo
// 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 y SessionErrorCodes: de objeto a enumeración (JS)
En la versión 1.x, CSErrorCodes y SessionErrorCodes eran reexportaciones de objetos de Kotlin con SCREAMING_SNAKE_CASE Propiedades getter. En la versión 2.0, son auténticas propiedades al estilo de las enumeraciones de TypeScript. const objetos con PascalCase claves, en consonancia con el resto de enumeraciones del SDK.
Códigos de error CS
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
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' |
Códigos de error de sesión
| Clave v1.x | Clave v2.0 | Valor (sin cambios) |
|---|---|---|
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' |
Ejemplo
// 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) { /* ... */ }
Funciones obsoletas eliminadas
Funciones de registro (todas las plataformas)
| Función eliminada | Plataforma |
|---|---|
setDefaultLoggingLevel() |
Todos |
setVonageClientLoggingLevel() |
JS |
En su lugar, configura el nivel de registro durante la inicialización del cliente. Consulta Registro y diagnóstico para obtener más información sobre la configuración y ver ejemplos.
Registro de tokens push (iOS)
| Función eliminada | Sustitución |
|---|---|
registerDevicePushToken() |
registerDeviceVoipToken() |
Tipos fijos (JS)
Se trata de correcciones de errores, pero pueden provocar fallos en el código que funcionaba a pesar de los tipos incorrectos anteriores:
VonageError.type— antes mostraba una cadena de tipo Kotlin distorsionada; ahora devuelve una cadena correctaVonageErrorTypecadena de uniónon('sessionError')Motivo de la llamada de retorno: antes devolvía una cadena con un tipo Kotlin distorsionado; ahora devuelve un tipo correctoSessionErrorReasoncadena de unión
Si tu código comparaba estos valores con cadenas sin procesar o gestionaba los resultados alterados, actualízalo para que utilice los objetos de enumeración:
// v2.0 — correct usage
client.on('sessionError', (reason) => {
if (reason === SessionErrorReason.ExpiredToken) {
// refresh token
}
});
Actualización a Kotlin 2.0.0
La biblioteca principal se ha actualizado de Kotlin 1.9.x a Kotlin 2.0.0 (con compatibilidad con la API 1.9.21). Si utilizas el SDK de Android y tienes restricciones de versión de Kotlin en tu compilación de Gradle, asegúrate de que sean compatibles con Kotlin 2.0.0.