Asterisk Answering Machine Detection

孤者浪人 提交于 2020-01-15 19:11:08

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!