Asterisk cmd AMD

Answering Machine Detect (AMD)


Possible bugs.

Synopsis

Attempts to detect answering machines.

Description

AMD([|initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime][|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords][|silenceThreshold])

This application attempts to detect answering machines at the beginning of outbound calls.
Simply call this application after the call has been answered (outbound only, of course).
When loaded, AMD reads amd.conf and uses the parameters specified as default values.
Those default values get overwritten when calling AMD with parameters.

  • 'initialSilence' is the maximum silence duration before the greeting. If exceeded then MACHINE.
  • 'greeting' is the maximum length of a greeting. If exceeded then MACHINE.
  • 'afterGreetingSilence' is the silence after detecting a greeting. If exceeded then HUMAN.
  • 'totalAnalysisTime' is the maximum time allowed for the algorithm to decide on a HUMAN or MACHINE.
  • 'minimumWordLength'is the minimum duration of Voice to considered as a word.
  • 'betweenWordsSilence' is the minimum duration of silence after a word to considere the audio what follows as a new word.
  • 'maximumNumberOfWords'is the maximum number of words in the greeting. If exceeded then MACHINE.
  • 'silenceThreshold' is the silence threshold.

This application sets the following channel variable upon completion:
AMDSTATUS - This is the status of the answering machine detection.
Possible values are:
MACHINE | HUMAN | NOTSURE | HANGUP
AMDCAUSE - Indicates the cause that led to the conclusion.
Possible values are:
TOOLONG-<%d total_time>
INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
HUMAN-<%d silenceDuration>-<%d afterGreetingSilence>
MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords>
LONGGREETING-<%d voiceDuration>-<%d greeting>

Installation

NOTE: app_amd is included in Asterisk as of version 1.4.

You'll need the source code for your version (I'm able to compile in 1.2.9.1):
as 'root' user
cd /usr/src
rm -rf asterisk
wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.7.1.tar.gz (or whatever your version, e.g. asterisk-1.2.9.1.tar.gz)
tar -zxvf asterisk-1.2.7.1.tar.gz
mv asterisk-1.2.7.1 asterisk

  1. Download to /etc/asterisk amd2.conf or amd.conf
  2. Execute 'mv amd2.conf amd.conf', if necessary
  3. Execute 'dos2unix amd.conf'
  4. Execute 'vi amd.conf' and change [AnsweringMachineDetector] to [amd]
  5. Download to /usr/src/asterisk/apps app_amd2.c or app_amd2.c
  6. Execute 'mv app_amd2.c app_amd.c'
  7. Execute 'dos2unix app_amd.c'
  8. Ensure astxs is executable: 'chmod +x /usr/src/asterisk/contrib/scripts/astxs'
  9. Install and load app_amd.c via '/usr/src/asterisk/contrib/scripts/astxs -install -autoload app_amd.c'
  10. That's it!

To the Playground!

User comment (Feb '08): The general feedback we get is that most call centres prefer to turn off AMD due to the delay before connecting a call to an agent. BTW - we have a customer who prefers have the agent listen to the answering machine and leave a message as they find that around 25% of messages, which sound sufficiently personalized, actually get returned!!! Amazing.
The only other suggestion I have would be to tweak the AMD settings such that it's far less accurate but much quicker to connect to the agent (therefore the filtering success would be lower). This is the approach that Dialogic have taken with their HMP product wherein they offer a choice between 2 styles of AMD - rapid V's accurate.


Tips

Best results are achieved by placing a Background() before AMD(); typically the arguments to Background() contains a very short and silent audio file. This way the accuracy of AMD() is reported to be increased considerably.

Example 1

Asterisk 1.2
[outbound]
exten => s,1,NoCDR
exten => s,n,AMD
exten => s,n,GotoIf($[${AMDSTATUS}=AMD_PERSON]?humn:mach)
exten => s,n(mach),WaitForSilence(2500)
exten => s,n,Playback(message-when-machine)
exten => s,n,Hangup
exten => s,n(humn),WaitForSilence(500)
exten => s,n,Playback(message-when-human)
exten => s,n,Hangup

Asterisk 1.4
[outbound]
exten => s,1,NoCDR
exten => s,n,AMD
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
exten => s,n(mach),WaitForSilence(2500)
exten => s,n,Playback(message-when-machine)
exten => s,n,Hangup
exten => s,n(humn),WaitForSilence(500)
exten => s,n,Playback(message-when-human)
exten => s,n,Hangup


See also:


137666 views strong.


Answering Machine Detect (AMD)


Possible bugs.

Synopsis

Attempts to detect answering machines.

Description

AMD([|initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime][|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords][|silenceThreshold])

This application attempts to detect answering machines at the beginning of outbound calls.
Simply call this application after the call has been answered (outbound only, of course).
When loaded, AMD reads amd.conf and uses the parameters specified as default values.
Those default values get overwritten when calling AMD with parameters.

  • 'initialSilence' is the maximum silence duration before the greeting. If exceeded then MACHINE.
  • 'greeting' is the maximum length of a greeting. If exceeded then MACHINE.
  • 'afterGreetingSilence' is the silence after detecting a greeting. If exceeded then HUMAN.
  • 'totalAnalysisTime' is the maximum time allowed for the algorithm to decide on a HUMAN or MACHINE.
  • 'minimumWordLength'is the minimum duration of Voice to considered as a word.
  • 'betweenWordsSilence' is the minimum duration of silence after a word to considere the audio what follows as a new word.
  • 'maximumNumberOfWords'is the maximum number of words in the greeting. If exceeded then MACHINE.
  • 'silenceThreshold' is the silence threshold.

This application sets the following channel variable upon completion:
AMDSTATUS - This is the status of the answering machine detection.
Possible values are:
MACHINE | HUMAN | NOTSURE | HANGUP
AMDCAUSE - Indicates the cause that led to the conclusion.
Possible values are:
TOOLONG-<%d total_time>
INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
HUMAN-<%d silenceDuration>-<%d afterGreetingSilence>
MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords>
LONGGREETING-<%d voiceDuration>-<%d greeting>

Installation

NOTE: app_amd is included in Asterisk as of version 1.4.

You'll need the source code for your version (I'm able to compile in 1.2.9.1):
as 'root' user
cd /usr/src
rm -rf asterisk
wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.7.1.tar.gz (or whatever your version, e.g. asterisk-1.2.9.1.tar.gz)
tar -zxvf asterisk-1.2.7.1.tar.gz
mv asterisk-1.2.7.1 asterisk

  1. Download to /etc/asterisk amd2.conf or amd.conf
  2. Execute 'mv amd2.conf amd.conf', if necessary
  3. Execute 'dos2unix amd.conf'
  4. Execute 'vi amd.conf' and change [AnsweringMachineDetector] to [amd]
  5. Download to /usr/src/asterisk/apps app_amd2.c or app_amd2.c
  6. Execute 'mv app_amd2.c app_amd.c'
  7. Execute 'dos2unix app_amd.c'
  8. Ensure astxs is executable: 'chmod +x /usr/src/asterisk/contrib/scripts/astxs'
  9. Install and load app_amd.c via '/usr/src/asterisk/contrib/scripts/astxs -install -autoload app_amd.c'
  10. That's it!

To the Playground!

User comment (Feb '08): The general feedback we get is that most call centres prefer to turn off AMD due to the delay before connecting a call to an agent. BTW - we have a customer who prefers have the agent listen to the answering machine and leave a message as they find that around 25% of messages, which sound sufficiently personalized, actually get returned!!! Amazing.
The only other suggestion I have would be to tweak the AMD settings such that it's far less accurate but much quicker to connect to the agent (therefore the filtering success would be lower). This is the approach that Dialogic have taken with their HMP product wherein they offer a choice between 2 styles of AMD - rapid V's accurate.


Tips

Best results are achieved by placing a Background() before AMD(); typically the arguments to Background() contains a very short and silent audio file. This way the accuracy of AMD() is reported to be increased considerably.

Example 1

Asterisk 1.2
[outbound]
exten => s,1,NoCDR
exten => s,n,AMD
exten => s,n,GotoIf($[${AMDSTATUS}=AMD_PERSON]?humn:mach)
exten => s,n(mach),WaitForSilence(2500)
exten => s,n,Playback(message-when-machine)
exten => s,n,Hangup
exten => s,n(humn),WaitForSilence(500)
exten => s,n,Playback(message-when-human)
exten => s,n,Hangup

Asterisk 1.4
[outbound]
exten => s,1,NoCDR
exten => s,n,AMD
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
exten => s,n(mach),WaitForSilence(2500)
exten => s,n,Playback(message-when-machine)
exten => s,n,Hangup
exten => s,n(humn),WaitForSilence(500)
exten => s,n,Playback(message-when-human)
exten => s,n,Hangup


See also:


137666 views strong.


Created by: Blumagic, Last modification: Thu 10 of May, 2012 (19:25 UTC) by admin
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+