Migração da v1.x para a v2.0

Esta página aborda as alterações que causam incompatibilidade introduzidas em v2.0.0 (lançado em 7 de fevereiro de 2025). A última versão da série v1.x foi v1.7.2 (08/08/2024).

Escopo da plataforma

A maioria das alterações que exigem atualização na versão 2.0.0 afeta o SDK do JavaScript Apenas. As alterações que causam incompatibilidade nas aplicações nativas (iOS/Android) são indicadas explicitamente.

Descontinuação da API do Chat

A API do Chat está obsoleta e será removida em uma versão futura. Alterações significativas relacionadas ao Chat (por exemplo, ChannelType renomeado para MemberChannelType, MemberChannelType As chaves em PascalCase e as assinaturas de funções do Chat (que foram descontinuadas) não estão documentadas aqui. Não desenvolva novos aplicativos usando a API do Chat.

Mapeamento de versões

v1.x (última versão) v2.x (primeira)
1.7.2 2.0.0

Renomeação de chaves de enumeração (JS)

Todas as chaves de enumeração passaram da notação de maiúsculas e minúsculas da v1.x para PascalCase. O subjacente valores permanecem inalteradas — apenas as chaves usadas para acessá-las são diferentes.

Motivo do desligamento

Chave v1.x Chave v2.0 Valor (inalterado)
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'

Status da Etapa

Chave v1.x Chave v2.0 Valor (inalterado)
RINGING Ringing 'RINGING'
ANSWERED Answered 'ANSWERED'
COMPLETED Completed 'COMPLETED'

Motivo do encerramento da chamada

Chave v1.x Chave v2.0 Valor (inalterado)
networkChange NetworkChange 'networkChange'

Motivo do cancelamento

As chaves já estavam em PascalCase na versão 1.x — não é necessária nenhuma alteração.

Chave Valor
RemoteCancel 'RemoteCancel'
RejectedElsewhere 'RejectedElsewhere'
RemoteTimeout 'RemoteTimeout'
AnsweredElsewhere 'AnsweredElsewhere'

Tipo de canal de voz

Chave v1.x Chave v2.0 Valor (inalterado)
app App 'app'
phone Phone 'phone'
sip Sip 'sip'
websocket Websocket 'websocket'

Tipo de erro da Vonage

Chave v1.x Chave v2.0 Valor (inalterado)
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 do erro de sessão

Chave v1.x Chave v2.0 Valor (inalterado)
TRANSPORT_CLOSED TransportClosed 'TRANSPORT_CLOSED'
PING_TIMEOUT PingTimeout 'PING_TIMEOUT'
EXPIRED_TOKEN ExpiredToken 'EXPIRED_TOKEN'

Exemplo

// 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 e SessionErrorCodes: De objeto para enumeração (JS)

Na versão 1.x, CSErrorCodes e SessionErrorCodes eram reexportações de objetos Kotlin com SCREAMING_SNAKE_CASE propriedades getter. Na versão 2.0, elas seguem o padrão de enumeração do TypeScript const objetos com PascalCase chaves, em consonância com todas as outras enums do SDK.

Códigos de erro do CSError

Chave v1.x Chave v2.0 Valor (inalterado)
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 erro de sessão

Chave v1.x Chave v2.0 Valor (inalterado)
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'

Exemplo

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

Funções obsoletas removidas

Funções de registro (todas as plataformas)

Função removida Plataforma
setDefaultLoggingLevel() Todos
setVonageClientLoggingLevel() JS

Defina o nível de registro na inicialização do cliente. Consulte Registros e diagnósticos para obter detalhes e exemplos de configuração.

Registro de token de notificação push (iOS)

Função removida Substituição
registerDevicePushToken() registerDeviceVoipToken()

Tipos fixos (JS)

Essas são correções de bugs, mas podem causar falhas no código que estava contornando os tipos incorretos anteriores:

  • VonageError.type — anteriormente exibia uma string de tipo Kotlin corrompida; agora retorna uma VonageErrorType cadeia de união
  • on('sessionError') motivo do callback — anteriormente retornava uma string com um tipo Kotlin distorcido; agora retorna um SessionErrorReason cadeia de união

Se o seu código estava comparando esses valores com strings não formatadas ou lidando com a saída distorcida, atualize-o para usar os objetos de enumeração:

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

Atualização para o Kotlin 2.0.0

A biblioteca principal foi atualizada do Kotlin 1.9.x para o Kotlin 2.0.0 (com compatibilidade com a API 1.9.21). Se você utiliza o SDK do Android e possui restrições de versão do Kotlin em sua compilação do Gradle, certifique-se de que elas sejam compatíveis com o Kotlin 2.0.0.