[asterisk-bugs] [Asterisk 0010870]: AEL & CUT
noreply at bugs.digium.com
noreply at bugs.digium.com
Tue Oct 2 19:45:18 CDT 2007
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=10870
======================================================================
Reported By: non-poster
Assigned To: murf
======================================================================
Project: Asterisk
Issue ID: 10870
Category: PBX/pbx_ael
Reproducibility: always
Severity: minor
Priority: normal
Status: feedback
Asterisk Version: 1.4.11
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Disclaimer on File?: N/A
Request Review:
======================================================================
Date Submitted: 10-02-2007 14:16 CDT
Last Modified: 10-02-2007 19:45 CDT
======================================================================
Summary: AEL & CUT
Description:
CUT doesn't seem to work like I would expect.
This works:
macro route-enum-2(exten, Timeout, DialOpts, dns) {
Set(ENLCOUNT=${ENUMLOOKUP(+${exten},ALL,c,,${dns})});
if (${ENLCOUNT} > 0 )
{
for(count=1;${count} <= ${ENLCOUNT};count=${count} + 1) {
Set(ENL=${ENUMLOOKUP(+${exten},ALL,,${count},${dns})});
if (${LEN(${ENL})} > 0) {
if ("${ENL:0:3}" = "sip") {
Dial(SIP/${ENL:4},${Timeout},o${DialOpts});
} else if ("${ENL:0:4}" = "iax2") {
Dial(IAX2/${ENL:5},${Timeout},o${DialOpts});
} else if ("${ENL:0:4}" = "h323") {
Dial(H323/${ENL:5},${Timeout},o${DialOpts});
};
};
};
};
};
This doesn't work:
switch (${CUT(ENL,:,1)}) {
case sip:
Dial(SIP/${ENL:4},${Timeout},o${DialOpts});
break;
case iax2:
Dial(IAX2/${ENL:5},${Timeout},o${DialOpts});
break;
case h323:
Dial(H323/${ENL:5},${Timeout},o${DialOpts});
break;
default:
NoOp(blah);
};
Asterisk 1.4.11, gcc 4.1.2, glibc 2.5, amd64
======================================================================
----------------------------------------------------------------------
non-poster - 10-02-07 19:45
----------------------------------------------------------------------
Hmm.
NoOp(the result of cut is '${x291}'...) gives "sip", as expected.
Then this works:
Set(x291=${CUT(ENL,:,1)});
switch (${x291}) {
case sip:
...
But this doesn't:
switch (${CUT(ENL,:,1)}) {
case sip:
...
Here's the trace:
-- Executing [s at macro-route-enum-2:10] NoOp("SIP/nonposter-006f7da0",
"ENL is sip:16416418003733411 at sip.tollfreegateway.com") in new stack
-- Executing [s at macro-route-enum-2:11] Set("SIP/nonposter-006f7da0",
"x291=sip") in new stack
-- Executing [s at macro-route-enum-2:12] NoOp("SIP/nonposter-006f7da0",
"the result of cut is 'sip'...") in new stack
-- Executing [s at macro-route-enum-2:13] Goto("SIP/nonposter-006f7da0",
"sw-27-|10") in new stack
-- Goto (macro-route-enum-2,sw-27-,10)
10. NoOp(ENL is ${ENL})
[pbx_ael]
11. Set(x291=${CUT(ENL|:|1)})
[pbx_ael]
12. NoOp(the result of cut is '${x291}'...)
[pbx_ael]
13. Goto(sw-27-${CUT(ENL,:,1)}|10)
[pbx_ael]
14. NoOp(Finish switch-for-if-route-enum-2-25-26-27)
[pbx_ael]
15. Set(count=$[${count} + 1])
[pbx_ael]
16. Goto(8)
[pbx_ael]
17. NoOp(Finish for-if-route-enum-2-25-26)
[pbx_ael]
18. NoOp(Finish if-route-enum-2-25)
[pbx_ael]
'sw-27-h323' => 10. Dial(H323/${ENL:5}|${Timeout}|o${DialOpts})
[pbx_ael]
11. Goto(s|14)
[pbx_ael]
'sw-27-iax2' => 10. Dial(IAX2/${ENL:5}|${Timeout}|o${DialOpts})
[pbx_ael]
11. Goto(s|14)
[pbx_ael]
'sw-27-sip' => 10. Dial(SIP/${ENL:4}|${Timeout}|o${DialOpts})
[pbx_ael]
11. Goto(s|14)
[pbx_ael]
'_sw-27-.' => 10. NoOp(blah)
[pbx_ael]
11. Goto(s|14)
[pbx_ael]
I guess I'll assign the result from CUT to a variable in my dialplan
instead of using CUT directly. (I thought I tried this already... lack of
sleep...)
Issue History
Date Modified Username Field Change
======================================================================
10-02-07 19:45 non-poster Note Added: 0071374
======================================================================
More information about the asterisk-bugs
mailing list