[asterisk-bugs] [Asterisk-GUI 0014156]: Cannot sort dialplan outgoing calling rules

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Jan 15 16:54:32 CST 2009


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=14156 
====================================================================== 
Reported By:                dkerr
Assigned To:                awk
====================================================================== 
Project:                    Asterisk-GUI
Issue ID:                   14156
Category:                   Service Providers/Trunks
Reproducibility:            always
Severity:                   feature
Priority:                   normal
Status:                     assigned
Asterisk Version:           1.4.21.2 
SVN Branch (only for SVN checkouts, not tarball releases):  trunk 
SVN Revision (number only!): 4389 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2008-12-31 15:21 CST
Last Modified:              2009-01-15 16:54 CST
====================================================================== 
Summary:                    Cannot sort dialplan outgoing calling rules
Description: 
The implementation of dialplans and outbound calling rules in the GUI
introduces a nasty problem due to sorting (or lack thereof). Take a simple
example where you want to route tollfree calls over a different voip
carrier.

If you create the dialplan by directly editing extensions.conf you might
create something like this...

[DLPN_DefaultDialPlan]
exten =
_1NXXNXXXXXX,1,Macro(trunkdial-failover-0.3,${voip1}/${EXTEN:0},,voip1,)
exten =
_1800NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)
exten =
_1888NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)
exten =
_1877NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)
exten =
_1866NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)

This would work nicely because asterisk would sort the extension patterns
and it would match against the 1800/1888/1877/1866 before matching against
1NXX.

But the GUI does not let me create such a dialplan. I cannot add more than
one dial pattern to a calling rule. So I am forced to create something like
this...

[CallingRule_DomesticLD]
exten =
_1NXXNXXXXXX,1,Macro(trunkdial-failover-0.3,${voip1}/${EXTEN:0},,voip1,)
[CallingRule_DomesticTollfree800]
exten =
_1800NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)
[CallingRule_DomesticTollfree888]
exten =
_1888NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)
[CallingRule_DomesticTollfree877]
exten =
_1877NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)
[CallingRule_DomesticTollfree866]
exten =
_1866NXXXXXX,1,Macro(trunkdial-failover-0.3,${voip2}/${EXTEN:0},,voip2,)

Then in the dialplan GUI page I get to select the calling rules I want,
which creates...

[DLPN_DefaultDialPlan]
include = CallingRule_DomesticLD
include = CallingRule_DomesticTollfree800
include = CallingRule_DomesticTollfree888
include = CallingRule_DomesticTollfree877
include = CallingRule_DomesticTollfree866

So, what's the problem?  Well apart from being very cumbersome to create
so many calling rules, the real problem is that asterisk does not sort
extension patterns across "includes".  Patterns inside each include are
sorted, but then the DLPN_DefaultDialPlan is parsed in the order each
include is listed in the context. In the above example DomesticLD is first
and so it's pattern of _1NXX matches both tollfree and toll calls... the
tollfree patterns are never matched.

Manually editing the extension.conf file provides a workaround of sorts.
You can manually add multiple patterns to a calling rule. So you can make
[CallingRule_DomesticLD] look exactly like my first example above. And,
while the GUI calling rules page can't create such a thing, if you create
one manually the GUI page recognizes it and lets you edit it (even change
the order of each pattern... which is unnecessary and a NoOp as asterisk
sorts anyway). But that doesn't fix the core problem of sorting the include
statements in the dialplan which is needed.


Proposed fix...
1) the Dialplan GUI needs redesigned to allow sorting the order that
Calling Rules are included.
2) the Calling Rules GUI needs design change to allow adding patterns to
an existing rule.

I don't have time to tackle a patch of this size right now, but wanted to
open this bug to track the issue and open discussion on it.

David

====================================================================== 

---------------------------------------------------------------------- 
 (0097984) blitzrage (administrator) - 2009-01-15 16:54
 http://bugs.digium.com/view.php?id=14156#c97984 
---------------------------------------------------------------------- 
Basically awk has gotten it bang on. Our policy is not to track feature
requests in the bug tracker. We encourage the use of the mailing lists for
feature requests as that is the forum we prefer to utilize for discussion.

Feature requests are only tracked on the bug tracker when an associated
patch for the feature accompanies it.

We do appreciate you taking the time to open a bug in order to help us
advance Asterisk and her related projects, making them better for
everyone.

Thanks! 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-01-15 16:54 blitzrage      Note Added: 0097984                          
======================================================================




More information about the asterisk-bugs mailing list