Dialplan question

We are in the early stages of setting up a multi-pbx system for all of our locations across the US.

The plan is to dial our branches by an extension that is comprised of their branch number + an extension number. That is straight forward and we have it working with two freepbx systems in the lab.

My problem is this, since some branches are small or clustered in pockets of the US, we want to have them use the same pbx. How can I setup a pbx so that if it sees 144212 come in from a locally connected phone, it routes it to local extension 212. I don’t want employees to have to remember if they need to dial 6 digits or 3 to get to an extension at a different branch.

It seems like this could be done individually through inbound routes, but I’m wondering if there is a way that I can apply a “rule” that would see certain patterns and strip off digits and then process it all internally. It would take a long time to input all the combinations as inbound routes since one pbx might support 3 or more branches.

Is there an easy solution to my problem?

Start with


but for your scenario maybe a real SIP proxy, perhaps kamailio, in front of your asterii would be easier to manage.


Thanks, I’ve got that working in the lab for future growth, so that’s not my problem or question per sae.

We have about 30 locations spread around the country and my thought is to have 4 or 5 PBX’s that support all of our locations. Because the people in the branches aren’t rocket scientists, I want a consistent method for them to dial each other. My thought was <3 digit branch number> + <3 digit extension at that branch> ie. 177101 for extension 101 at branch 177 and 113201 for extension 201 at branch 113.

Question is: if both of these branches are using the same PBX, and it sees them as extension 101 & 201, how do I configure FreePBX to accept 113201 from branch 177, strip off the 113 and then route to extension 201? I don’t want the branches to have to think “I dial 3 digits to get to this person at this branch, but 6 digits for someone at a different branch.”

Does that explain better what I’m wanting to do?

You will always have pains making Asterisk be multi-tenented, it just isn’t designed to do that, but with some very intricate custom contexts perhaps so, I would still use a sip proxy, it would work lickity slick and you would only have one system to configure., as they say “horses for courses” “square pegs and round holes” etc. . . .

(another possible suggestion is to set up ENUM on all your name servers and asterii)

I’ve been around BIND for decades so that’s an option that I like. How do I configure an enum trunk that will point to my name server? It looks like it points to e164.org by default.

A SIP proxy probably is a better solution, but I’m under the gun to get this up and running so can’t spend too much time coming up to speed on something I’m not familiar with. I’m also looking into just putting it in as a dialplan to the phones, just need to find the syntax for including in the cfg file.

Also, for enum, I 'm assuming that in BIND I just point the 6 digit extension back to the 3 digit extension on the PBX?

Don’t use the default :wink:

It is just like name resolution just have the three most significant digits point to the server of your choice (backwards) and let that server resolve the least significant ones.