Skip to content

Call records (CDRs)

A call detail record is written for every billed leg of a call: one for the account’s customer, one for each reseller above it, one per vendor attempt, and one per DID charge. The panel shows them on separate screens, all with the same filter bar, the same export options and the same call-detail page. Calls joins them into one view per call for troubleshooting.

All screens are in the Reports group of the sidebar:

Screen URL Shows
Call Records (CDRs) /cdrs_customer.php Calls of your accounts and of your sub-customers, priced for them
Vendors Call Records /cdrs_vend.php Every vendor attempt with the termination cost. Needs system management rights
DIDs Call Records /cdrs_dids.php Charges for calls that arrived on DIDs. Needs the DID pool
Calls /calls.php One row per call with customer, vendor and DID sides together. Root customer, with statistics aggregation enabled

CDRs in the Actions menu of an account or reseller opens Call Records (CDRs) filtered to it; Open CDRs on a connection opens Vendors Call Records for it. Times are shown in the time zone of your web user. In maintenance mode CDRs Update the screens are unavailable to everyone but the root user.

Screenshot "admin-panel/cdrs" has not been generated yet — see scripts/screenshots/screens.yml.

The filter bar holds the date presets Today, Yesterday and under More the weeks and months, a Show Call Records selector, a Caller box and a quick CLD search. Filters opens the full set:

Filter Meaning
Start Date/Time, End Date/Time Setup time of the call. The default start comes from Default Start Date in system parameters; the end is the end of today
CLI, CLD The numbers, with the match type is like, is not like, matches any of or matches none of. % and _ are wildcards and nothing is added for you: 38044% finds the prefix, 38044 only that exact number. Several patterns may be separated by commas or spaces; the two matches modes take alternatives such as 38044%|38050%
Show Call Records Non-zero Duration & Errors (default), Non-zero Duration, Complete, All, Incomplete or Errors
Result Any, OK, Any SIP Response Code, a specific SIP Response Code 486, or an internal error of the switch
Caller All, All Accounts, All Customers, or one account or customer
Currency Currency the amounts are converted to
Batch Tag, Account Class Narrow All Accounts by tag or class; ignored for other callers
Call-Id The SIP Call-ID, with % for a partial match

Vendors Call Records replaces caller and result with Vendor and Connection; DIDs Call Records adds DID and Charge is Applied to. The quick-filter values of each screen are remembered per browser; Clear Filters resets them.

An invalid pattern in the two matches modes is dropped with the banner Filter ignored: and the reason; the rest of the filter still applies.

Column Meaning
(status) Green check for a connected call; red badge with the code for a SIP or internal error; Timeout for calls that never got a final answer
Caller Acct. account or Cust. sub-customer, linking to its form
CLI, CLD Calling and called number as billed. On the vendor screen these are the numbers sent to the vendor
Country, Description Destination lookup of the called number
Setup Time Start of the call in your time zone
Duration, Billed Dur. Real and billed duration as h:mm:ss
Charged Price in the selected currency

The stats bar above the list totals Calls, Duration and Charged for the selection. Rows are newest first, 50 per page.

On the first open without filters the screen looks for the most recent calls in widening windows, from the last five minutes to the whole period, and fills the totals afterwards. Any explicit filter searches the whole period.

The chevron at the start of a row, available to admin users, opens the vendor routing of that call: every connection that was tried with its times, cost and result, plus Play recording when the call recording module is on, Extract SIP Log and Test Dial plan preset with the call’s numbers and IP. The Options menu of a row has Call Details and, for the root user, Queue SIP Log Extraction.

Call Details shows every field of the record as a parameter table: identifiers and the Call-Id, the original and billed CLI and CLD, LRN results, Remote IP, setup, connect and disconnect times, durations, the rate parameters used (Price 1, Price N, intervals, Connect Fee, Free Seconds, Grace Period, Post Call Surcharge), the Result with its description, PDD and the release source, followed by one row per surcharge. Below it, SDP Records list the media negotiation of each leg and Call Authentication shows which rule or digest credentials authenticated the call, which is the first place to look when a call was billed to the wrong account. The vendor record adds the media relay used and Remote Port; the DID record is a single table. Back to CDRs returns to the list with the filters intact.

Reports → Calls searches all records of a call at once and is the quickest way to answer “what happened to this call”. The filter adds Duration, sec from and to, Rows per page and the same pattern syntax for CLD and CLI. Each row has a chevron that opens a card with a plain-language Diagnosis (for example Destination is busy (486)., All 3 vendor attempt(s) failed., Slow to answer: post-dial delay 8.2 s.), the customer side, the DID side and, for admin users, every vendor attempt with IPs, PDD, cost and who released the call. Markers in the row show the number of vendor attempts, Inbound via DID and Recording available. This screen has no export.

Export in the header offers Download CSV and Send by E-Mail. The download uses the file format of your web user’s download setting, CSV or Excel, and is named Call Records from <start> to <end>. It contains the caller, the original and billed numbers, the billing prefix and destination, setup, connect and disconnect times, durations, cost and currency, result, remote IP, LRN numbers, release source, Call-ID and the error message. The download stops at the row limit unless you used Generate Full Report; Send by E-Mail has no limit, zips the file and splits very large Excel exports. The e-mail dialog takes Send To, Subject with ${DATE_FROM} and ${DATE_TO} placeholders, Zip the Report and a Message.

Tools & Debugs → Rerate CDRs (root only) recalculates already billed calls of a reseller, an account or a set of vendor connections for a period, using a rate sheet you upload to the task, not the current tariff. Balances change accordingly and there is no undo, so download the affected CDRs first. See Recalculating CDRs after a rate correction.