Each type of call creates a set of CDR data records. This section identifies the records that form the set for each type of call. Many types of calls produce multiple CDRs and CMRs. It helps to identify the expected set of records for a given call before processing the data for that call. This section does not provide an exhaustive set of call types and examples. It does, however, contain a representative sample of different types of calls and the records produced. The assumption is made that CDR generation is enabled, and the CDR Log Calls with Zero Duration Flag service parameter is disabled.
Calls Between Two Endpoints
A standard call is a call between two endpoints that does not involve any features. The endpoints can be either phones or gateways. These calls generate one CDR and two CMRs if they are between IP phones or between IP phones and MGCP-controlled gateways. If an endpoint involved in a call is not an IP phone or an MGCP-controlled gateway, no CMR data is written for that endpoint. This section covers the following two topics:
Note
The originalCalledPartyNumber field always contains the same directory number as the finalCalledPartyNumber field in a normal call.
CDR Data for a Call Between Two IP Phones
Each normal call between two IP phones logs one CDR at the end of the call. Each CDR contains all fields identified in Table 7-3. Not all fields in a CDR or CMR are used for a given call. If the field is not used, it contains the default value for that field type. CallManager also writes one CMR per endpoint that is involved in the call. In a standard call between two parties that are each using an IP phone, the system writes two CMRs, one each for the originator and the destination of the call. In this case, the call will have a duration greater than 0 seconds, and the originalCalledPartyNumber field and the finalCalledPartyNumber field both contain the same information.
CDR Values for Calls Involving a Gateway
When a call involves a gateway as one of the endpoints, the IP address for that endpoint is the IP address of the gateway, even though the call might not actually terminate there. The call can pass through the gateway to a real endpoint on the PSTN. Calls that involve a gateway have a nonzero value for a span number in one or both of the span fields (origSpan or destSpan). The fields origDeviceName or destDeviceName contain the device names of the terminating devices. Thus, you have the name of the gateway through which the call passed. When you both originate and terminate a call through a gateway, the software writes a nonzero number into both span fields. The span is normally the port or channel on that gateway used for that call. In the case of an H.323 trunk call, the span fields contain the call leg ID for the call leg going through that gateway.
Abandoned Calls
An abandoned call is defined as any call that terminates before it actually connects to a destination. Abandoned calls will always have a duration of 0 seconds, and the origCause_value field indicates why the call was terminated. If the call has any cause termination value that is not a normal call termination (that is, not 0, 16, or 31), the CDR is logged for that call. Abandoned calls do not generate a CMR.
Some ways you can create abandoned calls include the following:
CallManager does not distinguish between calls that you abandon on purpose and calls that do not connect because of some network or system error condition. If the cause of termination is anything but a normal call termination, the CDR is logged.
Short Calls
A short call is a call with a duration of less than 1 second. It appears as a zero duration call in the CDRs. These can be differentiated from failed calls by the dateTimeConnect field, which shows the actual connect time of the call. For failed calls (which have never connected), this value is zero. If you want to see these calls, you need to enable CDR Log Calls with Zero Duration Flag.
IP Phone Failures During a Call
When an IP phone is unplugged, there is no immediate physical indication to CallManager. CallManager relies on a TCP-based KeepAlive signaling mechanism to detect when an IP phone is disconnected. The KeepAlive interval is normally set to 30 seconds, and for this discussion, it is assumed that the interval is set at its default value.
Every 30 seconds, each IP phone sends a KeepAlive message to CallManager, and CallManager responds with an acknowledgment. Both parties then know that the other is functioning properly. When an IP phone is unplugged, it fails to send this KeepAlive message. CallManager waits for three KeepAlive intervals (by default, this is about 90 seconds) from the time of the last KeepAlive message before assuming that the IP phone is no longer functioning. The implication to billing is that when an IP phone is unplugged, the duration of the call reflected in the CDR can be up to 3 KeepAlive intervals (about 90 seconds) longer than the actual speech time experienced by the user. This value, 90 seconds, is worst-case, assuming that the default KeepAlive interval of 30 seconds is not changed. When two KeepAlives are missed, the call is terminated at the next KeepAlive interval. Calls that fail in this manner might be identified by a cause value of 41 (Temporary Failure). It is possible for this cause value to occur in other circumstances because external devices such as gateways can also generate this cause value.
Forwarded or Redirected Calls
The fields in the CDRs for both forwarded calls and redirected calls are the same as those for normal calls, except for the originalCalledPartyNumber field and the originalCalledPartyNumber Partition field. These two fields contain the directory number and partition of the original destination for this call. When you forward a call, the finalCalledPartyNumber and the finalCalledPartyNumberPartition fields are updated to contain the directory number of the final destination of the call. The lastRedirectDn and lastRedirectDnPartition fields contain the directory number and partition of the last phone that forwarded or redirected this call, and the lastRedirectRedirectOnBehalfOf field identifies which feature or entity caused the call to be redirected. In the case of forwarding, the lastRedirectRedirectReason field identifies why the call was forwarded. Features such as conference and call pickup redirect calls to implement the feature operation.
Tip
If the call is forwarded more than one hop, the intermediate forwarding parties are not recorded in the CDR.
Precedence Calls (MLPP)
The fields in the CDRs for precedence calls are basically the same as for all other calls of the same type (normal calls, forwarded calls, transferred calls, and so forth). The difference is that the destPrecedenceLevel field or the origPrecedenceLevel field is set. If a call is preempted by a precedence call, the cause codes indicate the reason for the preemption. If a precedence call is preempted by a higher-level precedence call, the cause codes also indicate the reason for the preemption.
Malicious Calls
A malicious call is one where the called party feels threatened in some way. Users identify a call as a malicious call by pressing the MCID softkey. When a call is identified as malicious, CallManager flags the call by including the following string in the Comment field:
callFlag=MALICIOUS
Video Calls
Video calls appear the same as other voice calls of the same type except that the additional video fields contain the video data.
Immediate Divert (to Voice Mail)
CDRs for calls that have been diverted to voice mail using the immediate divert feature (via the iDivert softkey) appear the same as forwarded calls. The origCalledPartyRedirectOnBehalfOf field and the lastRedirectRedirectOnBehalfOf field indicate that a call was redirected on behalf of the immediate divert feature.
Transferred Calls and Examples
Calls that are transferred have additional records logged for them. The three calls that are logged are as follows:
If the transfer is a blind transferin which the user did not wait for the transfer destination to answer before completing the transferthe record logged has a duration of 0 seconds and the origCause_Value and destCause_Value fields set to 126 (Call Split).
The following examples are not an exhaustive set and are intended to illustrate the records that are generated under the stated circumstances. The examples help clarify what records are generated on transferred calls, parked calls, and conference calls. These examples assume that you did not enable the CDR Log Calls with Zero Duration Flag service parameter.
Transferred Call Example 1: A Calls B, A Transfers B to C
The call scenario is as follows:
Three CDRs and four CMRs are generated for this call:
CDR for call from A to BOriginal call
CDR for call from A to CConsultative call, where A announces the transfer of B to C
CMR for A
CDR for call from B to CActive call after transfer is complete
CMR for B
CMR for C
This call is a consultation transfer because the call from A to C was actually connected. The originalCalledPartyNumber and finalCalledPartyNumber field values are the same in the CDRs for this call.
Transferred Call Example 2: A Calls B, B Transfers A to C
The call scenario is as follows:
Three CDRs and four CMRs are generated for this call. The records logged are
CDR for call from A to BOriginal call
CDR for call from B to CConsultative call where B announces the transfer of A to C
CMR for B
CDR for call from A to CActive call after transfer is complete
CMR for A
CMR for C
Transferred Call Example 3: A Calls B, A Transfers B to C on a Blind Transfer
The call scenario is as follows:
Three CDRs and four CMRs are generated for this call:
CDR for call from A to B
CMR for A
CDR for call from A to C (zero duration and termination cause of 126 [Call Split])
CDR for call from B to C
CMR for B
CMR for C
Because the call was a blind transfer, the call from A to C has a duration of 0 seconds and the origCause_Value and destCause_Value set to 126 (Call Split). The call is logged because of the Call Split cause code.
Transferred Call Example 4: A Calls B, B Transfers A to C on a Blind Transfer
The call scenario is as follows:
Three CDRs and four CMRs are generated for this call:
CDR for call from A to B
CMR for B
CDR for call from B to C (zero duration and termination cause of 126 [Call Split])
CDR for call from A to C
CMR for A
CMR for C
Because the call was a blind transfer, the call from B to C has a duration of 0 seconds and the origCause_Value and destCause_Value set to 126 (Call Split).
Transferred Call Example 5: A Calls B, B Transfers A to C on a Blind Transfer, and C Is Forwarded to D
The call scenario is as follows:
Three CDRs and four CMRs are generated for this call:
CDR for call from A to B
CMR for B
CDR for call from B to C (which was forwarded to D)
CDR for call from A to D
CMR for A
CMR for D
This call was a blind transfer, and the call from B to C has a duration of 0 seconds and the origCause_Value and destCause_Value set to 126 (Call Split). Because the destination C was forwarded to D, the call logged from A to D will have the originalCalledPartyNumber field set to C, and the finalCalledPartyNumber field set to D.
Parked Call Example: A Calls B, A Parks B, and C Picks Up B
The call scenario is as follows:
Two CDRs and three CMRs are generated for a parked call:
CDR for call from C to B (the final call when C picked it up)
CMR for B
CMR for C
Conference Calls and Examples
CallManager allows two types of conferencesAd Hoc and Meet-Me. CallManager creates a different set of records for each of these conference types.
Ad Hoc Conference Calls
You can identify the Ad Hoc conference controller by examining the Comment field in the CDR. When a call is involved in more than one conference, it contains multiple sets of conference controller information. This happens, for example, when a conference is reduced to two parties, and one of them starts another conference. When multiple sets exist, the last conference controller information in the CDR identifies the conference controller for the call.
When an Ad Hoc conference call is reduced to two parties, the two parties are connected directly and the conference bridge is released. This results in an additional CDR and up to two additional CMRs for the directly connected call.
Ad Hoc Conference Example: A Calls B, A Calls C, A Sets Up Conference Among A, B, and C
The call scenario is as follows:
Six CDRs and five CMRs are generated for a three-party Ad Hoc conference:
CDR for call from A to conference bridge
CDR for call from B to conference bridge
CDR for call from C to conference bridge
CDR for call between last two parties when one of the three hangs up
CMR for A
CMR for B
CMR for C
Tip
The last CDR shown in the preceding list is normally generated. The only time it is not generated is when two or more of the last three parties in a conference hang up at the same time. When that occurs, the system terminates the conference without generating the last CDR because the call between the last two parties would not exist in that case.
You can identify the conference controller (A) for this conference call because the Comment field in the CDR contains a string with the following format:
ConfControllerDn=A;ConfControllerDeviceName=A's device name
If A's DN were 1000 and A's Device Name were SEP0003E333FEBD, the Comment field would contain the following:
ConfControllerDn=1000;ConfControllerDeviceName=SEP0003E333FEBD
Calls that are connected to the conference bridge will have the finalCalledPartyNumber field set to a value similar to b0019901001.
In an Ad Hoc conference, each additional participant added causes four additional records to be generated. In this case, the call scenario to add another participant is as follows:
Two CDRs and three CMRs would be logged:
Meet-Me Conference Example: A Sets Up Meet-Me Conference, B and C Call into Conference
The call scenario is as follows:
Three CDRs and three CMRs are generated for a three-party Meet-Me conference. The CDR and CMR for each call into the conference are logged when that participant hangs up. The records are as follows:
For each additional participant in a Meet-Me conference, one CDR is logged and one CMR is logged.
Held Calls Example
This section illustrates what happens when calls are placed on hold and resumed again.
The call scenario is as follows:
Held calls create one CMR for each time you put a call on hold. They also create only one CDR for the entire call, which includes the talk time and hold time from the time the call originally connected to the time of the final disconnect. CMRs are generated in order each time a user presses the Hold softkey, and two CMRs are generated at the end of the actual call:
Calls with Busy or Bad Destinations
A call with a busy or bad destination is logged with all relevant fields containing data. Which fields contain data depends on what caused the call to terminate. The destCause_value field contains a cause code indicating why the call was not completed. One CDR is logged and possibly one CMR is logged for each of these calls.
If you abandoned the call without dialing any digits, the cause will be NO_ERROR (0), and the duration will always be 0 seconds. These calls are not logged unless the CDR Log Calls with Zero Duration Flag service parameter is enabled. If the call is logged, one CDR is logged and possibly one CMR is logged.
Cisco CallManager Architecture
Call Routing
Station Devices
Trunk Devices
Media Processing
Manageability and Monitoring
Call Detail Records
Appendix A. Feature List
Appendix B. Cisco Integrated Solutions
Appendix C. Protocol Details
Index