- Fixed the bug that local stream become disabled when a user hold other direct call.
- Added start_ts and end_ts to the DirectCallLogListQueryParams.
- Fixed the crash of the previous version
- Updated the WebRTC version
- Improved WebRTC internal logging
- Added
webhook
property inDialParams
.
- Added
DirectCallEndResult.NOT_CONNECTED
. When a direct call is ended before connecting, the call will have an end result ofDirectCallEndResult.NOT_CONNECTED
.
- Fixed a bug in the local recording that the output file contains a black screen in the bad network sometimes.
- Fixed a bug in the local recording that the previous larger frame lasts when the resolution has been lowered in the bad network.
- Fixed an issue where call will not be properly reconnected after network connection has been lost.
- Fixed an issue where CSP(Content Security Policy) error occurs if
script-src
isself
.
- Fix an issue where Direct Call's Connection Quality would report
UNAVAILABLE
for a few seconds after connecting the call.
- Added support for Direct Call quality monitoring in Sendbird Dashboard.
- Added
DirectCall.onCalleeDialReceived
event listener to notify the caller when the callee has received the call. This listener will be called when the callee has received theSendBirdCallListener.onRinging
event.
- Fixed the type error in the declaration file.
- Added the missing export of
RoomState
enum. - Fixed the type error in the declaration file.
- Changed the return type of
RoomListQuery.next()
,RoomListQuery.prev()
to the actualRoom
instance, rather than the data object.
- Improved connection quality listener in
DirectCall
.
- Added a feature to detect connection qualities in ongoing
DirectCall
.- Added
ConnectionQualityState
. - Added
ConnectionQualityMonitoringMode
. - Added
ConnectionMetrics
. - Added
setConnectionQualityListener(mode: ConnectionQualityMonitoringMode, listener: (metrics: ConnectionMetrics) => void): void
,removeConnectionQualityListener(): void
inDirectCall
;
- Added
- Fixed the bug that User.metaData is always undefined.
- Fixed
self is not defined
error in node environment.
- Added a feature to kick other participants in a room with the same user id as the current user.
- Added
kickSiblings
inEnterParams
.
- Added
- Fixed an error in
SendbirdCall.connectWebSocket()
. - Removed the unexpected console logs.
- Added room event listeners to detect local user’s connection with the server.
- Added
localParticipantDisconnected
,localParticipantReconnected
inRoomEventMap
.
- Added
- Improved the reconnection logic for short-term disconnection in
Room
.
- Fixed the bug that the client with only one of audio/video permission can't use the allowed device in video call/room.
- Now, the client can use the microphone in video call/room regardless of camera permission.
- Likewise, the client can use the camera in video call/room regardless of microphone permission.
- Improved stability.
- Added a feature to invite users to enter a room.
- Added
Room.sendInvitation(invitee: string): Promise<RoomInvitation>
. - Added
RoomInvitation
class to manage invitation. - Added
RoomInvitation.accept(): Promise<void>
,RoomInvitation.decline(): Promise<void>
,RoomInvitation.cancel(): Promise<void>
. - Added
invitationAccepted
,invitationDeclined
,invitationCanceled
inRoomEventMap
.
- Added
- Added a new interface to delete a room.
- Added
Room.delete()
.
- Added
- Bug fix
- Fixed the unexpected error when joining the room that the user exited before.
- Bug fix
- Fixed the bug that group call breaks in chrome v100.
- Bug fix
- Fixed the bug that
selectAudioOutputDevice(mediaDeviceInfo: MediaDeviceInfo): void
doens't work in group call.
- Fixed the bug that
For 1.9.0, a feature to delete a room in Group call is released.
- Added
deleted
inRoomEventMap
which is invoked when the room has been deleted by the Platform API.
- Bug fix
- Fixed the unexpected error when joining room in which there are more than two participants.
- Bug fix
- Fixed the bug that the permission dosen't be revoked after
Room.exit()
.
- Fixed the bug that the permission dosen't be revoked after
- Added missing type declarations.
For 1.8.0, a new feature is released for both Group call and Direct call features respectively.
For the Group call feature, you can now add and manage custom items to store additional information for a room.
- Added custom items feature in Group Call
- Added
customItems
inRoom
. - Added
customItems
inRoomParams
. - Added
updateCustomItems(customItems: CustomItems): Promise<CustomItemsResult>
anddeleteCustomItems(customItemKeys: string[]): Promise<CustomItemsResult>
inRoom
. - Added
customItemsUpdated
andcustomItemsDeleted
inRoomEventMap
.
- Added
For the Direct call feature, you can now hold and resume calls which allows you to accept an incoming call or switch between calls.
- Added hold and resume feature in Direct Call
- Added
hold(): Promise<void>
andunhold(force: boolean): Promise<void>
inDirectCall
. - Added
isOnHold
inDirectCall
. - Added
holdActiveCall
inDialParams
andAcceptParams
. - Added
onUserHoldStatusChanged
inDirectCall
.
- Added
- Added
getOngoingCalls()
inSendBirdCall
to retrieve a list of ongoing Direct Calls in the Calls SDK. - Added missing return type of push token registration APIs.
- Improved stability.
- Added push token registration APIs
- Below methods are added in
SendBirdCall
registerPushToken(pushToken: string, tokenType: TokenType): Promise<void>
unregisterPushToken(pushToken: string, tokenType: TokenType): Promise<void>
unregisterAllPushTokens(tokenType: TokenType): Promise<void>
- Below enum is added in
SendBirdCall
TokenType
- Below methods are added in
- Bug fix
- Fixed the bug that
audioEnabled
andvideoEnabled
inDirectCallOption
doesn't work.
- Fixed the bug that
- Added capability to query rooms.
- Below interfaces are added in
SendBirdCall
RoomListQuery
RoomListQueryParams
- Below methods are added in
SendBirdCall
createRoomListQuery(params: RoomListQueryParams): RoomListQuery
- Below interfaces are added in
- Added support for customized host URL
- Now, you can customize API/WebSocket host URL when
init()
. - Below method is changed in
SendBirdCall
init(appId: string, apiHost?: string, websocketHost?: string): void
- Now, you can customize API/WebSocket host URL when
- Improved security.
- Improved stability.
- Bug fix
- Fixed the error and undefined behavior in recording feature.
- Now,
DirectCall.startRecording()
produces.webm
file in Chrome and Firefox,.mp4
file in Safari.
- Now,
- Fixed the noise when calling
addDirectCallSound()
. - Fixed the bug that sometimes the error message of
authenticate()
is blank.
- Fixed the error and undefined behavior in recording feature.
- Added support for group call.
- Below class is added in
SendBirdCall
Room
- Below methods are added in
SendBirdCall
createRoom(params: RoomParams): Promise<Room>
getCachedRoomById(roomId: string): Room
fetchRoomById(roomId: string): Promise<Room>
- Below interfaces are added in
SendBirdCall
RoomParams
EnterParams
Participant
LocalParticipant
RemoteParticipant
- Below enums are added in
SendBirdCall
RoomType
ParticipantState
- Below class is added in
- Bug fix
- Fixed an unexpected exception.
- Improved stability.
- Added suuport for screen share in
DirectCall
.- Below methods are added in
DirectCall
:startScreenShare(): Promise<void>
stopScreenShare(): void
- Below property is added in
DirectCall
:readonly isLocalScreenShareEnabled: boolean
- Below methods are added in
Sendbird Calls SDK version 1.6.0 supports the early access program for group calling. New concepts introduced in this version center around rooms and participants.
- Added group call feature.
- Below methods are added in
SendBirdCall
createRoom(): Promise<Room>
getCachedRoomById(roomId: string): Room
fetchRoomById(roomId: string): Promise<Room>
- Below class is added in
SendBirdCall
Room
- Below interfaces are added in
SendBirdCall
EnterParams
Participant
LocalParticipant
RemoteParticipant
- Below enum is added in
SendBirdCall
ParticipantState
- Below methods are added in
- Bug fix
- Fixed doubling bug in recording.
- Bug fix
- Fixed an unexpected exception.
- Bug fix
- Fixed an unexpected exception.
- Added support for integration with Sendbird Chat
- Added
sendBirdChatOptions
toDialParams
- Added
- Added support for
Call summary
on the dashboard. - Improved backend scalability
- Enhanced security for compliance
- Improved stability
- Added remote recording progress event.
- Below properties are added in
DirectCall
:onRemoteRecordingStatusChanged: ((call: DirectCall) => void) | null
localRecordingStatus: RecordingStatus
remoteRecordingStatus: RecordingStatus
- Below enum is added in
SendBirdCall
:RecordingStatus
- Below properties are added in
- Improved stability
- Added snapshot feature
- Below methods are added in
DirectCall
captureLocalVideoView(callback?: CaptureVideoViewHandler): Promise<CaptureVideoViewResult>
captureRemoteVideoView(callback?: CaptureVideoViewHandler): Promise<CaptureVideoViewResult>
- Below methods are added in
- Added recording feature
- Below methods are added in
SendBirdCall
addRecordingListener(id: string, listener: SendBirdCallRecordingListener): void
removeRecordingListener(id: string): void
removeAllRecordingListeners(): void
- Below methods are added in
DirectCall
startRecording(options: DirectCallRecordOption): string
stopRecording(recordingId: string): boolean
- Below constructor is added in
SendBirdCall
DirectCallRecordOption
- Below methods are added in
- Added sound effect feature
- Below property is added in
SendBirdCall
SoundType
- Below methods are added in
SendBirdCall
addDirectCallSound(type: SoundType, url: string): Promise<boolean>
removeDirectCallSound(type: SoundType): boolean
- Below property is added in
- Improved validation of
customItems
interfaces. Only string keys/values are available forcustomItems
orcustomItemsKeys
arguments of,updateCustomItems(callId: string, customItems: CustomItems, callback?: CustomItemsHandler): Promise<CustomItemsResult>
inSendBirdCall
deleteCustomItems(callId: string, customItemKeys: string[], callback?: CustomItemsHandler): Promise<CustomItemsResult>
inSendBirdCall
updateCustomItems(customItems: CustomItems, callback?: CustomItemsHandler): Promise<CustomItemsResult>
inDirectCall
deleteCustomItems(customItemsKeys: string[], callback?: CustomItemsHandler): Promise<CustomItemsResult>
inDirectCall
- Enhanced prerequisite check in
init()
. - Improved stability.
- Bug fix
- Fixed the connection problem with Android SDK.
- Bug fix
- Fixed the unexpected exceptions.
- Improved stability
- Replaced MediaDeviceInfo with InputDeviceInfo in following
SendBirdCall
methodsgetCurrentAudioInputDevice(): InputDeviceInfo
getAvailableAudioInputDevices(): InputDeviceInfo[]
selectAudioInputDevice(mediaDeviceInfo: InputDeviceInfo): void
getCurrentVideoInputDevice(): InputDeviceInfo
getAvailableVideoInputDevices(): InputDeviceInfo[]
selectVideoInputDevice(mediaDeviceInfo: InputDeviceInfo): void
- Added missing type information
SendbirdCall
'suseMedia()
method can returnundefined
DirectCall
'ssetLocalMediaView(mediaView: HTMLMediaElement)
DirectCall
'ssetRemoteMediaView(mediaView: HTMLMediaElement)
- Added webhook support
- Add
handleWebhookData(data: WebhookData): void
to SendBirdCall - Add
WebhookData
interface
- Add
- Buf fix
- Fixed the unexpected exceptions in safari.
- Added support for Peer-to-peer call.
- The Peer-to-peer option can be configured on the dashboard.
- Added getting ongoing call count and ongoing status of
DirectCall
.- Added
getOngoingCallCount(): number
toSendBirdCall
. - Added
readonly isOngoing: boolean
toDirectCall
.
- Added
- Added
setCallConnectionTimeout(timeout: number): void
toSendBirdCall
.- The call connection timer starts when the callee accepts the call. The timer will end the call after the specified timeout interval.
- Improved stability.
- Bug fix
- Fixed typo in
d.ts
. - Fixed import error in Node environment.
- Fixed typo in
- Improved stability.
- Improved stability.
- Bug fix
- Fixed the bug that some console logging ignored
LoggerLevel
.
- Fixed the bug that some console logging ignored
- Below property is added in
SendBirdCall
ErrorCode
- Below keys are added in
SendBirdCall.LoggerLevel
WARNING
INFO
- Below property is added in
DirectCall
readonly callLog
- Below property is added in
DirectCallLog
readonly isFromServer
- Below methods are added in
SendBirdCall
setRingingTimeout(timeout: int): void
- Optimized video call frame rate.
- Improved stability.
- Bug fix
- Fixed the bug that
onRemoteVideoSettingsChanged
doesn't fire.
- Fixed the bug that
- The default value of
callOption.videoEnabled
is changed toture
.
-
README has been updated. Refer to readme to learn how to configure media devices.
-
Interfaces for media devices are added / changed.
- Below methods are added in
SendBirdCall
getCurrentVideoInputDevice(): MediaDeviceInfo
getAvailableVideoInputDevices(): MediaDeviceInfo[]
selectVideoInputDevice(mediaDeviceInfo: MediaDeviceInfo): void
updateMediaDevices(constraints: { audio: boolean; video: boolean }): void
useMedia(constraints: { audio: boolean; video: boolean }): MediaAccess
- Below event listener is added in
SendBirdCallListener
onVideoInputDeviceChanged: ((currentVideoInputDevice: MediaDeviceInfo, availableVideoInputDevices: MediaDeviceInfo[]) => void) | null
- Below methods are changed in
SendBirdCall
getCurrentVideoInputDevice(): MediaDeviceInfo
getAvailableAudioInputDevices()
is now synchronousselectAudioInputDevice(mediaDeviceInfo: MediaDeviceInfo)
is now synchronousgetAvailableAudioOutputDevices()
is now synchronousselectAudioOutputDevice(mediaDeviceInfo: MediaDeviceInfo)
is now synchronous
- Below methods are added in
-
Deprecated methods are removed
- In
SendBirdCall
,dial(userId: string, isVideoCall: boolean, callOption: DirectCallOption, callback?: DialHandler): DirectCall
is removed. Usedial(params: DialParams, callback?: DialHandler): DirectCall
instead.
- In
DirectCall
,onRemoteAudioEnabled
event listener is removed. UseonRemoteAudioSettingsChanged
instead.accept(callOption: DirectCallOption)
is removed. Useaccept(params: AcceptParams): void
instead.mute()
is removed. UsemuteMicrophone()
instead.unmute()
is removed. UseunmuteMicrophone()
instead.
- In
DirectCallOption
localVideoView
is removed. UselocalMediaView
instead.remoteVideoView
is removed. UseremoteMediaView
instead.
- In
- Internal improvement
- Bug fix
- Fixed error when user accepted call without specifying localMediaView
- Below properties are added in
DirectCall
readonly callId: string
readonly isEnded: boolean
-
Interface for video call has been implemented
-
Below properties are added in
DirectCall
readonly isLocalVideoEnabled: boolean
readonly isRemoteVideoEnabled: boolean
readonly localMediaView: HTMLMediaElement
readonly remoteMediaView: HTMLMediaElement
-
Below methods are added in
DirectCall
setLocalMediaView(): Promise<void>
setRemoteMediaView(): Promise<void>
stopVideo(): void
startVideo(): void
-
Below implementable event listeners are added in
DirectCall
onRemoteVideoSettingsChanged: ((call: DirectCall) => void) | null
-
Below property is added in
DirectCallOption
videoEnabled?: boolean
-
-
Wrong type definitions have been fixed
- Type definitions for below methods in class
SendBirdCall
has been fixed.getAvailableAudioInputDevices(): MediaDeviceInfo[]
->getAvailableAudioInputDevices(): Promise<MediaDeviceInfo[]>
selectAudioInputDevice(mediaDeviceInfo: MediaDeviceInfo): void
->selectAudioInputDevice(mediaDeviceInfo: MediaDeviceInfo): Promise<void>
getAvailableAudioOutputDevices(): MediaDeviceInfo[]
->getAvailableAudioOutputDevices(): Promise<MediaDeviceInfo[]>
selectAudioOutputDevice(mediaDeviceInfo: MediaDeviceInfo): void
->selectAudioOutputDevice(mediaDeviceInfo: MediaDeviceInfo): Promise<void>
- Type definitions for below methods in class
-
Selecting an audio input / output device is implemented.
- Below methods are added in
SendBirdCall
getCurrentAudioInputDevice(): MediaDeviceInfo
getAvailableAudioInputDevices(): MediaDeviceInfo[]
selectAudioInputDevice(mediaDeviceInfo: MediaDeviceInfo): void
getCurrentAudioOutputDevice(): MediaDeviceInfo
getAvailableAudioOutputDevices(): MediaDeviceInfo[]
selectAudioOutputDevice(mediaDeviceInfo: MediaDeviceInfo): void
- Below implementable event listeners are added in
SendBirdCallListener
onAudioInputDeviceChanged: ((currentAudioInputDevice: MediaDeviceInfo, availableAudioInputDevices: MediaDeviceInfo[]) => void) | null
onAudioOutputDeviceChanged: ((currentAudioOutputDevice: MediaDeviceInfo, availableAudioOutputDevices: MediaDeviceInfo[]) => void) | null
- Below methods are added in
-
Setting / retrieving custom items is implemented.
- Below methods are added in
SendBirdCall
updateCustomItems(callId: string, customItems: CustomItems, callback?: CustomItemsHandler): Promise<CustomItemsResult>
deleteCustomItems(callId: string, customItemKeys: string[], callback?: CustomItemsHandler): Promise<CustomItemsResult>
deleteAllCustomItems(callId: string, callback?: CustomItemsHandler): Promise<CustomItemsResult>
- Below property is added in
DirectCall
readonly customItems: CustomItems
- Below methods are added in
DirectCall
updateCustomItems(customItems: CustomItems, callback?: CustomItemsHandler): Promise<CustomItemsResult>
deleteCustomItems(customItemsKeys: string[], callback?: CustomItemsHandler): Promise<CustomItemsResult>
deleteAllCustomItems(callback?: CustomItemsHandler): Promise<CustomItemsResult>
- Below implementable event listeners are added in
DirectCall
onCustomItemsUpdated: ((call: DirectCall, updatedKeys: string[]) => void) | null
onCustomItemsDeleted: ((call: DirectCall, deletedKeys: string[]) => void) | null
- Below property is added in
DirectCallLog
readonly customItems: CustomItems
- Below methods are added in
-
Reconnection is implemented in
DirectCall
- Below implementable event listeners are added in
DirectCall
onReconnected: ((call: DirectCall) => void) | null
onReconnecting: ((call: DirectCall) => void) | null
- Below implementable event listeners are added in
-
Signature of the
SendBirdCall.dial()
has been changed.dial(userId: string, isVideoCall: boolean, callOption: DirectCallOption, callback?: DialHandler): DirectCall
is now deprecateddial(params: DialParams, callback?: DialHandler): DirectCall
is now recommended.
-
Signature of the
DirectCall.accept()
has been changed.accept(callOption: DirectCallOption): void
is now deprecatedaccept(params: AcceptParams): void
is now recommended.
- Added Typescript Definition.
- Polished error description.
- Properties / Method deprecated. Deprecated interfaces might be removed in future releases.
DirectCall.onRemoteAudioEnabled
is deprecated. UseonRemoteAudioSettingsChanged
Instead.DirectCall.mute
is deprecated. UsemuteMicrophone
Instead.DirectCall.unmute
is deprecated. UseunmuteMicrophone
Instead.
- Min / max of the
limit
field forSendBirdCall.createDirectCallLogListQuery
parameter has been adjusted to 10 / 100 each. DirectCall.onRemoteAudioSettingsChanged / onRemoteAudioEnabled
is not fired anymore when actual setting is not changed.
- Call is automatically disconnected after certain time (currently 1 min) when one peer leaves call session without explicitly hanging up.
- Removed redundant deprecation warning in
callOption
.
- Changed some parameters names of
callOption
.callOption.localVideoView
andcallOption.remoteVideoView
is now deprecated.localVideoView
->localMediaView
remoteVideoView
->remoteMediaView
- Fixed call.getDuration()
- Fixed connection for FireFox, exported LoggerLevel enum
- Fixed logger, polyfill
- Removed core-js dependency