On 10/12/07, <b class="gmail_sendername">Yair Hakak</b> <<a href="mailto:yair@hakak.com">yair@hakak.com</a>> wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div> you'll have to excuse the ignorance (i'm a software guy, not a telcom guy..) </div>
<div> Is there any way to know if a channel has been answered by an automatic system (like voicemail) rather than a human being?</div>
<div> Specifically, I want to use a .call to make a call on a channel and only do something if a person answers, not a machine of any kind. Is this even possible, or is an answered channel an answered channel?</div></blockquote>
<div><br>Asterisk 1.4 has the AMD() application that uses several thresholds (which you can vary) to determine if the other end is a human or machine:<br><br> -= Info about application 'AMD' =-<br><br>[Synopsis]<br>
Attempts to detect answering machines<br><br>[Description]<br> AMD([initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime]<br> [|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords]<br> [|silenceThreshold])
<br> This application attempts to detect answering machines at the beginning<br> of outbound calls. Simply call this application after the call<br> has been answered (outbound only, of course).<br> When loaded, AMD reads
amd.conf and uses the parameters specified as<br> default values. Those default values get overwritten when calling AMD<br> with parameters.<br>- 'initialSilence' is the maximum silence duration before the greeting. If
<br> exceeded then MACHINE.<br>- 'greeting' is the maximum length of a greeting. If exceeded then MACHINE.<br>- 'afterGreetingSilence' is the silence after detecting a greeting.<br> If exceeded then HUMAN.
<br>- 'totalAnalysisTime' is the maximum time allowed for the algorithm to decide<br> on a HUMAN or MACHINE.<br>- 'minimumWordLength'is the minimum duration of Voice to considered as a word.<br>- 'betweenWordsSilence' is the minimum duration of silence after a word to
<br> consider the audio that follows as a new word.<br>- 'maximumNumberOfWords'is the maximum number of words in the greeting.<br> If exceeded then MACHINE.<br>- 'silenceThreshold' is the silence threshold.
<br>This application sets the following channel variable upon completion:<br> AMDSTATUS - This is the status of the answering machine detection.<br> Possible values are:<br> MACHINE | HUMAN | NOTSURE | HANGUP
<br> AMDCAUSE - Indicates the cause that led to the conclusion.<br> Possible values are:<br> TOOLONG-<%d total_time><br> INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
<br> HUMAN-<%d silenceDuration>-<%d afterGreetingSilence><br> MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords><br> LONGGREETING-<%d voiceDuration>-<%d greeting>
<br></div></div><br>-- <br>j.