Detecting Outgoing Call
Answer
How VoiceGuide
will be alerted that an outgoing call has been answered depends on
what hardware is used with VoiceGuide, and whether answering
machine detection is enabled.
Dialogic Cards - Analog
Dialogic cards can detect when a
call has been answered and can fairly reliably distinguish if a
call has been answered by a live person or by an answering machine.
As soon as the recipient of call starts saying something the
Dialogic card can tell 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
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 it will report call as connected. 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 using VG for Dialogic).
The TID_RNGB1 tone definition needs to be used. There is another
ringback tone definition available - TID_RNGB2 - but we have found
that many cards will not detect the ringback defined in TID_RNGB2
correctly.
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.
Dialogic
Cards - Digital : T1 and E1, ISDN
On digital connections the
Dialogic card receives an indication from Telco the instant the
call recipient picks up the handset.
If answering machine detection is
disabled then then the digital card will report the call as
connected immediately when the recipient of the call picks up their
handset, and the script will be started.
If answering machine detection is
enabled then, just like Dialogic Analog cards, the Dialogic Digital
cards will be able to determine whether the call has been answered
by a human or by a machine as soon as the recipient of call starts
saying something. 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 of receiving the 'handset is offhook' signal 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.
VoIP
On VoIP connections VoiceGuide
receives an indication from Telco the instant the call recipient
picks up the handset - similar to T1/E1 ISDN based systems.
Answering machine detection is
made once spoken sounds are heard.
The sound quality of many VoIP
connections is usually 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 worse then on Analog or Digital
systems.
Voice
Modems
Voice modems
cannot tell when a call has been answered. Immediately after
finishing dialing they will advise VoiceGuide that a call has been
connected, regardless even of whether the destination number has
started ringing or not.
This is why
when using modems VoiceGuide v5 will on outbound calls start
playing a message in a loop which asks the recipient of the call to
"press 1 to accept the call".
Detecting Answering
Machines
Dialogic cards can detect if a
call has been answered by an answering machine or by a human. No
modem or other telephony card can do that and that is why Dialogic
cards are the best (and only) practical choice for systems which
use 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 less then a second. If Dialogic
informs VoiceGuide that it has detected an answering machine then
VoiceGuide will wait for the speaking 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:
If RETRY is
specified in this field then VoiceGuide will attempt dialing again
if an answering machine is encountered (up to the maximum number of
redials allowed).
If
IGNORE is specified in this field then VoiceGuide
will ignore Dialogic's advice that an answering machine was
detected and will just start the script/file specified in the "when
a real person answers" text box.
If
DISABLE is specified in this field then VoiceGuide
will disable Dialogic's detection of when the call has been
answered.
Overall, if a large number of
calls are made to different numbers the Dialogic card should
usually correctly detect whether a live person or an answering
machine in over 95% of the time.
False reports of an Answer Machine
answer when a Live Peron actually answered the call:
On poor quality lines (usually low
quality cellular phone connections) the Dialogic card will
sometimes mistakenly think an answering machine has 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. We had a case
where one site was playing a radio quite loud in the room where the
phone was being answered and the Dialogic card was pretty regularly
mistaking the background radio conversations for an answering
machine. In another case the loud noise of a fan right next to the
telephone resulted in false answering machine detections.
To overcome this problem you may
specify that instead of just playing a .WAV file when an answering
machine is detected a script is ran instead. From within a script
you can find out how long the answering machine message was
(using $RV[AmWelcMsg]),
and if it turns out that it was quite short (say less then 2
seconds) then you may decide to ignore Dialogic's decision that
this is an answering machine and force VoiceGuide to jump to the
script for "Live Person" instead.
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 the Dialogic card to mistake it for a real
person answering the call. The normal every-day analog based
answering machines are usually correctly detected by
Dialogic.
One approach to work around this
would be to first play in the "Live Answer" script a short message
that says "Please wait" and then start recording. Set silence
length to be short beforehand - say about half a second. In the
record module use a "on {silence} goto... " path and point to start
of 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, or heard by the
caller. This approach effectively uses the record module will wait
till answering machine finishes playing, but will result in a
slightly delay in playing of the first message to live people. Some
people do not place a Play module before this record module, so the
live caller would just experience a half second delay before the
main script is started.
Fine tuning Dialogic Answer Detection Parameters
With VoiceGuide v7 it is possible
to access all entries in the Dialogic DX_CAP structure, which
includes Dialogic's low level settings that affect the Answering
Machine / Live Answer detection timeouts.:
ca_cnosig
ca_noanswer
ca_pamd_failtime
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 the Dialogic card 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:
<DX_CAP><ca_cnosig>500</ca_cnosig><ca_pamd_failtime>200</ca_pamd_failtime></DX_CAP>