Telephony API

Call recording API

Manage your centralized call recordings via an API.

The Sonetel Call recording API allows you to browse, download and delete call recordings made centrally.

How to activate call recording centrally

Activate call recording in your account in the web app.

Please note that you need to verify your account before Call recording can be activated.

 

How the API works

The Call recording API can be used to perform the following tasks;

  • Browse
    You can get a list of all your recordings, and optionally filter them.
  • Get details
    You can get details about the recording, including the phone number of the calling party and the called party, the name of any user involved in the call etc.
  • Download
    You can download the audio file.
  • Delete
    You can delete the recording permanently.

 

Sample scripts for managing Call Recordings

Python

The following sample script with Python can be used to retrieve, delete, and download recordings:

import requests

base_url = "https://public-api.sonetel.com/"

# Function will change the format of date
def date_format_change(date):
    date.replace(":", "%3A")

# Enter Date
created_date_max = "ENTER THE MAX DATE"
date_format_change(created_date_max)

created_date_min = "ENTER THE MIN DATE"
date_format_change(created_date_min)

#  API Access token
access_token = "ENTER_ACCESS_TOKEN"

#  Sonetel account ID
acc_id =  "ENTER_ACCOUNT_ID"

#account information  
headers = {"Authorization": "Bearer {}".format(access_token),
            'Content-Type': 'application/json'
            }
            
#########################Choices for user######################

#     type 1 to View recording
#     type 2 to Download recording
#     type 3 to Delete recording  

choice = 1; # Download Recording           

########################retrive all call recordings##################

def retrive_call_recordings():
    global response_all_recording
    response_all_recording= requests.request("GET", "{}call-recording?account_id={}&created_date_min={}&created_date_max={}&type=voice_call&fields=voice_call_details".format(base_url,acc_id,created_date_min,created_date_max), headers=headers).json()
    return response_all_recording
if(choice==1):
    if(retrive_call_recordings()):
        print(response_all_recording["response"])

########################download call recordings####################

def download_call_recordings():
    global response_download_recording
    response_download_recording = requests.request("GET", "{}call-recording/{}?fields=file_access_details".format(base_url, call_recording_id), headers=headers).json()
    return response_download_recording
if(choice==2):    
    #user have to enter call_recording_id
    call_recording_id = "ENTER CALL_RECORDING_ID"
    if(download_call_recordings()):
        print(response_download_recording["response"]["file"]["file_access_details"]["url"])

############################delete recording#############################

def delete_recording():
    global response_delete_recording
    response_delete_recording = requests.request("DELETE", "{}call-recording/{}".format(base_url, del_rec_id), headers=headers).json()
    if response_delete_recording['status'] == "success":
         return True
    else:
         return False  
if(choice==3):  
    # calling so user can see their call rec
    retrive_call_recordings()
    del_rec_id = "ENTER CALL_RECORDING_ID" 
    if(delete_recording()):
            print("Recording is successfully DELETED")

 

NodeJS

The following sample script with NodeJS can be used to retrieve recordings:

import http from "https";

const get_recordings = ({accessToken, fields, startDate, endDate}) => {

    const host = process.env.SonetelAPIName ?? "public-api.sonetel.com";

    let url = `/call-recording/`;
    let query = [];

    if (!accessToken || !accessToken instanceof String) {
        throw Error("accessToken is required and must be passed as a String");
    }

    const parsedToken = JSON.parse(
        Buffer.from(accessToken.split(".")[1], "base64").toString()
    );
    const accountId = parsedToken.acc_id;
    query.push(`account_id=${accountId}`);

    if (startDate && endDate) {
        // If the recording ID is specified, then fetch that particular recording.
        query.push(`created_date_min=${startDate}`);
        query.push(`created_date_max=${endDate}`);
    }

    if (fields && fields instanceof Array){
        query.push(`fields=${fields.join()}`);
    }

    // Final URL
    url += `?${query.join('&')}`;

    const options = {
        hostname: host,
        path: url,
        method: "GET",
        headers: {
            "Content-Type": "application/json",
            Authorization: `Bearer ${accessToken}`,
            Accept: "application/json",
        },
    };

    const req = http.request(options, (res) => {
        const { statusCode } = res;

        if (statusCode !== 200) {
            throw new Error(`Request failed. Status code ${statusCode}`);
        }
        res.setEncoding("utf-8");
        let rawData = "";
        res.on("data", (chunk) => (rawData += chunk));
        res.on("end", () => {
            try {
                const parsedData = JSON.parse(rawData);
                console.log(parsedData);
            } catch (e) {
                console.error(e.message);
            }
        });
    });

    req.on("error", (e) => {
        throw new Error(`Request failed. ${e.message}`);
    });

    req.end();
};

export { get_recordings };

 

Sample codes for deleting and downloading recordings can be found here.