Replying to list this time... On Wednesday 31 August 2022 at 12:47:13, aster...@phreaknet.org wrote:
> On 8/31/2022 6:32 AM, Antony Stone wrote: > > Hi. > > > > I think I've discovered a bug in either the implementation or the > > documentation of the AEL switch command. > > > > https://wiki.asterisk.org/wiki/display/AST/AEL+Conditionals gives an > > example of using switch, and states at the bottom: > > > > "Neither the switch nor case values are wrapped in $[ ]; they can be > > constants, or ${var} type references only." > > > > However, I've run into a problem, which can be demonstrated by the simple > > context: > > > > context SwitchTest { > > s => { > > Set(FortyTwo=42); > > Set(SixByNine=54); > > switch(${SixByNine}) { > > case 123: > > NoOp(123); > > break; > > case ${FortyTwo}: > > NoOp(${FortyTwo}); > > break; > > } > > } > > } > > Am I misundertanding "they can be constants, or ${var} type references > > only."? > > I don't think this is a bug. ${FortyTwo} is not defined when the AEL > dialplan is transpiled into dialplan. It only gets set at runtime. Agreed, however that is surely a perfectly reasonable "${var} type reference"? > This might work if you made FortyTwo a global variable, which would be > available when this gets parsed. Quite possibly, but I would expect switch() to work in the same way as multiple if() statements: switch(${a}) { case ${b}: NoOp(${b} matches); break; case ${c}: NoOp(${c} matches); break; // etc.... } should be equivalent to: if(${a}=${b}) NoOp(${b} matches); if(${a}=${c}) NoOp(${c} matches); // etc.... The latter works perfectly well, no matter when ${b} and ${c} are assigned their values. I've adjusted my dialplan to use multiple if()s, but I still thik that either the implementation or the documentation of switch is incorrect. Antony. -- I bought a book on memory techniques, but I've forgotten where I put it. Please reply to the list; please *don't* CC me. -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- Check out the new Asterisk community forum at: https://community.asterisk.org/ New to Asterisk? Start here: https://wiki.asterisk.org/wiki/display/AST/Getting+Started asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users