带有read()函数和dtmf的asterisk 11.9问题

时间:2014-06-16 19:34:59

标签: asterisk agi

我有两个星号服务器,一个是PBX inflash,另一个只是在CentOS上安装了Asterisk。我需要将这些东西从PBXINFLASH迁移到Asterisk 11.9.0。闪存中的PbX正在运行Asterisk 10.12.1。 我有一个拨号方案,它在Asterisk 10.12.1上工作得非常好,但是在我的带有Asterisk 11.9.0的新盒子上,DTMF或用户键输入不能用于拨号方案的一部分。我已经尝试为dtmf做调试两个服务器都没有相同的调试结果,也奇怪这是我在一台机器上的dialplan工作正常和其他部分工作。拨号计划是呼叫屏幕,其中呼叫者按1继续接收并且系统要求按1接受呼叫或挂断现在一个Asterisk 11.9.0来电按1输入正常但第二个用户/接收者按1不做什么都没有。

我正在使用sip帐户来测试我的dtmf。我已经换了我的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)

1 个答案:

答案 0 :(得分:0)

请注意,在您的拨号方案中,只有在完成所有折扣消息播放后才会进行用户输入

强烈建议仅使用$ {ARG1}播放,而所有其他(静态部分)记录到文件并在READ命令中使用

您可以通过在星号中启用dtmf debug来获取更多信息。

为此你需要编辑logger.conf