Page 401 - Asterisk™: The Future of Telephony
P. 401
totalAnalysisTime
The maximum time allowed for the algorithm to decide whether the called party
is a human or an answering machine.
minimumWordLength
If the duration of the voice activity is shorter than minimumWordLength, it will not be
considered to be human speech.
betweenWordsSilence
The minimum duration of silence after a word to consider the audio that follows
as a new word.
maximumNumberOfWords
The maximum number of words detected in the greeting. If exceeded, then the
AMDSTATUS variable will set to MACHINE.
silenceThreshold
How sensitive the algorithm should be when detecting silence
; Use answering machine detection. If the called party
; is human, connect them to Bob. Otherwise, play a
; message and hang up
exten => 123,1,Answer()
exten => 123,n,AMD()
exten => 123,n,GotoIf($["${AMDSTATUS}" = "HUMAN"]?human:machine)
exten => 123,n(machine),WaitForSilence(2000)
exten => 123,n,Playback(asterisk-friend)
exten => 123,n,Hangup()
exten => 123,n(human),Verbose(3, We've got a human on the line!)
exten => 123,n,Playback(transfer)
exten => 123,n,Dial(SIP/bob)
exten => 123,n,Playback(im-sorry)
exten => 123,n,Hangup()
See Also
WaitForSilence()
Answer() Answers a channel, if it is ringing
Answer([delay])
Causes Asterisk to answer the channel if it is currently ringing. If the current channel
is not ringing, this application does nothing.
If a delay is specified, Asterisk will answer the call and then wait delay milliseconds
before going on to the next priority in the dialplan.
It is often a good idea to use Answer() on the channel before calling any other applica-
tions, unless you have a very good reason not to. There are several key applications that
require that the channel be answered before they are called, and may not work correctly
otherwise:
Answer() | 373