[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