Prior to starting the call session, it is necessary to have a call token. A call token can be generated using the generateToken method of CometChatCalls class.
The unique random session ID. In case you are using default call then session ID is available in the Call object.
authToken
The use auth token is logged in user auth tooken which you can get by calling CometChat Chat SDK method CometChat.getLoggedinUser()
Error Code
Error Message
INVALID_ARGUMENT_EXCEPTION
If you pass invalid param to a function or you don’t pass the required params. example: Authtoken and session are required, Invalid callToken passed, please verify.
On success of generateToken method you will get the response object containing call token with key named token.
The most important class that will be used in the implementation is the CallSettings class. This class allows you to set the various parameters for the call/conference. In order to set the various parameters of the CallSettings class, you need to use the CallSettingsBuilder class. Below are the various options available with the CallSettings class.The mandatory parameters that are required to be present for any call/conference to work are:
callToken: The unique token for the call/conference session.
callSettings: The object of CallSettings class.
These parameters are to be passed as props to CometChatCalls.Component .
Listeners can be added in two ways the first one is to use .setCallEventListener(listeners : OngoingCallListener) method in CallSettingsBuilder or PresenterSettingsBuilder class. The second way is to use CometChatCalls.addCallEventListener(name: string, callListener: OngoingCallListener) by this you can add multiple listeners and remove the specific listener by their name CometChatCalls.removeCallEventListener(name: string)
You only need to call the end call method of the chat SDK for default calling flows. Direct calling flows do not require it.
To end a call in the default call flow, you must call the CometChat.endCall() method, which belongs to the CometChat Chat SDK, and the CometChatCalls.endSession() method, which belongs to the CometChat Calls SDK.The user who pressed the end call button will call the CometChat.endCall() method, and the another user how was on call will call the two methods which is CometChat.clearActiveCall() and CometChatCalls.endSession() methods to release the calling resources
The CallSettings class is the most important class when it comes to the implementation of the Calling feature. This is the class that allows you to customise the overall calling experience. The properties for the call/conference can be set using the CallSettingsBuilder class. This will eventually give you an object of the CallSettings class which you can pass to the startCall() method to start the call.The options available for customization of calls are:
Setting
Description
enableDefaultLayout(defaultLayout: boolean)
If set to true enables the default layout for handling the call operations. If set to false it hides the button layout and just displays the Call View. Default value = true
showEndCallButton(showEndCallButton: boolean)
If set to true it displays the EndCallButton in Button Layout. if set to false it hides the EndCallButton in Button Layout. Default value = true
If set to true it displays the SwitchCameraButton in Button Layout. if set to false it hides the SwitchCameraButton in Button Layout. Default value = true
showAudioModeButton(showAudioModeButton: boolean)
If set to true it displays the AudioModeButton in Button Layout. if set to false it hides the AudioModeButton in Button Layout. Default value = true
setIsAudioOnlyCall(audioOnly: boolean)
If set to true, the call will be strictly an audio call. If set to false, the call will be an audio-video call. Default value = false
setMode(mode: string)
CometChat provides 3 options for the calling UI. 1. CometChat.CALL_MODE.DEFAULT 2. CometChat.CALL_MODE.SPOTLIGHT 3. CometChat.CALL_MODE.SINGLE Default value = CometChat.CALL_MODE.DEFAULT
startWithAudioMuted(audioMuted: boolean)
This ensures the call is started with the audio muted if set to true. Default value = false
startWithVideoMuted(videoMuted: boolean)
This ensures the call is started with the video paused if set to true. Default value = false
setDefaultAudioMode(audioMode: string)
This method can be used if you wish to start the call with a specific audio mode. The available options are 1. CometChat.AUDIO_MODE.SPEAKER = “SPEAKER” 2. CometChat.AUDIO_MODE.EARPIECE = “EARPIECE” 3. CometChat.AUDIO_MODE.BLUETOOTH = “BLUETOOTH” 4. CometChat.AUDIO_MODE.HEADPHONES = “HEADPHONES”
showSwitchToVideoCallButton(switchCall: boolean)
This method shows/hides the switch to video call button. If set to true it will display the switch to video call button. If set to false it will hide the switch to video call button. Default value = true
setAvatarMode(avatarMode: string)
This method sets the mode of avatar. The avatar mode can be circle, square or fullscreen. Default value = circle
This method can be used to enable/disable video tile click functionality in Spotlight mode. Default value = true
enableVideoTileDrag(enableVideoTileDrag: boolean)
This method can be used to enable/disable video tile drag functionality in Spotlight mode. Default value = true
setIdleTimeoutPeriod(idleTimeoutPeriod: number) Available since v4.2.0
Sets the idle timeout duration for the call. If the user remains the only participant for the specified time, a prompt will appear 60 seconds before the call is automatically ended. Default value = 180 seconds
In case you wish to achieve a completely customised UI for the Calling experience, you can do so by embedding default android buttons to the screen as per your requirement and then use the below methods to achieve different functionalities for the embedded buttons.For the use case where you wish to align your own custom buttons and not use the default layout provided by the SDK you can embed the buttons in your layout and use the below methods to perform the corresponding operations:
This method will return the list of available audio modes. Based on the list received, you can set the audio mode for the ongoing call using the setAudioMode() method.