Storing your own voice recordings

babelforce has a standard data retention policy. Here is an article with more details on our data retention schedule.

We encourage all our customers to keep the data they save, particularly any with personally identifiable information (PII) to the minimum necessary to enable business functions. Nevertheless, babelforce offers the possibility for you to archive your own data by downloading it manually or via API. So even if we remove all data following our retention schedule, you have the possibility to keep the data you want in your systems.

This article will focus on the downloading or retrieval of voice recordings only. There are several methods:

For recordings of inbound calls that go through queues and calls started one at a time using the API (e.g. when an employee uses click-to-call in our babelConnect app or a babelforce click-to-call link in a web app), there are two methods available:

  1. Download individual recordings
  2. Use the API to receive URL with meta data and then download using the URL

For recordings of automated outbound calls started using babelforce predictive or power dialer, you can request to have the recordings available as an archive to download.

Downloading single recordings

Sometimes, you want to keep recordings because there was an escalating issue, or for any other reason. This is no problem. You can download any single recording from the babelforce manager web application.

Call recordings can also be listened to and downloaded in the babelConnect app

We have a full article that explains how recordings can be managed if you follow this link.

Archiving recordings by using the API

If you are required to store call recordings internally, you can automatically and selectively archive this data directly from the babelforce platform. We offer a standard and secure JSON-based API resource to manage this. Here, we'll give a brief example showing how to access this, and what metadata is available:

The API request below uses filter parameters to identify the data we are looking for: recordings which have been successfully saved (filters.state=stored), and which were made in a certain time period (filters.time.end=X and filters.time.start=Y

GET --> https://{region}.babelforce.com/api/v2/recordings?filters.state=stored&filters.time.end=1526511600&filters.time.start=1492470000&max=10&page=1

{
    "items": [
        {
            "id": "0ed866c1f8b44727827daaaf7e7b098c",
            "dateCreated": "2018-04-05T08:11:09.000Z",
            "lastUpdated": "2018-04-05T08:13:05.000Z",
            "duration": 117504,
            "url": "https://services.babelforce.com/recording/a4e00fbc-71a8-4704-ba19-17b55765d18f/0ed866c1f8b44727827daaaf7e7b098c/stream.wav",
            "tags": [],
            "file": {
                "id": "1c0bac703b8344bdb329f44425511264",
                "state": "stored",
                "name": "0ed866c1f8b44727827daaaf7e7b098c.mp3",
                "size": 352512,
                "contentType": "audio/mpeg"
            },
            "state": "stored",
            "call": {
                "id": "de6c47fa053443d6a0e5adc871b18bd3",
                "conversationId": "9712cb2b99f147d69bb810e87df46c47",
                "type": "OUTBOUND",
                "from": "999189807045",
                "to": "999189807048"
            },
            "agent": {
                "id": "f67c01ac4ef6487fa2a4420b3b713ed8",
                "name": "Sandra Schmidt",
                "number": "9991898070"
            },
            "_url": "https://services.babelforce.com/api/v2/recordings/0ed866c1f8b44727827daaaf7e7b098c"
        }
        ...
        ...
    ],
    "pagination": {
        "pages": 1,
        "total": 1,
        "current": 1,
        "max": 10
    },
    "success": true
}

Once you are able to access this resource, you will see that we offer some non-sensitive metadata with each item. This can help you when working out how to categorize recordings.

The most important piece of information this resource offers is the recording URL for each item. With this you can set up a job at regular intervals to query this endpoint and download recordings for a certain period in batch.

Important: Please note that you need to ensure that you space out your requests to retrieve audio files to prevent you reaching maximum limit on API requests and also to ensure that you are not requesting audio file downloads simultaneously. You could end up blocking your overall API access for important live requests.

Getting predictive dialer recordings in bulk

Since using a babelforce dialer for automated outbound calling can generate a lot of recordings, you can request to have daily compressed archive files prepared that are ready to download and store if you need to do so.

Note as per our standard data retention policy, outbound dialer recordings are retained for 1 month. So if you wish to keep them for longer for your internal purposes, you just need to establish a scheduled automated task to retrieve the files.

Complete call recording management via API

As stated above, outbound calls cannot currently be managed automatically via API. But all other call recordings can. We use Postman, a popular API discovery tool, to test and document out APIs.

Click here to downoad Postman-ready resources which document important babelforce API functionality. Then click  "Import" in Postman to import both files and get started. Inside the imported collection there will be a Recordings sub-folder containing the relevant requests.

 

Have more questions? Submit a request