0

I have an Asterisk server that I need to reconfigure. It was built by an outside contractor, and I need to make some changes to it. Right now, all it does is answer a call, accept a 7-digit code, and hang up. On the back end, it records the timestamp of the call, the caller id, and the 7-digit code.

What we are running into is that some people do not enter in the 7-digit password, or they take too long. Then the system just restarts, and will continue in an endless loop, until they enter in 7-digits. The callers are, as of late, thinking that the system is broken, when they do not enter in a 7-digit code.

What I'm trying to figure out how to do is that when the system has to return to the beginning, it might say something like "you only entered 6 digits. pleas try again." Or something to that effect. I'm not 100% sure how to add this into the current configuration. Below is what we currently have:

[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()

Thanks for any help with this issue...

w3bguy
  • 2,215
  • 1
  • 19
  • 34

1 Answers1

1

Something like this:

exten => 1234567890,12,GotoIf($[${LEN(${SCODE})}=7]?13:200)

exten => 1234567890,200,Playback(your_inpout_too_short)
exten => 1234567890,201,Goto(3)

Btw, you dialplan is poor quality,looks like person who did it also have no experience.

arheops
  • 15,544
  • 1
  • 21
  • 27
  • Awesome! Thank you. I will implement this today. I do see how that works, now. – w3bguy Jan 30 '13 at 16:49
  • Can you provide an example of what would be a "good" dialplan? Or, do you know a good resource to view as a tutorial? Thanks, again! – w3bguy Jan 30 '13 at 16:50
  • 1
    You have alot of examples in extensions.conf.sample file. In your dialplan: no labels used, gotot for negative choices to next line(not needed,it will go next line automaticaly). +mix of prio numbers and n(next prio) in dialplan. – arheops Jan 31 '13 at 15:21