Detecting Outgoing Call Answer

How VoiceGuide detects that an outgoing call has been answered depends on what telephone lines/trunks are used.



Dialogic cards can detect when a call has been answered and can distinguish if a call has been answered by a live person or by an answering machine. When the recipient of call starts saying something the Dialogic card can determine whether the call has been answered by a human or by a machine/voicemail. VoiceGuide will then run the appropriate script.

If answering machine detection is disabled then the Dialogic card will just wait for any spoken sounds (live or machine), and once it hears anything (or ringback has gone away) then the call will be reported as answered. The ringback tone for which the Dialogic card is to listen out for needs to be correctly specified. The default value will work for most ringbacks, but sometimes it will be necessary to set the ringback tone definition in ConfigLine.xml file.

If recipient of call does not say anything after answering the call (or there is just silence on the line) then the Dialogic card will deduce that the call has been answered only when it realizes that the 'ringback' signal has gone away.

If the Dialogic card does not correctly detect the ringback tone on the line, then after a timeout (about 8 seconds) it will report the outgoing call as connected even though the outgoing line is still ringing.


Digital T1/E1 ISDN, VoIP (SIP)

On T1/E1 and VoIP connections VoiceGuide will know the instant the call recipient picks up the handset or presses the 'answer call' button.

VoiceGuide script will be immediately started if Dialogic's answering machine detection is not enabled.

If Dialogic's answering machine detection is enabled, then Dialogic will wait to hear what is said on the line by the call recipient, and then based on what it hears Dialogic will determine whether the call has been answered by a human or by a machine. VoiceGuide will then run the appropriate script.

If answering machine detection is enabled and recipient of call does not say anything after answering the call, then the Dialogic card will timeout out after a few seconds and report the call as connected.

Similarly, an indication that the destination telephone is busy or disconnected is sent back to the digital card from the network immediately - allowing for quick abandoning of those calls and dialing of another number if needed.

The sound quality of VoIP connections is sometimes not as good as when Analog or Digital trunks are used, and hence the precision with which answering machines vs. live persons are detected is sometimes worse then on Analog or Digital systems.



Detecting Answering Machines

Dialogic can distinguish if a call has been answered by an answering machine or by a human. No other telephony cards/drivers can do that as well as Dialogic and that is why Dialogic platform is the best choice for systems which do outbound dialing.

VoiceGuide uses Dialogic's answering machine detection mechanism to distinguish whether a person or an answering machine has answered the call. Dialogic's answering machine detection uses frequency based analysis and detection of whether the speech is coming from live person or answering machine is made in about 1 second. If Dialogic informs VoiceGuide that it has detected an answering machine / voicemail, then VoiceGuide will wait for the sound prompt on the line to finish before playing the answering machine message or starting the script.

Answering Machine detection is enabled by default. The following keywords can be used in the "Answering Machine" text field to modify this behaviour:

RETRY VoiceGuide will hang up and dial again (up to the maximum number of redials allowed).
IGNORE VoiceGuide will start the "Live Person Answer" script if answering machine detected.
DISABLE Answering Machine detection is disabled. VoiceGuide will start the "Live Person Answer" script immediately when call is picked up.

If Answering Machine was detected, the $RV[AmWelcMsg]) will store the length of the Answering Machine message (in 100ms units).


False reports of an Answer Machine answer when a Live Peron actually answered the call:

On poor quality lines (usually low quality VoIP and mobile phone connections) Dialogic will sometimes mistakenly report that an answering machine/voicemail answered the call when in fact the call was answered by a real person. The reason for this is that the low quality of the connection makes the voice of the person answering the call sound very similar to the sound quality usually expected from an answering machine.

Background noise can also play a factor in false detection of answering machines (eg: radio playing in background, machine noise, etc).


False reports of a Live Person answer when an Answer Machine actually answered the call:

If the answering machines/voicemails welcoming message is recorded in high quality then it is possible for Dialogic to mistake it for a real person answering the call. The commonly used analog based answering machines are usually correctly detected by Dialogic.

One approach to work around false live person detections would be to first play in the "Live Answer" script a short message that says for example: "This is a call from XYZ" and then us a Record type module to start recording. Set the silence length that ends the recording in that module to be short - about one second or half a second. In the record module itself use a "on {silence} goto... " path and point the actual start of the script. When the recording finishes due to silence and the actual script starts then the first message played will be recorded on the answering machine/voicemail, or heard by the caller. This approach will result in system waiting till answering machine finishes playing, and people answering the call will only hear a short pause of 1-1.5 seconds between the fist and second sound file being played.


Fine tuning Dialogic Answer Detection Parameters

With VoiceGuide configuration files it is possible to set all entries in the Dialogic DX_CAP structure, which includes Dialogic's low level settings that affect the Answering Machine / Live Answer detection parameters:


There are about 30-40 settings in the DX_CAP structure, all of which are accessible, allowing total control (on a per-call basis) over how Dialogic performs the detection.

For more information on the fields in the DX_CAP structure please refer to Dialogic's documentation - the "Voice API" section.

To change settings from the default values used by VoiceGuide an XML style expression needs to be specified in the "Call Options" field. Example of the expression used is show below:



Detecting end of Answering Machine message:

Silence detection is used to detect end of answering machine messages.

The level and length of the silence that will trigger 'end-of-message' event is set in VG.IN in section [VGDialer], settings: AM_SilenceDetectLength and AM_SilenceDetectLevel.

This silence detection length and level can also be set on a per-call basis, using Result Variables: $RV[SilenceDetectLvl] and $RV[SilenceDetectLen].

eg: adding this to the "ResultVariables" field of the outgoing call:


will set the detect level to 5 (level can be between 1 and 100, 0 to turn off detection), and SilenceDetectLen's "30" setting represents 3 seconds (SilenceDetectLen is in 100ms units)


Recording of Answering Machine messages:

The latest answering machine message for call made on each port is saved as a "rec_am_*.wav" sound file in VoiceGuide's \temp\ subdirectory.

To have every answering machine message saved in \temp\ subdirectory, set: AM_RecUnique=1 in VG.INI, in section [VGDialer]



© Katalina Technologies Pty. Ltd.