The purpose of this topic is to provide partners with information on how best to manage an outbound dialer call through its lifetime. As well as developing our own media stack Sytel has had lots of experience working with different partners to develop CTI interfaces that work with our dialing engine (Softdial CallGem™).
In producing the document we have tried to avoid media-specific and signalling system-specific terminology. The same fundamental rules apply to outbound call processing regardless of whether media delivery is RTP, TDM or analog, and whether signalling is SIP, or any variants of T1/E1 CAS or CCS signalling. (See Telephony Issues for more information on signalling specifics.)
There are some characteristics that are fundamental to a successful CTI integration with Softdial CallGem™:
The life cycle signalling events for an outbound are as follows:
Originator | Network |
---|---|
Launch Call to Network - ISDN setup / SIP invite | - |
- | Launch Acknowledged (optional) - ISDN Proceeding / SIP 100 |
- | Call Alerting - ISDN Alerting / SIP 180/183 / inband ring detected |
Drop on timeouts (ring, no ring) (optional) - ISDN Disconnect / SIP cancel | - |
- | Call dropped - ISDN idle / SIP <final cause> |
Originator | Network |
---|---|
Launch Call to Network - ISDN setup / SIP invite | - |
- | Launch Acknowledged (optional) - ISDN Proceeding / SIP 100 |
- | Call Alerting - ISDN Alerting / SIP 180/183 / inband ring detected |
- | Call Connected - ISDN connect / SIP 200 |
Originator drop (optional) - ISDN disconnect / SIP bye | - |
- | Call dropped - ISDN idle / SIP <final cause> |
These patterns of events expose some required functionality:
When a call is launched, timers for ring timeout and no ring need to be established.
The ring timeout is used to guarantee that a call will ring for a specified period at the called party.
It should be implemented as follows:
The no ring timer is used to terminate a call that has not presented any sort of ring.
It should be implemented as follows:
Implementing the No Ring timer also provides a sure-fire way to pick up if your carrier has disabled early media.
In order to detect inband signalling you will need to run a tone detection algorithm. Tone detection uses a fast fourrier transform (FFT) algorithm to pick out pure tone frequencies. These frequencies can then be compared against a tone table to get a frequency match for:
The document does not discuss the national tones for different geographies - a web search will uncover all the reference data you might need for this. There are, however, various strategies that you will need to employ in order to ensure your generic algorithm covers as many different scenarios as possible. The strategies to be aware of are:
Signal Type | Pattern |
---|---|
UK ring | .4s on, .2s off, .4s on, 2.0s off |
UK busy | 1s on, .375s off, .375s on, .375s off |
EU ring | 1s on, 4s off |
EU busy | .5s on, .5s off |
The basic algorithm for answer machine detection is the same the world over; it relies on detecting patterns of presence or absence of speech. For basic information on this please refer to Sytel's paper entitled Demystifying Answer Machine Detection.
AMD is of limited commercial value in reality although the industry at large persists in using AMD. Suitable campaigns for AMD are those with low connect rates and a low transaction value (and where abusing the dialed parties will not damage your proposition!)
In order to optimise AMD for best possible results there are various strategies one should employ. These are:
In a VoIP environment the carrier must deliver early media as the AMD algorithm relies on this for accurate detection.
This is another area of inexact science. Ideally you want to leave a message after the answer machine beep tone. However there is no such thing as a standard answer machine beep, or indeed there may not be a beep. This leaves you with 2 choices; either
Silence detection for answer machine message laydown monitors the line to detect a period of continuous silence, then starts to play the message. The period of silence will need to be configured to best fit your locale. Too short and pauses in the message may trigger; too long and the answer machine may hang up in response to silence. In our experience something between 3 and 5 seconds works but this should be tested.
An overall timer governing how long the silence detection should run for is also required. Again only trial in your local area will allow you to set a sensible default. If you sample the major carrier standard voicemail messages for length this will give some indication as to how to set the silence detection timer.