我有两台 asterisk 服务器,一台装有 PBX inflash,另一台仅安装在 CentOS 上的 Asterisk。我需要将这些东西从 PBXINFLASH 迁移到 Asterisk 11.9.0 。Flash 中的 PbX 正在运行 Asterisk 10.12.1。我有一个在 Asterisk 10.12.1 上运行良好的拨号方案,但在我的带有 Asterisk 11.9.0 的新盒子上,DTMF 或用户键输入在拨号方案的一部分中不起作用。我曾尝试为 dtmf 进行调试,两台服务器的调试结果都相同,但也很奇怪,这是我在一台机器上的拨号计划工作正常而其他部分工作。拨号计划是呼叫屏幕,其中呼叫者按 1 继续,接收者接听电话,系统要求按 1 接受呼叫或挂断现在一个 Asterisk 11.9.0 呼叫者按 1 输入工作正常,但第二个用户/接收者按 1 不做任何事情。
我正在使用 sip 帐户来测试我的 dtmf。我已经交换了我的 sip 帐户和 sip 软电话来测试仍然是同样的问题。以下是同一宏一半工作和后半部分不接受用户输入的两个部分
前半部分有效并接受用户输入。
exten => _X.,n,GotoIf($[${GROUP_COUNT(${CallerNum})} > 1]?Exceeded) ;Exceeded?
exten => _X.,n,Set(HngupCount=1);Hangup
exten => _X.,n,Flite(Please press 1 to speak with ${destUID})
exten => _X.,n,Read(yesno,sip-silence,1,,2,5)
exten => _X.,n,GotoIf($[${yesno} = 1]?continue:hangup)
后半部分不起作用或不接受用户输入:-
[macro-Dial2]
exten => s,1,Wait(1);ResetCDR
exten => s,n,Set(_StartTime=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
exten => s,n,ResetCDR
exten => s,n,Set(_RCount=1)
exten => s,n(Repeat),Flite(Hi there)
exten => s,n,Flite(${ARG1} wants to speak to you. Please press 1 to accept the call. 2 to forward the call to voicemail or 3 to reject the call.)
exten => s,n,Flite(we are connecting you)
exten => s,n,Read(ACCEPT,sip-silence,1,,1,5)
exten => s,n,Set(_RCount=$[${RCount} + 1])
exten => s,n,NoOp(Counter is ${RCount} -- the user selected: ${ACCEPT});
exten => s,n,Gotoif($[${ACCEPT} = 1]?accept:vm) ;Accept the call
exten => s,n(vm),Gotoif($[${ACCEPT} = 2]?voicemail:rej) ;forward the call to dummy voicemail (Actually just record the callers message)
exten => s,n(rej),Gotoif($[${ACCEPT} = 3]?reject) ;Reject the call and hangup
exten => s,n,Gotoif($[${RCount} > 2]?reject:Repeat) ; If no key pressed, just hangup the call and inform the User.
exten => s,n(accept),set(SecLeg=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
在下半场,它工作正常,直到以下几行:
exten => s,n,Flite(${ARG1} wants to speak to you. Please press 1 to accept the call. 2 to forward the call to voicemail or 3 to reject the call.)
exten => s,n,Flite(we are connecting you)