Detecting Call Answer
How VoiceGuide
will be alerted that an outgoing call has been answered depends on
what hardware is used with VoiceGuide.
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 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".
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 noise other
then ringback, 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 defintion
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
Just like Dialogic Analog cards,
the Dialogic Digital 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. 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 then the digital card will report the call as
connected immediately when the recipient of the call picks up their
handset. The digital signal informing the Dialogic card of this
event takes a fraction of a second to travel from the recipient of the
call back to the digital card.
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.
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.
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.