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 umaVonageErrorTypecadeia de uniãoon('sessionError')motivo do callback — anteriormente retornava uma string com um tipo Kotlin distorcido; agora retorna umSessionErrorReasoncadeia 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.