[asterisk-users] Originate with label?
asterisk at phreaknet.org
asterisk at phreaknet.org
Mon Aug 29 13:00:08 CDT 2022
On 8/29/2022 11:00 AM, Mark Murawski wrote:
> On 8/29/22 09:30, Antony Stone wrote:
>>
>> It is, although there are ways I think it can be improved - I'm
>> wondering how
>> best to go about proposing these.
>>
>> The most obvious for now are:
>>
>> - please can "a=1;" be converted to use Set() instead of MSet()
>> (especially
>> since MSet is officially deprecated)?
>
> Currently being discussed! We can definitely continue talking about
> the pros and cons of adding an option for this or maybe finding
> another way altogether.
>
>> - same thing for for (;;)
>
> I see that for (;;) produces an empty MSet(). Definitely this can be
> cleaned up. Thanks for bringing this up. In the meantime you can use
> while (1)
>
>
>> - please can gosub be added, to convert into Gosub() (matching goto
>> converting to Goto())? The & syntax is completely different from the
>> rest of
>> the language, and also creates redundant assignments at the start of the
>> subroutine for parsing the parameters. Now that macros are
>> deprecated in
>> favour of subroutines, it makes sense, I think, to make gosub a part
>> of AEL.
>
> I agree that AEL keyword 'gosub' should exist. That's been one of my
> todo items. From not only a consistency perspective, but from a
> syntax checking perspective it would benefit from reporting whether or
> not your gosub destination exists or not, just like goto will complain
> that the destination doesn't exist when the context/extension/priority
> used is not valid.
>
> The '&' syntax does use GoSub under the hood, and not the deprecated
> Macro(). And I'm not sure what you mean by redundant parameters?
> When you use AEL 'macro' to define a '& destination', it uses the
> positional parameters that are passed in as ARG1/ARG2/etc that are
> inherent in using GoSub and converts them to more friendly
> named-parameters (as defined in the macro definition). This is why
> there's always a group of MSet's generated when using AEL 'macro'. If
> you don't want these extra MSets, then feel free to define a straight
> up context to GoSub into and you can do your own parameter processing
> using ARG1/ARG2/etc
>
>
>> - it would be great if the redundant NoOp()s which get created by
>> if .. else,
>> while ... and for(;;) could be (maybe optionally?) removed from the
>> resultant
>> dialplan code - otherwise you end up with lots of added commands such as
>> NoOp(Finish if_if_fromTrunk_208_209); in the output.
>
> They aren't redundant specifically, they were left in there (not by
> me) for debugging/tracing purposes. But for the casual user, I agree
> they are mysterious and not very useful. My idea to address this is to
> instead report on the actual if condition to assist with
> tracing/troubleshooting.
>
> This is a mockup of what the new-style if/else processor would output
>
> 26. NoOp(AEL IF("\${DIALSTATUS}" == "BUSY") --
> extensions.ael:1405)
> 27. GotoIf($["${DIALSTATUS}" == "BUSY"]?28:30)
> 28. Set(voiceMailOptions=b)
> 29. Goto(32)
> 30. NoOp(AEL ELSE -- extensions.ael:1409)
> 31. Set(voiceMailOptions=u)
> 31. NoOp(AEL END ELSE -- extensions.ael:1410)
> 32. NoOp(AEL END IF("\${DIALSTATUS}" == "BUSY") --
> extensions.ael:1411)
> 33. NoOp(DoStuff)
Why all the GotoIfs? Why not just use the If/EndIf applications
(assuming they get merged)? Much cleaner syntax:
If($["${DIALSTATUS}"="BUSY"])
Set(voiceMailOptions=b)
Else()
Set(voiceMailOptions=u)
EndIf()
NA
>
> My idea is that the 'if' block would be preceded by outputting the
> logical condition we're about to check, along with the original ael
> line number, and then at the end of the if block, we would get an
> associated END IF with the original ael line number. This would
> enable the ability to quickly locate the code where conditions are
> being used and also be able to look at the logs and see why your code
> is doing what it's doing without a lot of extra verbosity and without
> needing a lot of work to find which ael-lines are running.
More information about the asterisk-users
mailing list