Configuring answering machine detection
IBM SPSS Dialer supports a simple answering machine detection (AMD) that can be useful when dialing residential numbers. It is based on the observation that human greetings are usually short, whereas answering machine messages are long. When an auto-dialed participant record is dialed, and IBM SPSS Dialer detects that an answering machine picked up the call, the call is automatically ended with the Answering Machine call outcome when the UNICOM Intelligence Interviewer - Server Admin is properly configured to support the feature. Answering machine detection is currently configured through the DPM Explorer tool.
When answering machine filtering is in effect (amd=1), calls are only connected to an interviewer if the greeting is shorter than max. All other calls are dispositioned as answering machines and hung-up by the dialer. The dialer can optionally play a sound file (amfile) to the answering machine.
A DSP listens for the greeting. The DSP asserts voice when the received audio signal raises above a threshold (db, dBm, decibels relative to 1 mW power). Start-of-voice also starts timer max.
▪If the DSP asserts end-of-voice before timer max expires, the call is connected to an interviewer. Since the interviewer does not hear the respondent’s greeting, the dialer plays a distinct beep WBeep that informs the interviewer to start talking.
▪If timer max expires before end-of-voice is asserted, the dialer dispositions “Answering machine”:
– If no amfile is specified, the dialer hangs up the call.
– Otherwise the dialer awaits end-of-voice before playing amfile.
The dialing algorithm proceeds in dialing further calls, without waiting for the playback to complete.
Notes
▪This section assumes that you have a working knowledge of DPM Explorer. For more information, see
DPM Explorer.
▪Simple answering machine detection is not suitable when dialing business numbers with long greetings, mobile numbers with loud background noise, or persons who might be slow in answering the phone.
To configure answering machine detection
1 Start DPM Explorer:
Code\Tools\VB.NET\DPM Explorer.Net\DPMExplorer.exe
2 Create the following properties under Site > Properties > DefaultCatiProjectProperties:
AmdMode
The answering machine detection mode. Possible values include: Disabled, Filtering, and Calibration.
AmdParameters
The answering machine detection parameters. All of the optional parameters (off, max, on, db, and so on) are encapsulated in this property. For example, max:4.5,on:11(using commas as the delimiter).
AmFile
The name of the sound file to play for an answering machine, including the pathname (relative to AudioDir on the IBM SPSS Dialer). You are not required to provide a value for this setting.
3 Exit DPM Explorer.
The answering machine detection properties affect all new projects. When an auto-dialed participant record is dialed, and a dialer detects that an answering machine picked up the call, the call automatically ends with the Answering Machine call outcome.
Existing projects
For existing projects, add the answering machine detection properties to each project: Projects > <ProjectName> > mrInterview.
False positives
False positives are humans that were misinterpreted as answering machines, in which case the dialer hangs up the call, or plays the amfile. The main causes of false positives are:
▪The human speaks a long greeting (> max). This typically happens when reaching a business number. If an amfile file is specified, the respondent will hear it.
▪The human has loud background noise (permanently above the db threshold). This typically occurs with car phones. The playback of amfile starts when the AMD algorithm has waited for end-of-greeting for off seconds. However, this timer needs to be longer than the longest AM greeting (~30 seconds), so it is unlikely that the respondent will wait long enough to hear amfile.
Humans can also be misinterpreted as “No audio”. This occurs when:
▪There is no audio connection (for example, because the battery in the respondent’s phone is running low). After on seconds without start-of-voice, the dialer hangs up (call outcome: No audio).
▪The human picks up the phone but does not start speaking immediately (for example, the respondent is busy, or due to a disability). After on seconds, the dialer hangs up.
▪The greeting was spoken very softly (below the db threshold). Usually the respondent speaks up louder, but if the voice is not raised the dialer hangs up after on seconds. The dialer plays the amfile to “No audio” numbers unless the setting is disabled by option cp:-S (hangup immediately if silence).
Qualification timers
Spoken words contains short gaps in the audio due to articulation. The dialer ignores gaps that are shorter than a qualification timer qoff; that is, the end-of-voice is asserted when qoff expires.
The dialer utilizes two qualification timers:
▪qoff, for humans, determines when a call is connected to an interviewer. The settings should be short (<0.8 seconds); otherwise the respondent might become impatient and hang up. However, a qoff that is too short causes many false negatives because the timer fails to bridge well-articulated greetings.
▪qam, for answering machines, determines when amfile is played. It should be long (>2 seconds), otherwise the playback might start before the answering machine is ready to record it.
Calibration mode
Calibration mode is a means to determine the optimum AMD parameters. In calibration mode, all calls are connected to interviewers (just as when AMD is disabled). The AMD measures the duration of the respondent’s initial greeting. During this phase, the interviewer can hear the respondent, but cannot talk. When the AMD measurement is finished (end-of-voice), the interviewer hears a short beep (WBeep) and audio is connected in both directions.
In cases of long initial silence (longer than coff seconds) or persistent voice (longer than con seconds), the AMD measurement is aborted and audio is connected in both directions. This makes it possible to try out different values of db and qoff without losing the contacts.
The greet time measured by AMD is sent to the application and recorded in call.log. To determine the reliability of a given max setting for the AMD call dispositions, make a frequency distribution of the call outcomes according to the following table:
Interviewer’s disposition | AMD reported greet value |
---|
| greet = 0 | greet ≤ max | greet > max |
---|
Human (proceed, appointment, refusal, and so on) | False positive? [1] | Correct (human) | False positive |
Answering machine | Semi-correct (AM) [2] | False negative | Correct (AM) |
[1] greet=0 can be an artifact from using a too small coff value, such that the AMD measurement was abandoned before the greeting started.
[2] greet=0 starts playback of amfile, but possibly too early, before the answering machine is ready to record it.
Summary of AMD modes and parameters
Syntax
mode , param1 : value , param2 : value2...
Example
amd = 1,qoff:0.40,log:1
Mode values
0
Meaning: Disabled
No AMD analysis (but the Call Progress parameter cp is used).
1
Meaning: Filtering
Only “live” calls are through-connected to an interviewer; otherwise the amfile is played.
2
Meaning: Calibration
Calls are connected in listen-only mode during AMD analysis; the result is reported in greet.
Parameter values
Name | Default | Unit | Description | Action if exceeded | Applies to |
---|
off | 6.0 | seconds | Max silence at start of call | Hangup QSAMP_NO_AUDIO | Filtering |
coff | 4.5 | seconds | Max silence at start of call | Connect two-way audio | Calibration |
max | 1.15 | seconds | Max greeting from human [1] | Hangup QSAMP_ANSMC | Filtering |
on | 60.0 | seconds | Max greeting from AM | Play amfile to AM | Filtering |
con | 3.0 | seconds | Max greeting measured | Connect two-way audio | Calibration |
qoff | 0.35 | seconds | Qualification timer for end of voice [2] | Connect QSAMP_CONNECTED | Both |
qam | 2.9 | seconds | Qualification timer for starting playback | Play amfile | Filtering |
db | -34.0 | dBm | Silence threshold (range -46 to -34 dBm) [3] | Start max timer | Both |
log | 0 | 0 or 1 | If =1, report greet and silence times (milliseconds) in call.log [4] | | Both |
cp | | | Override dialer.ini call progress analysis completion criteria CpComplete [5] | | All |
[1] max recommended range from 0.9 seconds (aggressive, many false positives) to 2.1 seconds (conservative, many false negatives).
[2] qoff recommended range from 0.3 seconds (many false negatives) to 1.1 (detects most AM, but connects humans very slowly to an interviewer).
[3] db should be high (insensitive) to avoid detecting people in noisy environments as answering machines (false positives).
[4] log times are measured on the dialer PC and can differ slightly from the greet times measured by the DSP.
[4] log times are measured on the dialer PC and can differ slightly from the greet times measured by the DSP.
[5] cp should normally not be applied for AMD; the only relevant parameter is cp:-S. If persistent silence is detected, hangup call without playing amfile.
AMD parameter for call progress analysis
The cp parameter specifies the actions to take when detecting call progress tones, overriding the default call progress analysis completion criteria CpComplete in the dialer.ini file. Application areas:
▪Calling countries with non-standard ringback or “number unobtainable” tones.
▪Calling networks that announce tariff information at the start of the call.
▪Calling subscribers with personalized ringback tones (music or announcements).
▪In order to achieve special effects, such as recording of in-band announcements.
Syntax
cp: actionID event... [ actionID event... ] ...
Default
cp:-b-c-d-f!r:t:v-B-C+D-F-T
Examples
cp:=vea
Ignore pre-CONNECT voice events (for instance, personalized ringback tones).
cp:*t*v
Record recfile when detecting tritone or start-of-voice (until stopped by noansw timeout).
cp:+v
Connect to extension when detecting start-of-voice.
Call progress events
Each event is identified by a letter; pre-CONNECT events in lower case, post-CONNECT in upper case. Each letter or group of letters is preceded by an action identifier (see the legend below the table). The post-CONNECT events are only detected in AMD filtering or calibration mode (amd=1 or amd=2).
| | Default | |
---|
| pre | post | Call outcome if action is ‘-’ or ‘:’ |
---|
Call progress event | connect | Dialer | Interviewer Phone | Quancept |
---|
d | Dial tone (steady tone for >3 s) | -d | +D | QSAMP_BADNUMBER | QSAMP_BUSY | d_badsyn |
r | Ringback pulse (duration 1.5 - 3 s) | !r | =R | QSAMP_RINGING | | |
q | End of ringback (no pulse for >8 s) | =q | =Q | QSAMP_NOANSW | coNoAnswer | d_na |
b | Busy tone (cadence or “precise” tone: see note 3) | -b | -B | QSAMP_BUSY | coBusy | d_busy |
c | Congested / reorder tone (cadence) | -c | -C | QSAMP_FASTBUSY | coFastBusy | d_sitout |
t | Tritone (Special Information Tone) | :t | -T | QSAMP_TRITONE | coTriTone | d_sitout |
f | Fax/modem tone | -f | -F | QSAMP_MODEM | coFaxModem | d_modem |
v | Start of voice (diffuse energy above db dBm) | :v | =V | QSAMP_ANNOUNCEMT | coAnnouncement | d_sitout |
e | End of voice (for qoff seconds) | =e | =E | QSAMP_ANNOUNCEMT | coAnnouncement | d_sitout |
a | Voice for more than max seconds | =a | =A | QSAMP_ANNOUNCEMT | coAnnouncement | d_sitout |
s | Silence; no voice for off seconds (see note 4) | n/a | =S | QSAMP_ANNOUNCEMT | coNoAudio | |
w | Call waiting, ignore voice events (see note 5) | =w | =W | QSAMP_BUSY | coBusy | d_busy |
1 Call outcome QSAMP_RINGING does not map to a supported CallOutcome in Interviewer Phone 5.6.
2 Call outcomes can be mapped to other tipcode values in section [qsamp map] in the qts-sms.ini file.
3 “Precise” tone means the 480 + 620 Hz busy tone of the North American Precise Audible Tones Plan.
4 Condition S (silence) is only generated in AMD filtering or calibration mode (amd=1 or amd=2).
5 Condition W (waiting) is generated by signaling events with the action announcemt in causes.cfg.
Action identifiers
Identifier | Description |
---|
- | Hangup immediately |
! | Start noansw timer |
: | Hangup if no CONNECT is received within two seconds |
^ | Stop CP analysis (ends AMD, connecting the extension) |
+ | Connect to extension even if no CONNECT was received |
= | No action (can be used to override default actions) |
* | Start recording (for use with recfile option beg:3) |
See also