FusionPBX Call Recordings

The ictVoIP FusionPBX Call Recordings server module lets clients browse, play, and download call recordings hosted on their FusionPBX system, directly from the WHMCS client area. Recording audio stays on the PBX host — it is fetched on demand when a client plays or downloads it, never copied to WHMCS.

The module is part of the ictVoIP Billing ecosystem: it is implemented, billed, and tracked through the Product → Server → Provider → Package → Client chain in the ictVoIP Billing addon, alongside your FusionPBX voice services. Recordings are tenant-scoped — the client sees recordings for the extensions assigned to their Call Recordings service, with a per-extension column and filtering in the panel.

Note

For the VoIP.ms-based recordings module, see VoIP.ms Call Recordings. For the FS PBX variant, see FS PBX Call Recordings.

Requirements

  • A valid module license key (LeasedictFusionPBXCallRecordings_…)

  • The recordings-capable API bundle installed on the FusionPBX host (see below)

  • An imported FusionPBX tenant with extensions (via the provider’s Client Services tools)

FusionPBX Host — API Update Required

Important

The recordings API ships inside the FusionPBX Server module package, in the FusionPBX Host/fpbx_apis-theme/ictvoip_fpbx5-3_apis/ bundle. If your PBX host already has ictVoIP APIs installed, you must still update to the recordings-capable bundle — upload and unpack it to /root/ on the FusionPBX server, then run the installer:

cd /root/ictvoip_fpbx5-3_apis
chmod +x install_apis.sh
./install_apis.sh

The installer registers the recordings API (whitelist-gated, same model as the other ictVoIP endpoints) and self-tests it. Full procedure: FusionPBX Installation Guide (Steps 2–3). Do this before creating the WHMCS server record — Test Connection probes the recordings API and will fail until it is installed.

Add your WHMCS server IP to the API whitelist (chkcon_whitelist.conf) if it is not already listed.

Setup — Step by Step

0. Install the module files

Unpack the recordings module package into modules/servers/fusionpbxcallrecordings/.

The client-area panel files are shared across the recordings modules and ship with the ictVoIP Billing addon (v1.5.0+) — ensure the addon is installed and current so these are in place:

  • clientPbxRecordingsPanel.php → the WHMCS root (docroot)

  • clientPbxRecordingsPanel.tpl → your active client theme’s template directory (templates are shipped for the ictVoIP/prosper themes)

1. Create the Call Recordings product

In WHMCS, create a new product and set the module to fusionpbxcallrecordings. In the product’s module settings, enter your license key (LeasedictFusionPBXCallRecordings_…), click Verify, then Activate, then Save.

2. Create the server record

In WHMCS, add a server for the PBX host with HTTPS enabled:

  • Server name and server hostname (FQDN)

  • IP address / host IP

  • Username and Password — the FusionPBX API user/pass credentials (same as the FusionPBX voice module uses). The Access Hash field is not used by this module.

Click Test Connection to verify — it probes the recordings API on the PBX host.

3. Create the Provider

Open the ictVoIP Billing dashboard and create a new provider:

  • Name: e.g. FusionPBX Call Recordings

  • Server module: fusionpbxcallrecordings

Save.

4. Package Rates and tenant import

In the ictVoIP Billing dashboard, select the FusionPBX Call Recordings provider:

  • Set up its Package Rates for the recordings product (free minutes, per-direction per-minute rates, roundup increments, monthly fee)

  • Import a FusionPBX tenant with extensions to collect call recordings — click the EXT icon in Tenant/Domains to open the Extensions Manager

Note

This quick start assumes the FusionPBX host already has tenants with call recordings enabled. For a new Tenant/Domain and its extensions, you must first enable Call Recording on each extension in the Extensions Manager under Client Services — otherwise there will be no recordings to collect.

5. Order for the client

In the client’s profile, use Add New Order, select the Call Recordings product you created, and save.

6. Set the Registration Date

After the order completes, change the product’s Reg Date to the beginning of the month so the billing cycle aligns.

7. Assign extensions

Back in the ictVoIP Billing dashboard, select the FusionPBX Call Recordings provider → Client Services → Extensions, and assign the extensions to the client for whom the Call Recordings product was created. Bulk assign or single assign both work.

8. Verify as the client

Use Login as Owner on the client. Two ways to reach the recordings:

  • Client area home → click the service → Call Recordings Dashboard button on the product page

  • Client area home → VoIP Management card → Call Recordings (the card appears for clients with services in VoIP product groups — place the recordings product in a group such as ictVoIP Recordings or ictVoIP Service)

The panel loads the tenant recording scope into a searchable, sortable, paginated grid with a per-recording Extension column, CSV export, in-browser Play, and Download through the module — no direct PBX URL is exposed.

Billing (Optional)

The module ships cron/autobill_recordings.php for usage-based billing of recording minutes. Each run iterates Active recordings services due for billing, totals recorded minutes per direction for the bound tenant, applies the package’s free-minutes pool, and invoices overage at the package rates. Usage is tracked in two places: the client-area panel (per-call detail) and standard WHMCS invoices.

CRON Configuration

Important

The recordings autobill CRON must run before the WHMCS daily CRON — the recordings invoice must already exist when WHMCS runs its daily billing pass.

Scheduling Requirements:

On AlmaLinux 9 / systemd-based systems, cron jobs may default to UTC even when server time, PHP-FPM timezone, and WHMCS timezone are all correct — WHMCS automation relies on the execution time of cron.php, not just internal settings. Specify TZ= explicitly in each cron job, or set date.timezone in the system PHP INI.

Recommended Schedule:

WHMCS Daily CRON: 1:00 AM
Recordings Autobill CRON: 12:55 AM (5 minutes before)

Alternative Schedule:
WHMCS Daily CRON: 2:00 AM
Recordings Autobill CRON: 12:45 AM (75 minutes before)

Recording volumes are typically light, so a 5-minute lead is sufficient for most installs; leave a wider buffer on large multi-tenant hosts.

CRON Entry Format:

Replace yourwhmcs.com / the install path and America/Toronto with your timezone:

# URL trigger (wget/curl or WHMCS URL cron)
55 00 * * * TZ=America/Toronto GET https://yourwhmcs.com/modules/servers/fusionpbxcallrecordings/cron/autobill_recordings.php?runfrom=cron

# PHP CLI format (alternative)
55 00 * * * TZ=America/Toronto /usr/bin/php -q /home/USERNAME/public_html/modules/servers/fusionpbxcallrecordings/cron/autobill_recordings.php runfrom=cron

CRON Parameters:

  • TZ=America/Toronto — explicit timezone (recommended on AlmaLinux 9 / systemd)

  • 55 00 — time (12:55 AM in the specified timezone)

  • * * * — daily execution

  • GET — HTTP method (or /usr/bin/php -q for CLI)

  • runfrom=cron — execution parameter

Note

The Package Rates row on the provider is what the cron rates against. If no provider/package binding exists, it falls back to a default per-minute rate — create the provider and rates before enabling billing.

See also

Security

  • Audio is fetched on demand from the PBX — nothing is stored in WHMCS

  • Panel access validates the requested service belongs to the logged-in client; recordings are scoped to the service’s assigned tenant and extensions

  • The recordings API on the PBX host is whitelist-gated

  • A non-Active license replaces the service’s client-area page with the license notice

Troubleshooting

  • No call recordings found — confirm Call Recording is enabled on the extension (Extensions Manager under Client Services), the tenant’s extensions were imported (provider → Tenant/Domains → EXT), and assigned to the client (provider → Client Services → Extensions); also confirm the recordings API is installed on the PBX host and the WHMCS IP is whitelisted

  • Test Connection fails — verify the server record’s FQDN, IP, username/password, HTTPS enabled, and that install_apis.sh was run on the FusionPBX PBX host

  • No invoice / wrong amounts — confirm the provider exists and the product has Package Rates saved under it, and that the cron runs before the WHMCS daily cron

  • No Call Recordings button on the product page — the module package wasn’t fully unpacked, or the panel file/template wasn’t copied in Step 0

  • License notice on the product page — re-check the License Key in the product’s module settings, then Verify/Activate Save.