Database Information
In openUC / sipXecs 4.6 and prior all CDR information is stored in Postgres.
All the information regarding call events is aggregated in the call_state_events table
Additional Information
Configuring Call Detail Records: Configuring Call Detail Recording (CDR)
...
Some more good information: CDR Extras
Postgres Row Breakdown
Here is a breakdown of the rows:
1. call_id - This is a unique identifier for each call, should be used to filter out duplicates records from the csv file
2. from_tag - A A system identifier
3. to_tag - A A system identifier
4. caller_aor - This This is the call originator
5. callee_aor This is the terminating number
...
5 | "Test User" <sip:2949@sipx.sipfoundry.org> | <sip:919703106641@sipx.sipfoundry.org;user=phone> | 2011-05-03 19:39:40.689 | | 2011-05-03 19:39:40.919 | | F | 403 | Forbidden |
...
Call State Events Table
Column event_type holds the event type sent
R - Call Request
T - Transfer call Event
S - Call Established Event
F - Call failed event
E - Normal End Call event
Below is an example with call_state_events table entries given from_url and to_url values. These applies when we try to place a call using a 3PCC
Example:
when from = user1, to = user1 status=R we know that user1 phone is ringing
when from = user1, to = user1 status=S we know that user1 picked up the phone
when from = user1, to = user2 status=R we know that user2 phone started ringing
when from = user1, to = user2 status=S we know that user2 answered the phone
Failure situations:
when from = user1, to = user1, status=F we know that user1 rejected the call
when from = user1, to = user2, status=E we know that user2 rejected the call (if there is no call established event (S) before, we know that user2 never answered the call and rejected it instead)
(If there is an (S) status event before, then user2 normally ended the call)