v1.x から v2.0 への移行

このページでは、以下で導入された互換性を破る変更について解説しています。 v2.0.0 (2025年2月7日リリース)。v1.xの最後のリリースは v1.7.2 (2024年8月8日)。

プラットフォームの適用範囲

v2.0.0における互換性破りの変更のほとんどは、 JavaScript SDK のみ。ネイティブ(iOS/Android)の互換性を損なう変更については、明示的に記載されています。

Chat API の非推奨化

Chat API は非推奨となっており、今後のリリースで削除される予定です。チャット関連の互換性を損なう変更(例: ChannelType に改名した。 MemberChannelType, MemberChannelType (パスカルケースのキー、非推奨となったChat関数のシグネチャの削除など)については、ここでは説明していません。Chat APIを使用して新しいApplicationsを構築しないでください。

バージョンの対応付け

v1.x(最新) v2.x(初版)
1.7.2 2.0.0

列挙型のキー名の変更 (JS)

すべての列挙型キーが、v1.x での大文字小文字の表記から PascalCase. その根底にある 価値観 は変更されていません。異なるのは、それらにアクセスするために使用するキーだけです。

通話終了理由

v1.x キー v2.0 キー 値(変更なし)
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

v1.x キー v2.0 キー 値(変更なし)
RINGING Ringing 'RINGING'
ANSWERED Answered 'ANSWERED'
COMPLETED Completed 'COMPLETED'

CallDisconnectReason

v1.x キー v2.0 キー 値(変更なし)
networkChange NetworkChange 'networkChange'

キャンセル理由

v1.x では、キーはすでにパスカルケースになっていました — 変更の必要はありません.

キー 価値
RemoteCancel 'RemoteCancel'
RejectedElsewhere 'RejectedElsewhere'
RemoteTimeout 'RemoteTimeout'
AnsweredElsewhere 'AnsweredElsewhere'

VoiceChannelType

v1.x キー v2.0 キー 値(変更なし)
app App 'app'
phone Phone 'phone'
sip Sip 'sip'
websocket Websocket 'websocket'

VonageErrorType

v1.x キー v2.0 キー 値(変更なし)
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

v1.x キー v2.0 キー 値(変更なし)
TRANSPORT_CLOSED TransportClosed 'TRANSPORT_CLOSED'
PING_TIMEOUT PingTimeout 'PING_TIMEOUT'
EXPIRED_TOKEN ExpiredToken 'EXPIRED_TOKEN'

例

// 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 および SessionErrorCodes:オブジェクトから列挙型への変換 (JS)

v1.x では、 CSErrorCodes そして SessionErrorCodes これらは、Kotlinオブジェクトの再エクスポートであり、 SCREAMING_SNAKE_CASE ゲッタープロパティ。v2.0では、これらはTypeScriptのenumスタイルに準拠しています。 const ~を含むオブジェクト PascalCase キーは、他のすべてのSDK列挙型と一貫性を保っています。

CSErrorCodes

v1.x キー v2.0 キー 値(変更なし)
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'

セッションエラーコード

v1.x キー v2.0 キー 値(変更なし)
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'

例

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

非推奨関数の削除

ロギング機能(全プラットフォーム)

削除された関数 プラットフォーム
setDefaultLoggingLevel() すべて
setVonageClientLoggingLevel() JS

代わりに、クライアントの初期化時にロギングレベルを設定してください。詳しくは ログ記録と診断 設定の詳細や例については、以下をご覧ください。

プッシュ通知トークンの登録(iOS)

削除された関数 交換
registerDevicePushToken() registerDeviceVoipToken()

固定型(JS)

これらはバグ修正ですが、以前の誤った型を回避していたコードが動作しなくなる可能性があります:

  • VonageError.type — 以前は破損したKotlinの型文字列を返していましたが、現在は正しい VonageErrorType ユニオン文字列
  • on('sessionError') コールバックの理由 — 以前は、文字列化されたKotlin型の文字列を公開していましたが、現在は適切な SessionErrorReason ユニオン文字列

もしコードでこれらを生の文字列と比較していたり、文字化けした出力を処理していたりする場合は、列挙型オブジェクトを使用するように更新してください:

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

Kotlin 2.0.0 へのアップグレード

コアライブラリがKotlin 1.9.xからKotlin 2.0.0(Kotlin 1.9.21とのAPI互換性あり)に更新されました。Android SDKを利用しており、GradleビルドにKotlinのバージョン制約が設定されている場合は、それらがKotlin 2.0.0と互換性があることを確認してください。