Best way to control access to international numbers

What is the best way to control access to international numbers?

By specific countries
By region

By both.

as you see

  1. is NANPA but you might not want some Caribbean countries

  2. is South Asia and the Middle East, you might not want Palestine, (or you might equally not want Isreal)

  3. Europe

  4. Europe
    and so on.

Start with broad strokes , add exceptions as necessary. Even within a country a call cost can vary greatly, some countries like the UK have ‘shared cost’ destinations that could cost you 25 times as much per minute as a landline call

I know where to get the country codes. The question is, what’s the simplest way to enforce a rule like:

Ext. 222 can dial all numbers in the ,USA, Canada, SE Asia and nothing else.

Either you can use a list of all NANP area codes which are are in Canada or the USA. Or you can deny all area codes that are not in Canada or the USA and then allow the rermaing 1x. routes

As you already now how to get country codes, you will have to decide which ones are in the list of what you consider ‘SE Asia’ and add them to the list.

Be aware that there is a wide divergence of how ‘se asia’ is defined, perhaps,%2C%20military%2C%20educational%2C%20and%20sociocultural


Perhaps just Vietnam Laos and North Korea, it’s just up to you, there is no easy way of shortening the list you desribed as desirable.

The simplest way is to use the module that was made for this: Class of Service Module

Extension Routing is a cheaper option for this use case.


Australia is a member of ASEAN for economic reasons but not really SE Asia. Korea, both DPRK and ROK are North Asia.

This is South East Asia. I live here.

Good. I’ll by it but still in test mode.

Looks like without either of the two commercial modules mentioned, i would have to create dial plans for each country code, such as

One outbound route for US and Canada

Another for what I define as SE Asia with dial plans like


Exactly as I suggested, One outbound route for US and Canada is not possible, +1. includes what can be very expensive calls to the Caribbean of which many are neither US or Canada :wink:

Perhaps find a carrier that supports LCR and denies calls over a certain cost per minute.

Actually, my trunk provider,, has a very simple way of controlling this at the trunk level. I might want to change providers, though.

Maintaining dial plans would be a nightmare

Thanks for the link, but that’s pretty well what I have been telling you for the last few posts, it is not really too much of a maintainance issue as once set up, you will find that countries rarely move or change their ITU codes. Just you occasionally adding or removing ‘countries’.

Add levels of access at the top, and allow or deny users at a lower level, the oldie but goldie ‘custom-contexts’ module still works fine and is free (apart from the RTFM bit)

It’s been years since I used GitHub. What’s the easiest way to install this?

“Add levels of access at the top,”

Not sure what you mean by that

That is for allowed/disallowed patterns, the order is important

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.