[asterisk-gui] Feature question/suggestion

Steven Sokol ssokol at sokol-associates.com
Thu Dec 7 10:41:53 MST 2006


> Thanks for the response, and sorry for the double post (e-mail client
> acting up).  When I go to Options -> Local Extension settings, it points
> to https://host.domain.com:8089/asterisk/static/config/localexts.html,
> which is non-existant.  I browsed SVN and it doesn't exist there either.
>

I'm working on some changes to my copy of the Number Plan
configuration and the Service Providers configuration.  It seems that
numbering plans kind of complex, depending on what you want to do.

In our case, our ITSP partner needs to have the numbers normalized
into "canonical" US 1+ format for all calls, while local phone
companies (connected via analog line) can only accept local calls
dialed as 7 or 10 digits (i.e. without the leading 1).  If you dial a
local number with a leading one, the bloody stupid network plays back
SIT tones and tells you that you don't need to dial a 1.

So, we're altering the Service Providers tab and offering three
different Trunk Dialing Formats for passing calls: E.164 Canonical,
NANP Canonical, and "As Dialed".  Our ITSP gets the NANP Canonical and
our analog line gets "As Dialed".  I'm working on altering the
trunkdial macro to properly handle the various normalization methods.
(Not working yet, but getting close.)

We also have people in various area codes using our PBXs, so we've
added a Local Prefix field to the User settings.  If the number is
dialed using a local pattern (i.e. a 7 digit dial) then the system
checks for a channel variable called LOCAL_PREFIX.  If it finds it, it
uses it.  If not, it uses the system's Local Prefix setting.

The real challenge with the GUI is to make it flexible enough to do
the job but simple enough for non-geeks to use it.  In terms of the
calling plans, I'm altering the system to come with a full template
for the NANP (North American Numbering Plan).  In the users tab the
administrator sees the basic categories:  US International, US Long
Distance, US Local, Inside.  This equates to a somewhat more complex
set of contexts which allow for Banned Exceptions (numbers which match
the pattern but are excluded -- think 900 numbers), LCR Exceptions
(numbers for which you want to designate an alternate, theoretically
cheaper or better route), and then Default (which simply selects from
available trunks in a give order).

[callingplan-International]
comment = US International+
include = cp-nanp-international-exceptions
include = cp-nanp-international-lcr
include = cp-nanp-international-default

include = callingplan-LongDistance

[callingplan-LongDistance]
comment = US Long Distance+
include = cp-nanp-longdistance-exceptions
include = cp-nanp-longdistance-lcr
include = cp-nanp-longdistance-default

include = callingplan-LocalTollFree

[callingplan-LocalTollFree]
comment = US Local & Toll Free
include = cp-nanp-local-exceptions
include = cp-nanp-local-lcr
include = cp-nanp-local-default

include = callingplan-InsideOnly

[callingplan-InsideOnly]
comment = Internal Dialing Only
include = users ; (We've replaced "default" with users)

Now what we need to do is alter the GUI to support this multi-step
hierarchy in a way that makes sense to non-telecom geeks.  (Most of
the time this won't get touched as the PBXs come pre-configured for
the ITSP, but we still want to give people flexibility).

As a final step, we've also added the concept of feature groups to the
GUI.  Features are each implemented as their own context (with a
feature- prefix).  Those are then assembled into feature groups and
the feature groups are then assigned to Users.  In order for this to
work, we've altered the Users structure to:

1) Create a private context for each user (i.e. [user-6000]).
2) Change the User's context value to use this private context instead
of the calling plan.
3) Change the behavior of load_users() in pbx_config.c to generate the
private contexts when loading, and to include the proper feature group
and calling plan in the private context.  (About 5 lines of code.)

This gives us the flexibility to control access to anything on the
switch in a very easy way.  It also allows us to grant access to
private or custom features by simply including them in the user's list
of includede contexts.

Here's a link to a demo of what I have so far.  Use 'manager' as both
the user name and the password.

http://www.sokol-associates.com:8088/asterisk/static/config/cfglinksys.html

Feel free to play with it -- the Asterisk instance isn't doing
anything right now.

Thanks,

Steve

-- 
Steven Sokol
CEO
Sokol & Associates, LLC

Asterisk Training:  http://www.sokol-associates.com/
AstriCon 2006: http://www.astricon.net/


More information about the asterisk-gui mailing list