
VoIP
114
17.13. Voicemail and IVR services
Voicemail is still in development. The FB2700 will simply pass the call to a voicemail server via SIP. This
could be a local device on the network, or a service provided by a carrier. We will include a software package
to run on a linux box that will save the recording.
Tip
Most VoIP carriers provide voicemail
17.14. Call Data Records
A Call Data Record (CDR) is a record that is used for charging for a call. It consists of the following which
are shown in a comma separated list.
• Start time when call connected (UTC with milliseconds), or if not connected then when call created
• Duration of ringing (seconds and milliseconds)
• Duration of call (seconds and milliseconds), or minus and call status if call not connected
• Call Record Data
Where the CDR is created based on the presence of a
cui
setting in the configuration, the Call Record Data
consists of the following fields. Where RADIUS is used the Call Record Data is simply the data provided by
RADIUS.
• Chargeable User Identiy (the content of the
cui
setting)
• Dialled number
• Calling Line Identity
The CUI is just a string of characters. It can be set on a telephone user, but defaults to ddi, exten or name, if
not set. It is typically the telephone number that should pay for the call being made.
In a simple example of a telephone calling an external number, the call comes in (inbound leg) and an outgoing
call is made to the carrier (outbound leg). A CDR record is attached to the outbound leg with the telephone's
CUI, and the corresponding CLI and dialled number used. When the call connects the start time is set on the
CDR. At the end of the call the CDR record is written out. CDR records can be logged (e.g. syslog) and send
by RADIUS accounting. RADIUS accounting also carries details of each call leg (start, interim and stop), and
the CDR records are contained in the final RADIUS STOP message for the call, so only in one record.
There are more complex examples, such as A calls B, and B diverts to C. When a call is diverted or transferred,
the CDR for that outbound leg is moved to the new outbound leg along with any CDR for that outbound leg.
This means that, in this example, you get two final CDRs, one for A to B, and one for B to C, each starting
when the call connected and having the same duration.
For a transfer, e.g. A calls B, B places on hold and calls C, then B transfers call, you have the same situation,
but the start times and duration of the two parts are not the same.
This stacking of CDRs is important for call billing. In these examples A only expects to pay for a call to B
(which may even be free if an internal call). But B expects to pay for the call to C because they diverted or
transferred the calls.
A CDR can be associated with an incoming call leg, this is normally set by RADIUS, or by giving a carrier a
cui setting. This is sticky and stays with the calling leg, and is logged when the calling leg ends even if the call
did not connect. Otherwise the CDR is only logged if it connects.