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 correcta VonageErrorType cadena de unión
  • on('sessionError') Motivo de la llamada de retorno: antes devolvía una cadena con un tipo Kotlin distorsionado; ahora devuelve un tipo correcto SessionErrorReason cadena 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.