我有一个Asterisk服务器需要重新配置。 它是由外部承包商建造的,我需要对其进行一些更改。 现在,它所做的只是接听电话,接受7位数的代码,然后挂断。 在后端,它记录呼叫的时间戳、呼叫者 ID 和 7 位代码。
我们遇到的是有些人没有输入7位数的密码,或者他们花了太长时间。 然后系统只是重新启动,并将继续无限循环,直到它们输入 7 位数字。 最近,呼叫者认为系统坏了,当他们没有输入 7 位代码时。
我想弄清楚该怎么做的是,当系统必须返回到开头时,它可能会说"你只输入了 6 位数字。请再试一次。 或者类似的东西。 我不是 100% 确定如何将其添加到当前配置中。 以下是我们目前拥有的:
[inbound]
exten => 1234567890,1,Answer
exten => 1234567890,2,Set(COUNTER=4)
exten => 1234567890,3,Set(COUNTER=$[${COUNTER} -1 ])
exten => 1234567890,4,NoOp(${COUNTER})
exten => 1234567890,5,GotoIf($[${COUNTER} > 0 ]?10:122)
exten => 1234567890,10,Wait(1)
exten => 1234567890,11,read(SCODE,EnterCode,7,)
exten => 1234567890,12,GotoIf($[${LEN(${SCODE})}=7]?13:3)
exten => 1234567890,13,Playback(YouEntered)
exten => 1234567890,n,SayDigits(${SCODE})
exten => 1234567890,n,read(SCHOICE,correctpressone,1,)
exten => 1234567890,n,Gotoif($[ ${SCHOICE} = 1 ]?20:1)
exten => 1234567890,20,NoOp(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)} ${SCODE} ${CALLERID(num)})
exten => 1234567890,n,TrySystem(/bin/echo ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}, ${SCODE}, ${CALLERID(num)} >> /opt/codes.log)
exten => 1234567890,n,Playback(SuccessfullyActivate)
exten => 1234567890,n,Hangup()
exten => 1234567890,122,Playback(tt-somethingwrong)
exten => 1234567890,n,Hangup()
感谢您对此问题的任何帮助...
像这样:
exten => 1234567890,12,GotoIf($[${LEN(${SCODE})}=7]?13:200)
exten => 1234567890,200,Playback(your_inpout_too_short)
exten => 1234567890,201,Goto(3)
顺便说一句,你的拨号计划质量很差,看起来做它的人也没有经验。