[asterisk-users] Pattern Extension not working in Dialplan

A J Stiles asterisk_list at earthshod.co.uk
Mon Sep 8 03:12:34 CDT 2014


On Sunday 07 Sep 2014, Anurag Rana wrote:
> Hi,
> 
> I created a dummy dialplan  where I ask the user to enter the age.
> 
> [macro-age]
> exten => s,1,Background(my/age)      ;;Play recorded message to enter age
> exten => s,n,WaitExten(10)
> exten => _XX,1,Set(AGE=${EXTEN})    ;; this line is not executing, instead
> dialplan is terminating with error given below.
> exten => s,n,NoOp(${AGE})
> exten => s,n,GotoIf($[${LEN(${AGE})} > 0]?notEmpty)
> exten => s,n,Goto(s,1)
> exten => s(notEmpty),n,Background(my/thank-you)
> exten => s,n,Wait(1)
> 
> 
> When I receive call and tries to enter the digits (86 lets say), it only
> accept just first digit and terminates even before considering second
> digit. Error message :
>  WARNING[5726][C-0000000a]: pbx.c:6696 __ast_pbx_run: Invalid extension
> '8', but no rule 'i' or 'e' in context 'testmacro'
> 
> Please suggest what might be wrong.
> 
> 
> Anurag Rana
> http://newbie42.blogspot.in/

You would be better off jumping to a new context and building up your number, 
digit-by-digit as it is entered, in a channel variable.

In your "s" extension, set your variable to an empty string; do a Background() 
and then WaitExten() for a digit to be entered.  Have an extension _X to 
capture each digit and append it to the number so far.  Then use a GotoIf() to 
jump to the WaitExten() statement if insufficient digits have been entered so 
far.  You might also want a * extension to clear the number entered so far, if 
the user makes a mistake.


If you need a written example, I might be able to dig something out later.

-- 
AJS

Note:  Originating address only accepts e-mail from list!  If replying off-
list, change address to asterisk1list at earthshod dot co dot uk .



More information about the asterisk-users mailing list