22. World Class Routing – Part 3 – ARS tables.

I hope you remember the discussion regarding dialplan (where you added the 9 as a FAC) and the feature access codes because you will need them here. We spoke about how the system knows to access the outer world via routes and trunks and how to restrict the users via the FRL. However, what we did not spoke of was how the system knows how to send a specific call via the route-patterns we programmed. 

Well, the first step is that you will have to define what is the "magic" digit that will give your users the dialtone to dial an external number. If you will execute display feature-access-codes and have a look under Auto Route Selection, you will see your magic digit defined there. In North America it can be a 9, in Europe it can be a 0, in other parts of the world it can be whatever you want it to be (not that you cannot use  what you want in NA or Europe). There is no restriction for this, just what people are used to. Please bear in mind thought that this code is also required to be programmed under the dialplan as a FAC.

Now, ARS ... What is ARS ?

Auto Route Selection is a table that will instruct your pbx what to do with the digits you're sending in after that 9 (or whatever code you have defined as a ARS Access Code - will use 9 in this example). It instructs the system what route to chose depending on the leading digits and the length of the number that you're dialing based on the closest match.

The commands used with ARS tables that you need for now are

  • list ars analysis
  • display ars analysis [digit or group of digits]
  • change ars analisys [digit or group of digits]
  • list ars route-chosen digits


Well, as this is not intended to be an implementation course but rather an administration course, we'll start with something that you have already have in your system. Do a list ars ana on your system and you will see a lot of pages that look like the one bellow.

Put simply, the ARS could sound like this ... If someone tries to dial a number that is between min digits and max digits that start with Dialed String and the call is of call type then send it over Route Pattern route. Sounds easy, but does that mean that everybody can access/dial that number ? Where is the security in all this ? Well, remember route-patterns and FRL  ? Each route-pattern has a FRL and each station has a FRL via a COR. The fact that the table sends the call over to that route does not mean that the route will also be available. We'll dig into this in a second.

Think it this way. When you are in the airport, you will meet a security guard that will do a basic security check over you and then send you over a specific "gate" for a more  thoroughly checkup. That security guard is your ARS Table and the gate is the route-pattern. The ARS table just points you in the right direction, however the route-pattern decides if you're allowed to "pass" or not depending on your FRL. That being said, however, the ARS table can also deny calling as well but there will be no logic in it (it's not like the security guard will let you pass if you display a gun for example).  For ARS tables however it will just be, if the number starts with xxx then drop it.

So looking at the picture above we can see that numbers starting with 197 and have 11 digits in length are going to be denied. However numbers starting with 289 and have 10 digits in lengt of type hnpa will be sent over route-pattern 2.

Now, that we understand our system a little bit better, how does one add a area code in here ? Let's assume that our telco is giving us a new area code and we have to add that in our system (assume area code 416).

First we have to determine who will have access over this area code (as in what users can dial numbers starting with 416). Once we've determined the list of users, ge the lowest FRL from that group. Assume this

- Sales users : FRL 4 - should have access to 416
- Executive users : FRL 6 - should have access to 416
- Lobby phones: FRL 1 - should not have access to 416
- Mail Room users : FRL 2 - should have access to 416.

Looking at this, you will determine that the minimum FRL that would dial to dial 416 is 2 (mail room). We want to deny anything under that. Now, what you do, find a route that has a FRL of 2 (assume in our example that this would be route-pattern 2) and have members who can dialout on the 416 number (probablly your external trunk). If you don't find a route-pattern with FRL of 2, then you will just add one.

The reason behind the fact that you need a FRL of 2 on the route pattern is because you want the mailroom to have access to it (MAILROOM FRL2>=ROUTE FRL2) but not the lobby phones (LOBBY PHONES FRL1 <=ROUTE FRL2). If you were to put here a route that has a FRL of 3 then mailroom would not be able to access it as the route-pattern FRL would be too high. On the contrary, add a route that has FRL of 1 and then lobby phones can access it as well. You don't need to add a specific route for sales users or execs as the relationship will always be higer (Group FRL(4 for sales or 6 for execs)>=Route FRL2)

Now what you have do to is to program into the system
Dialed String : 416
Min : 10
Max : 10
Route-pattern: 2
Call-type: hnpa

Assuming that you want to drop any calls going into numbers that start with 197 you will program

Dialed String : 197
Min : 10
Max : 10
Route-pattern: deny
Call-type: fnpa

Remember that a deny is deny for the whole system regardless of the FRL. Once you put a deny for something in here nobody will have access to numbers starting with those digits.

In order to change the system like above you will have to execute the command change ars ana 4 (starting with number 4, that's the 4 for). You will see something like this where you will program the changes that you wish.

In regards of where to add it , just add it to the end, the system will reorder the list once you exit. If you have digits that require wildcards, the wildcard is the letter x. So, if you will to deny numbers that start with 416 have 10 digits in leght and end in 34 you will add, 416xxxxx34.

To see your changes then you can execute the command: display ars ana 4

and see all the entries starting with dialed string 4.

If ever in doubt a very useful and powerfull command is list ars route-chosen number, where number is a sequence of digits. What this command will do will tell you what route-pattern will be chosen for numbers of that particular format. So, in our case if we wish to dial 4161231234 and we don't know for sure what route will be chosen but we just did the changed that we discussed, we will issue the command list ars route-chosen 4161231234. You notice i don't need the 9 in the digits. Why ? Simple, the 9 is not sent over the public network, it's just used by our system to know that we want to use a external trunk for that particular call. After all you don't dial a 9 when you are at home, right ?

Once you execute this command you will see only 1 line in the middle of the screen that interests you. It displayed the exact entry from the ARS table that will be used for that particular call towards that particular number.

I hope that this explains a little bit better ARS tables. Next lesson, ARS digit conversion!


  1. What does the hnpa,fnpa & svcl mean?

    When using the list ars route-chosen number, do you insert the 1 then area code?

  2. Yes, John, you would put the 1. You want to see what happens when the user dials the respective phone number. Hope this helps. If you have any more question please let me know.

  3. can anyone explain what does this call type mean?\
    eg ; Call-type: fnpa

    Call-type: hnpa

    thanx n advance

  4. Please help. I can not find an explanation of the difference between using an ‘x’ or an ‘X’. Is there a difference?

    Also, what would result with calls when the AAR table has the entry:

    x 10 10 250 aar


  5. Nice explanation

Leave a Reply

Your email address will not be published. Required fields are marked *



This site uses Akismet to reduce spam. Learn how your comment data is processed.