Obtaining call recordings
This guide will walk you through creating a task to download items using an API and retrieving the task status every N seconds.
Prerequisites
- Ensure that Node.js is installed (v18+ includes the native
fetch
API). - You have access to the Wildix API endpoints.
Step 1: Create a Task to Download Recordings
To start downloading items, you need to create a task using the createDownloadRecordingsTask
API endpoint.
API Documentation
Refer to the official Create Download Recordings Task API documentation.
Example Code
The following code demonstrates how to use the fetch
function to create a download task.
// Replace these with your actual API credentials
const PBX = 'https://{pbx}.wildixin.com';
const API_TOKEN = 'your-api-token';
async function createDownloadTask() {
const url = `${PBX}/api/v1/PBX/recordings/download/`;
const requestBody = {
"from": 1727867140,
"to": 1727867140
};
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_TOKEN}`
},
body: JSON.stringify(requestBody)
});
if (!response.ok) {
throw new Error(`Failed to create task: ${response.statusText}`);
}
const data = await response.json();
console.log('Task Created:', data);
return data; // Return task ID or other necessary information
}
// Create the download task
createDownloadTask().catch(console.error);
Expected Response
Upon a successful task creation, you should receive a response with details about the task, such as the task ID, which you will use in the next step.
Step 2: Retrieve Task Status Every N Seconds
Once the task is created, you can check its status using the getStatusRecordingsTask
API endpoint. You need to poll the API every N seconds to check the task's completion status.
API Documentation
Refer to the official Get Status of Recordings Task API documentation.
Example Code
Here’s an example of how to check the task status repeatedly until it's completed.
const TASK_ID = 'your-task-id'; // Replace with the actual task ID from the createDownloadTask response
async function getTaskStatus(taskId) {
const url = `${PBX}/api/v1/PBX/recordings/download/${taskId}`;
const response = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${API_TOKEN}`
}
});
if (!response.ok) {
throw new Error(`Failed to retrieve task status: ${response.statusText}`);
}
const data = await response.json();
console.log('Task Status:', data);
return data;
}
// Polling function to check task status every N seconds
async function pollTaskStatus(taskId, intervalSeconds) {
const interval = intervalSeconds * 1000;
const poll = setInterval(async () => {
const statusData = await getTaskStatus(taskId);
// Assuming the API returns a status field, modify as per actual API response
if (statusData.result.status === 'success') {
console.log('Task completed successfully');
clearInterval(poll);
} else if (statusData.result.status === 'error') {
console.log('Task failed');
clearInterval(poll);
} else {
console.log('Task is still in progress...');
}
}, interval);
}
// Poll the task status every 5 seconds
pollTaskStatus(TASK_ID, 5).catch(console.error);
Notes
- In the polling function, the status of the task is checked every 5 seconds. You can adjust the polling interval by changing the
intervalSeconds
value. - The task is considered completed or failed based on the
status
field in the response. Adjust the conditions based on the actual response from the API.