[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