Skip to main content
Version: v5

Call Buttons

Overview

The Call Button is a Component provides users with the ability to make calls, access call-related functionalities, and control call settings. Clicking this button typically triggers the call to be placed to the desired recipient.

Image

Usage

Integration

import { CometChat } from "@cometchat/chat-sdk-javascript";
import { CometChatCallButtons } from "@cometchat/chat-uikit-react";
import React from "react";

const CallButtonDemo = () => {
const [chatUser, setChatUser] = React.useState<CometChat.User>();
React.useEffect(() => {
CometChat.getUser("uid").then((user) => {
setChatUser(user);
});
}, []);
return <CometChatCallButtons user={chatUser} />;
};

export default CallButtonDemo;

Actions

Actions dictate how a component functions. They are divided into two types: Predefined and User-defined. You can override either type, allowing you to tailor the behavior of the component to fit your specific needs.

1. onError

This action doesn't change the behavior of the component but rather listens for any errors that occur in the Call Button component.

import { CometChat } from "@cometchat/chat-sdk-javascript";
import { CometChatCallButtons } from "@cometchat/chat-uikit-react";
import React from "react";

const CallButtonDemo = () => {
const [chatUser, setChatUser] = React.useState<CometChat.User>();
React.useEffect(() => {
CometChat.getUser("uid").then((user) => {
setChatUser(user);
});
}, []);

const handleOnError = (error: CometChat.CometChatException) => {
console.log("Your Custom on error actions", error);
};

return <CometChatCallButtons user={chatUser} onError={handleOnError} />;
};

export default CallButtonDemo;

Filters

You can set CallSettingsBuilder in the Call Buttons Component to customise the calling experience. To know more about the filters available please refer to CallSettingsBuilder.

import { CometChat } from "@cometchat/chat-sdk-javascript";
import { CometChatCallButtons } from "@cometchat/chat-uikit-react";
import React from "react";

const CallButtonDemo = () => {
const [chatUser, setChatUser] = React.useState<CometChat.User>();

React.useEffect(() => {
CometChat.getUser("uid").then((user) => {
setChatUser(user);
});
}, []);

const getCallSettingsBuilder = (call: CometChat.Call) => {
return new CometChatCalls.CallSettingsBuilder()
.setIsAudioOnlyCall(
call?.getType() === CometChatUIKitConstants.MessageTypes.audio
? true
: false
)
.build();
};

return (
<CometChatCallButtons
user={chatUser}
callSettingsBuilder={getCallSettingsBuilder}
/>
);
};

export default CallButtonDemo;

Events

Events are emitted by a Component. By using event you can extend existing functionality. Being global events, they can be applied in Multiple Locations and are capable of being Added or Removed.

The list of events emitted by the Call Buttons component is as follows.

EventDescription
ccCallRejectedThis event is triggered when the initiated call is rejected by the receiver.
ccCallEndedThis event is triggered when the initiated call successfully ends.
ccOutgoingCallThis event is triggered when the user initiates a voice/video call.
ccMessageSentThis event is triggered when the sent message is in transit and also when it is received by the receiver.

const ccCallRejected = CometChatCallEvents.ccCallRejected.subscribe(
(call: CometChat.Call) => {
//Your Code
}
);

const ccCallEnded = CometChatCallEvents.ccCallEnded.subscribe(
(call: CometChat.Call) => {
//Your Code
}
);

const ccOutgoingCall = CometChatCallEvents.ccOutgoingCall.subscribe(
(call: CometChat.Call) => {
//Your Code
}
);

const ccMessageSent = CometChatMessageEvents.ccMessageSent.subscribe(() => {
//Your Code
});

ccCallRejected?.unsubscribe();

ccCallEnded?.unsubscribe();

ccOutgoingCall?.unsubscribe();

ccMessageSent?.unsubscribe();

Customization

To fit your app's design requirements, you can customize the appearance of the Call Buttons component. We provide exposed methods that allow you to modify the experience and behavior according to your specific needs.

Style

Using CSS you can customize the look and feel of the component in your app like the color, size, shape, and fonts.

Image

Example

import { CometChat } from "@cometchat/chat-sdk-javascript";
import { CometChatCallButtons } from "@cometchat/chat-uikit-react";
import React from "react";

const CallButtonDemo = () => {
const [chatUser, setChatUser] = React.useState<CometChat.User>();
React.useEffect(() => {
CometChat.getUser("uid").then((user) => {
setChatUser(user);
});
}, []);

return <CometChatCallButtons user={chatUser} />;
};

export default CallButtonDemo;

Configurations

Configurations offer the ability to customize the properties of each component within a Composite Component. CallButtons component renders CometChatOutgoingCall component.

Outgoing Call

You can customize the properties of the CometChatOutgoingCall component by making use of the OutgoingCallConfiguration. Below properties are available in OutgoingCallConfiguration.

PropertyDescriptionCode
UserSets the user object for Call Buttonsuser={chatUser}
GroupUsed to set the group object for Call Buttonsgroup={chatGroup}
Custom SoundSpecifies a custom sound to play for outgoing calls.customSoundForCalls='Your Custom Sound For Calls'
Disable SoundDisables the sound of outgoing calls.disableSoundForCalls={false}
On ErrorCallback function triggered when an error occurs in the call buttons component.onError={(error: CometChat.CometChatException)=>{ console.log('error', error) }}
Cancel Call ClickedCallback function triggered when the cancel button is clicked.onCloseClicked={()=>{console.log("Outgoing call canceled")}}
Title ViewThis prop renders the custom title view for the outgoing call.titleView={<>Custom Title View</>}
Sub Title ViewThis prop renders the custom sub title view for the outgoing call.subtitleView={<>Custom Sub Title View</>}
Avatar ViewThis prop renders the custom avatar view for the outgoing call.avatarView={<>Custom Avatar View</>}
Cancel Button ViewThis prop renders the custom cancel-call button view for the outgoing call.cancelButtonView={<>Custom Cancel Button View</>}
Hide Video Call ButtonUsed to hide the video call button.hideVideoCallButton={true}
Hide Voice Call ButtonUsed to hide the voice call button.hideVoiceCallButton={true}

You can refer to CometChatOutgoingCall component to know more about each of the above properties.