问题
My Answering Machine Dectection detects answering machine as a Human.I have a ringtone of 7 seconds playing before playing the message, it just prompts for user to press a key , then process AMD
here is my AMD.conf
;
; Answering Machine Detection Configuration
;
[general]
initial_silence = 2250 ; Maximum silence duration before the greeting.
; If exceeded then MACHINE.
greeting = 1500 ; Maximum length of a greeting. If exceeded then MACHINE.
after_greeting_silence = 1250 ; Silence after detecting a greeting.
; If exceeded then HUMAN
total_analysis_time = 5000 ; Maximum time allowed for the algorithm to decide
; on a HUMAN or MACHINE
min_word_length = 100 ; Minimum duration of Voice to considered as a word
between_words_silence = 50 ; Minimum duration of silence after a word to consider
; the audio what follows as a new word
;maximum_number_of_words = 3 ; Maximum number of words in the greeting.
maximum_number_of_words = 8 ; Maximum number of words in the greeting.
; If exceeded then MACHINE
silence_threshold = 256
and in my logs this is what I see, when I let it go to voicemail:
-- AMD: initialSilence [2250] greeting [1500] afterGreetingSilence [1250] totalAnalysisTime [5000] minimumWordLength [100] betweenWordsSilence [50] maximumNumberOfWords [8] silenceThreshold [256]
-- AMD: Word detected. iWordsCount:1
-- AMD: Changed state to STATE_IN_SILENCE
-- AMD: Word detected. iWordsCount:2
-- AMD: Changed state to STATE_IN_SILENCE
-- AMD: Word detected. iWordsCount:3
-- AMD: Changed state to STATE_IN_SILENCE
-- AMD: Word detected. iWordsCount:4
-- AMD: Changed state to STATE_IN_SILENCE
-- AMD: HUMAN: silenceDuration:1260 afterGreetingSilence:1250
-- Executing [s@play-message-list:16] NoOp("SIP/xxxx.com_xxxx", ""AMD STATUS IS :"HUMAN"...CAUSE:"HUMAN-1260-1250") in new stack
It works without the ringtone , the voicemail is left.
回答1:
Unfortunately, answering machine detection is not exact science, but a lot of guessing. The results vary largely depending on the answering machine greetings, and on the way random people answer their phones. A human usually only says a few words after picking up the phone, like "hello", or "this is John", whereas an automated system (voicemail or ACD) will say a whole greeting immediately after answering. Therefore, a voicemail greeting like "Hi, leave me a message beep" has all chances to be detected as a human, whereas a real attendant answering with "Good morning, thank you for calling ACME Inc, how may i direct your call?" will probably get detected as a machine.
There's nothing wrong with your call flow or AMD settings. In your log, it looks like the "human" decision was made on the fact that there were only 4 words detected, followed by a silence of over 1250s, and the decision algorithm triggered based on the after_greeting_silence setting. Now imagine a voicemail greeting that says, slowly, "Hello, thanks for calling. [2s pause]. There is no one available to pick your call..." and so on. This particular case will not be detected properly with your settings. But as i said initially, there are no "universal" settings that can account for any greeting and human answering pattern in this world.
来源:https://stackoverflow.com/questions/15101015/asterisk-answering-machine-detection