AMD audiofile feature

Hi Guys,

I’m using the new feature in AMD. I 'm using audofile feature with a specific audio file played in sametime that detection is done by asterisk. But I have an issue the AMD also “ear” the audio file played and because of that asterisk hangup the call thinking its an ANSWERING MACHINE

So I recorded the call and yes i’m hearing my audio played sametime than the detection that’s the issue.

Can someone could help ? and know how to accomplish that play a audio message sametime than the detection is done?

On Thursday 23 May 2024 at 13:13:26, flashcall via Asterisk Community wrote:

I’m using the new feature in AMD. I 'm using audofile feature

But I have an issue the AMD also “ear” the audio file played and because
of that asterisk hangup the call thinking its an ANSWERING MACHINE

So I recorded the call and yes i’m hearing my audio played sametime than
the detection that’s the issue.

How did you record the call?

Did you make sure to record the send and receive audio streams separately?

What is in fact answering the call and what audio is it generating?

Antony.


Was ist braun, liegt ins Gras, und raucht?
Ein Kaminchen…

                                               Please reply to the list;
                                                     please *don't* CC me.

I recorded the call using the recording function in VICIDIAL so maybe it has recorded both channel I did not think about that.
let me send you my config
the name of the audio file played below is M8PV21 I forced it inside the amd.conf
here its my config:

extensions.conf :

exten => 545454,1,Answer()
exten => 545454,n,AMD() 
exten => 545454,n,GotoIf($["${AMDSTATUS}"="HUMAN"]?HUMAN:MACHINE)
exten => 545454,n(MACHINE),Hangup()
exten => 545454,n(NOTSURE),Hangup()
exten => 545454,n,Dial(SIP/9001@IPADRESSMASK,60)
exten => 545454,n,Hangup()

AMD.conf :

;
; Answering Machine Detection Configuration
;

[general]
total_analysis_time = 5000	; Maximum time allowed for the algorithm to decide
				; on whether the audio represents a HUMAN, or a MACHINE
silence_threshold = 256		; If the average level of noise in a sample does not reach
				; this value, from a scale of 0 to 32767, then we will consider
				; it to be silence.
playback_file = M8PV21		; Audio file to play while AMD is running, so the caller
				; does not just hear silence. Note that specifying this here
				; will apply to ALL AMD runs, so you may wish to set it
				; in the dialplan as an argument to AMD() instead.
				; Default is no audio file (not to play anything).

; Greeting ;
initial_silence = 2500		; Maximum silence duration before the greeting.
				; If exceeded, then the result is detection as a MACHINE.
after_greeting_silence = 800	; Silence after detecting a greeting.
				; If exceeded, then the result is detection as a HUMAN
greeting = 1500			; Maximum length of a greeting. If exceeded, then the
				; result is detection as a MACHINE.

; Word detection ;
min_word_length = 100		; Minimum duration of Voice to considered as a word
maximum_word_length = 5000	; Maximum duration of a single Voice utterance allowed.
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 = 2	; Maximum number of words in the greeting
				; If exceeded, then the result is detection as a MACHINE

Log i see in asterisk logs :

[May 23 12:36:18]     -- Executing [8001@trunkinbound:1] AGI("SIP/srv4-00000016", "agi-DID_route.agi") in new stack
[May 23 12:36:18]     -- Launched AGI Script /usr/share/asterisk/agi-bin/agi-DID_route.agi
[May 23 12:36:18]     -- AGI Script Executing Application: (Monitor) Options: (wav,/var/spool/asterisk/monitor/MIX/20240523123618_8001_777)
[May 23 12:36:18]     -- <SIP/srv4-00000016>AGI Script agi-DID_route.agi completed, returning 0
[May 23 12:36:18]     -- Executing [545454@default:1] Answer("SIP/srv4-00000016", "") in new stack
[May 23 12:36:18]        > 0x7fb4f80373a0 -- Strict RTP switching to RTP target address IPADRESSMASKED:11992 as source
[May 23 12:36:18]     -- Executing [545454@default:2] AMD("SIP/srv4-00000016", "") in new stack
[May 23 12:36:18]     -- AMD: SIP/srv4-00000016 777 (N/A) (Fmt: ulaw)
[May 23 12:36:18]     -- AMD: initialSilence [2500] greeting [1500] afterGreetingSilence [800] totalAnalysisTime [5000] minimumWordLength [100] betweenWordsSilence [50] maximumNumberOfWords [2] silenceThreshold [256] maximumWordLength [5000]
[May 23 12:36:18]     -- <SIP/srv4-00000016> Playing 'M8PV21.slin' (language 'en')
[May 23 12:36:18]     -- AMD: Channel [SIP/srv4-00000016]. Changed state to STATE_IN_SILENCE
[May 23 12:36:19]     -- AMD: Channel [SIP/srv4-00000016]. Word detected. iWordsCount:1
[May 23 12:36:19]     -- AMD: Channel [SIP/srv4-00000016]. Detected Talk, previous silence duration: 760
[May 23 12:36:19]     -- AMD: Channel [SIP/srv4-00000016]. Changed state to STATE_IN_SILENCE
[May 23 12:36:19]     -- AMD: Channel [SIP/srv4-00000016]. Detected Talk, previous silence duration: 80
[May 23 12:36:19]     -- AMD: Channel [SIP/srv4-00000016]. Word detected. iWordsCount:2
[May 23 12:36:20]     -- AMD: Channel [SIP/srv4-00000016]. Detected Talk, previous silence duration: 20
[May 23 12:36:20]     -- AMD: Channel [SIP/srv4-00000016]. Changed state to STATE_IN_SILENCE
[May 23 12:36:20]     -- AMD: Channel [SIP/srv4-00000016]. Detected Talk, previous silence duration: 100
[May 23 12:36:20]     -- AMD: Channel [SIP/srv4-00000016]. Word detected. iWordsCount:3
[May 23 12:36:20]     -- AMD: Channel [SIP/srv4-00000016]. ANSWERING MACHINE: iWordsCount:3
[May 23 12:36:20]     -- Executing [545454@default:3] GotoIf("SIP/srv4-00000016", "0?HUMAN:MACHINE") in new stack
[May 23 12:36:20]     -- Goto (default,545454,4)
[May 23 12:36:20]     -- Executing [545454@default:4] Hangup("SIP/srv4-00000016", "") in new stack
[May 23 12:36:20]   == Spawn extension (default, 545454, 4) exited non-zero on 'SIP/srv4-00000016'
[May 23 12:36:20] WARNING[32503][C-0000002d]: func_hangupcause.c:138 hangupcause_read: Unable to find information for channel
[May 23 12:36:20]     -- Executing [h@default:1] AGI("SIP/srv4-00000016", "agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----16--------------------)") in new stack
[May 23 12:36:20]     -- <SIP/srv4-00000016>AGI Script agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----16--------------------) completed, returning 0

On Thursday 23 May 2024 at 13:43:20, flashcall via Asterisk Community wrote:

I recorded the call using the recording function in VICIDIAL so maybe it
has recorded both channel I did not think about that.

Given that the recording filename contains the word “MIX”, I think that’s very
likely:

/var/spool/asterisk/monitor/MIX/20240523123618_8001_777

Anyway, you’ve configured:

maximum_number_of_words = 2 ; Maximum number of words in the greeting
; If exceeded, then the result is detection as a MACHINE

and your log file shows:

[May 23 12:36:20] – AMD: Channel [SIP/srv4-00000016]. Word detected.
iWordsCount:3
[May 23 12:36:20] – AMD: Channel [SIP/srv4-00000016]. ANSWERING
MACHINE: iWordsCount:3

So, it seesm to have done what you asked for.

The missing information now is:

On Thursday 23 May 2024 at 13:33:20, Pooh via Asterisk Community wrote:

What is in fact answering the call and what audio is it generating?

Antony.


Most people have more than the average number of legs.

                                               Please reply to the list;
                                                     please *don't* CC me.

Where’s the HUMAN label at? It can’t jump to a label that doesn’t exist BTW so it will go to the next priority which is to hangup.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.