Understanding Call Progress Tones

PBXs and the public telephone network use audible call progress tones to indicate the progress of a call. Typical call progress tones include dial, busy, and ringback tones.

By listening to these tones, a caller can determine the state of an outbound call. For example, when the caller hears a ringback tone, he/she waits for the remote number to be answered. If the call is not answered within a reasonable time period, the caller abandons the call and tries again later.

Like humans, when a voice card hears a busy tone, it returns a code to the Dial control to indicate that a tone was detected. The program then performs the appropriate action.

Cadence and Frequency

Voice cards usually recognize call progress tones in two ways:

By detecting both cadence and frequency, two tones can be distinguished (for example, the busy tone from a PBX and the busy tone from the public telephone network).

Common Tones

The following table lists three tones commonly heard over the North American public phone network:

Tone

Frequencies

Sound

Silence

Fast busy

480 Hz, 620 Hz

250 msec

250 msec

Busy

480 Hz, 620 Hz

500 msec

500 msec

Ringback

440 Hz, 480 Hz

2 sec

4 sec

How Call Progress Analysis Works

Voice cards can listen to call progress tones and recognize the state of a call. To do this, the voice card must know in advance which tones to expect and what these tones mean. When connected to a North American telephone system, most cards do not need any special training. However when connected to a PBX or to a telephone system in another country, the card needs to be trained to recognize the tones correctly.

During call progress analysis, the voice card attempts to detect the frequencies and establish the cadence of a call progress tone. Generally, when sound is present, the card first attempts to detect the frequencies defined in the defined tone tables. After recognizing a tone's frequencies, the voice card tries to establish the tone's cadence. If the voice card can establish a tone's cadence, the driver compares the detected tone to the tones defined in the table. The driver recognizes the detected tone if the tone's characteristics match the parameters for a tone in the table.

If the detected tone is not a ringback tone, the voice card notifies VBVoicethat the tone has been detected. This notification normally results in the call being moved from a Dial control to the control that handles this event.

If the detected tone is a ringback tone, the voice card continues to monitor the call for a defined number of cadences (ringbacks). If the tone is interrupted, the voice card assumes that the call has been answered and notifies the application program. If the voice card does not detect an answer within the defined number of cadences, the driver notifies the application program of a No Answer condition.

Training Your Card

Dialogic provides a utility PBXpert/32 which is used to customize call progress analysis with their 32-bit drivers. Tones can also be defined using INI file settings. The drivers default to performing call progress analysis over the (North American) telephone company lines, but can be reset for other types of calls using INI file settings.

Setting Number of Rings Before No Answer

The number of rings before a No Answer condition is returned is controlled by the call progress parameters for your card. Refer to your card's documentation for this information.

Disconnect Tone Detection

When a caller hangs up, loop current on the line is normally dropped momentarily to signal this event. If the voice board is connected directly to the phone line, it will detect the loop drop and follow its Disconnect procedures.

When the phone line is hooked to a PBX, the PBX may not provide a loop current drop to the card. This can present problems in determining when a caller has hung up. However, most PBXs do provide an audible tone when a call is disconnected. Global Tone detection can be used to learn this tone ("fastbusy") and report it as a loop current drop.

A fastbusy tone is interpreted by VBVoice as a disconnect. In order to set one of the tones to fastbusy, there is a setting called "fastbusy".

Setting fastbusy = ToneID - 1 would make VBVoice report a disconnect whenever this ToneID is detected.

Note: Even though the tone numbering is 1 based, fastbusy uses 0 based tones. So, fastbusy=2 means Tone_3 is detected as fastbusy and is treated as a disconnect. The default for fastbusy is -1, meaning none of the global tones is treated as fast busy.

Global Tone Detection (Dialogic only)

Global tone detection is normally used to aid in detecting a far-end disconnect when your voice card is positioned behind a PBX. The tones are specified using entries in the [Dialogic] section of VBVoice.INI. There are four different types of tones that can be created. These are:

The tones would appear in the VBVoice.INI file as:

Single tone:

Tone_# = <tone>, <deviation>, <leading or trailing>

Dual tone:

Tone_# = <tone 1>, <deviation for tone 1>, <tone 2>, <deviation for tone 2>, <leading or trailing>

Single tone with cadence:

Tone_# = <tone>, <deviation>, <ontime>, <on deviation>, <offtime>, <off deviation>, <repeat>

Debounce Time:

Rather than detecting a signal immediately, an application may want to wait for a period of time (debounce time) before detecting the signal. A tone must be present at a given frequency and for a period of time (debounce time) before it is detected. The debounce time is specified using the 'ontime' and 'on deviation' parameters, and by setting the 'off time', 'off deviation' and 'repeat' parameters to 0.

For 'ontime', specify 1/2 of the desired debounce time in tens of milliseconds (i.e. a value of 10 represents 100 ms) ; for 'on deviation', specify (-1/2) of the desired debounce time ; for 'offtime' specify 0, for 'off deviation' specify 0 and for repeat specify 0.

Single Tone:

Tone_# = <tone 1>, <deviation 1>, <on time>, <on time deviation>, <off time>, <off time deviation>, <repeat>

e.g.: 900Hz with 4000ms of debounce detection
Tone_# = 900,100,200,-200,0,0,0

Dual Tone:

Tone_# = <tone 1>, <deviation 1>, <tone 2>, <deviation 2>, <on time>, <on time deviation>, <off time>, <off time deviation>, <repeat>

eg: 900/1700Hz with 8000ms of debounce detection

Tone_#= 900,100,1700,100,400,-400,0,0,0

Defining Global Tones

In the tone definition above, the # should be replaced with a number. The first tone listed should be number 1, and each tone in sequence should be incremented by 1. A fax tone would be defined as: Tone_1=1100,50,leading. This would be a an 1100hz frequency, with a 50hz deviation (meaning 1050hz to 1150hz is considered acceptable), detected on the leading edge (or as it starts).

A fastbusy tone could be set as:

Tone_2=500,200,525,175,55,40,55,40,4

This would be a 500hz first frequency, with a deviation of 200hz. The second frequency is 525hz, with a deviation of 175hz. The cadence is 550ms on, 550 off, each with a 400ms deviation, and it must repeat four times to be considered valid.

Setting fastbusy=number of tone would make VBVoice automatically interpret this tone as a disconnect.

Training Voice cards

Dialogic manufactures cards that are country specific. Call progress analysis defaults to the tones used by the country for which the board was manufactured. When a card is used in a country other than that for which it was manufactured, or used behind a PBX, the call progress tones must be specified so that the Dialogic card can detect them.

Typically, hardware vendors provide their own utility programs for training their cards. Dialogic provides a utility called PBXpert; for more information, please review the PBExpert documentation, which may be found in the Dialogic Book Online, optionally installed with Dialogic System Release software.

If not using PBXpert, both Call Progress Analysis and Global Tone Detection can be specified using settings in the VBVoice.INI file, [Dialogic] section. To do this you will need to know the Frequency (or frequencies) of the tone, as well as its cadence (silence and non-silence times).