Recordings
The Recordings module manages audio files for IVR prompts, announcements, and other PBX audio.
Purpose
Use this module to:
- Upload audio files to MinIO storage
- Reference external audio URLs
- Manage file metadata
- Generate secure download links
Recording Types
| Type | Storage | Access |
|---|---|---|
| Upload | MinIO bucket (recordings/{org_id}/{random}_{name}.{ext}) | Encrypted token or HMAC-signed URL |
| Remote | External URL reference | Direct URL |
Upload Security
The upload pipeline validates every file:
- Size validation (configurable, default 5 MB)
- MIME whitelist (
audio/mpeg,audio/wav) - Extension whitelist (
.mp3,.wav) - Binary file signature verification
- Script injection detection
- Filename sanitization
Permissions
Recordings are generally Owner/Admin-only.
| Action | Owner | PBX Admin | PBX User | Reporter |
|---|---|---|---|---|
| View recordings | Yes | Yes | No | No |
| Create recordings | Yes | Yes | No | No |
| Update recordings | Yes | Yes | No | No |
| Delete recordings | Yes | Yes | No | No |
UI Workflow
Upload a Recording
- Navigate to Recordings in the sidebar
- Click Upload Recording
- Enter a name
- Choose the file or enter a remote URL
- Save
Use a Recording in an IVR Menu
- Open the IVR menu editor
- Select Recording as the audio source
- Choose the uploaded recording from the dropdown
- Save the menu
Key Data Fields
recordings Table
| Column | Type | Notes |
|---|---|---|
id | bigint | Primary key |
organization_id | FK | Tenant scope |
name | string | Display name |
type | enum | upload, remote |
file_path | string nullable | MinIO path |
original_url | string nullable | Remote URL |
mime_type | string nullable | |
size | integer nullable | Bytes |
duration | integer nullable | Seconds |
Related API Endpoints
| Method | Endpoint | Purpose |
|---|---|---|
| GET/POST/PUT/DELETE | /v1/recordings[/{recording}] | Standard CRUD |
| GET | /v1/recordings/{recording}/download | Generate access token |
| GET | /v1/recordings/secure-download | Serve file via token |
| GET | /storage/recordings/{path} | Public HMAC-signed access (for Cloudonix) |
See the OPBX REST API reference for full schemas.
Related Modules
- IVR Menus — Audio source for IVR prompts
- Conference Rooms — Hold music and announcements