在Asterisk的配置文件中,有一个小配置文件amd.conf。这个配置文件涉及一个Asterisk的应用:AMD()。这个应用的作用是在外呼时,对方接通电话后,判断对方是一个录音电话还是真人。下面是AMD应用的说明资料,英文是原来的内容,中文是我自己加进去的。
- Synopsis
Attempt to detect answering machines.
Answering Machine Detection 录音电话状态检测
- Description
尝试在外呼的时候侦测对端是否应答。在呼叫已经被接通后调用这个函数,这个函数会修改两个通道变量:${AMDSTATUS}和${AMDCAUSE}。
检测一个录音电话(answering machine),看看对端是在机器状态,还是人接状态,还是挂机状态。
判断的条件是:
- initialSilence 初始化沉默时间
- greeting 欢迎辞
- afterGreetingSilence 欢迎辞后的沉默时间
- totalAnalysis Time 整个分析时间
- miniumWordLength 词最少长度
- betweenWordSilence 词间的沉默
- maximumNumberOfWords 一个词的最大时间
- silenceThreshold 多长时间被认为沉默
- maximumWordLength 最大词长
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