> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-feature-react-native-sdk-quotedmessage-a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Recording(Beta)

This section will guide you to implement call recording feature for the voice and video calls.

## Implementation

Once you have decided to implement [Direct Calling](/sdk/ionic/direct-call) followed the steps to implement them. Just few additional listeners and methods will help you quickly implement call recording in your app.

You need to make changes in the `CometChatCalls.startSession()` method and add the required listeners for recording. Please make sure your callSettings is configured accordingly for [Direct Calling](/sdk/ionic/direct-call).

A basic example of how to make changes to implement recording for a direct call/ a default call:

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    import { CometChatCalls } from '@cometchat/calls-sdk-ionic';

    const audioOnly = false;
    const defaultLayout = true;
    const showRecordingButton = true;

    const callListener = new CometChatCalls.OngoingCallListener({
      onRecordingStarted: (event) => {
        console.log("Call recording started:", event);
      },
      onRecordingStopped: (event) => {
        console.log("Call recording stopped:", event);
      }
    });

    const callSettings = new CometChatCalls.CallSettingsBuilder()
      .enableDefaultLayout(defaultLayout)
      .setIsAudioOnlyCall(audioOnly)
      .showRecordingButton(showRecordingButton)
      .setCallEventListener(callListener)
      .build();

    // Start the call using `startSession` method of `CometChatCalls`
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript theme={null}
    import { CometChatCalls } from '@cometchat/calls-sdk-ionic';
    import { CallSettings } from '@cometchat/calls-sdk-ionic/dist/models/CallSettings';
    import { OngoingCallListener } from '@cometchat/calls-sdk-ionic/dist/models/Listner';

    const audioOnly = false;
    const defaultLayout = true;
    const showRecordingButton = true;

    const callListener: OngoingCallListener = new CometChatCalls.OngoingCallListener({
      onRecordingStarted: (event) => {
        console.log("Call recording started:", event);
      },
      onRecordingStopped: (event) => {
        console.log("Call recording stopped:", event);
      }
    });

    const callSettings: CallSettings = new CometChatCalls.CallSettingsBuilder()
      .enableDefaultLayout(defaultLayout)
      .setIsAudioOnlyCall(audioOnly)
      .showRecordingButton(showRecordingButton)
      .setCallEventListener(callListener)
      .build();

    // Start the call using `startSession` method of `CometChatCalls`
    ```
  </Tab>
</Tabs>

## Settings for call recording

The `CallSettings` class 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 `startSession()` method to start the call.

The options available for recording of calls are:

| Setting                                                         | Description                                                                                                                                                                          |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `showRecordingButton(showRecordingButton: boolean)`             | If set to `true` it displays the Recording button in the button Layout. If set to `false` it hides the Recording button in the button Layout. **Default value = false**              |
| `startRecordingOnCallStart(startRecordingOnCallStart: boolean)` | If set to `true` call recording will start as soon as the call is started. If set to `false` call recording will not start as soon as the call is started. **Default value = false** |

## Downloading Recording

Currently, the call recordings are available on the [CometChat Dashboard](https://app.cometchat.com) under the Calls Section. You can refer to the below screenshot.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-feature-react-native-sdk-quotedmessage-a/FOTukDN54hvEwBMP/images/f95175df-1s26s11czkienxtcr5jp0e6cxp4bwbogqlcnd0d75bcg6cd2koxbw5ceisj0ygep-5b58e8c9377ee9bac1626a390525d975.png?fit=max&auto=format&n=FOTukDN54hvEwBMP&q=85&s=ed2deec33e2477c631840f39b4f9e7cb" width="3148" height="2400" data-path="images/f95175df-1s26s11czkienxtcr5jp0e6cxp4bwbogqlcnd0d75bcg6cd2koxbw5ceisj0ygep-5b58e8c9377ee9bac1626a390525d975.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-feature-react-native-sdk-quotedmessage-a/6TXEIAn9Prx7161h/images/9efba7cd-reu41ertm4ukyva9zcpiwioffws49ni9xe2q6olmbozpd4h1gxudydj41dc25dj3-4eb5d3cce059b21d7a1add99427296dd.png?fit=max&auto=format&n=6TXEIAn9Prx7161h&q=85&s=c649f6c5eb61ab634fda5467faf7e816" width="3148" height="2400" data-path="images/9efba7cd-reu41ertm4ukyva9zcpiwioffws49ni9xe2q6olmbozpd4h1gxudydj41dc25dj3-4eb5d3cce059b21d7a1add99427296dd.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-feature-react-native-sdk-quotedmessage-a/195oxTVcmj5zqz-a/images/c36b29a8-bbso1h0thwtp4yp0z8yvomzie7oluzx2vetlll5rabm7z24tgp9d94ndu2r6nygk-aad037f6953c6ba50729c8e00da500ef.png?fit=max&auto=format&n=195oxTVcmj5zqz-a&q=85&s=8a8a0b3e6d203871ddccc657607c795f" width="3148" height="2400" data-path="images/c36b29a8-bbso1h0thwtp4yp0z8yvomzie7oluzx2vetlll5rabm7z24tgp9d94ndu2r6nygk-aad037f6953c6ba50729c8e00da500ef.png" />
</Frame>
