Asterisk: How to control who call call outside office

Posted on 2007-09-28
Medium Priority
Last Modified: 2013-11-12
Using asterisk how do i control what extensions call call outside and which cant
Question by:jonnydollar
  • 3
LVL 36

Accepted Solution

grblades earned 1500 total points
ID: 19980140
Are you using Asterisk directly or something like Trixbox?

There are two way to do it.
One way is to have two contents (as in the context= lines in the sip.conf file). Then in extensions.conf you have all internal calls defined within an [internal] context and external ones defined as [external] for example.
Then say for example the two contexts used by the phones are extallowed and extdenied you would have the following in the extensions.conf :-

include=> internal

include=> internal
include=> external

That way denied phones jump to the [extdenied] section of the configuration and from there only the internal calls section of the configuration is included so they can only make internal calls.
LVL 36

Expert Comment

ID: 19980221
The 2nd way which might be a bit easier for you to understand if you are not familair with contexts is to use an internal database lookup. For example :-

You might previously have had :-

exten => _9.,1,Dial(ZAP/g1/$EXTEN:1},60,Tr)

You could change this to :-

exten => _9.,1,Set(DENYEXT=${DB(denyexternal/${CALLERIDNUM})})
exten => _9.,n,GotoIf($[ "${DENYEXT}" = "yes" ]?deny)
exten => _9.,n,Dial(ZAP/g1/$EXTEN:1},60,Tr)
exten => _9.,n,Hangup
exten => _9.,n(deny),Answer
exten => _9.,n,Wait(1)
exten => _9.,n,Playback(externaldenied)
exten => _9.,n,Wait(10)
exten => _9.,n,Hangup

With this alteration for every external call a lookup is performed on the internal database and if an entry exists and is set to 'yes' then that extension is denied and a message is played (you will need to record your own or use a suitable one that comes with the system).

To deny a phone which has the extension number 1234 you would enter the following line from the asterisk consode:-
database put denyext 1234 yes

The advantage with this method is that it is more universal as you dont have to muck around with contexts and you dont need to edit and reload the configuration to make a change. You could for example expand on the code to allow the phones which are denied external access to actually dial certain external numbers (emergency services for example).
LVL 36

Expert Comment

ID: 19980228
Sorry the database command should have been :-
database put denyexternal 1234 yes

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The Zaptel people (www.zaptel.com) got kind of annoyed with the fact that they were getting bombarded with searches for the zaptel driver system for Asterisk (not to mention they own the trademark on zaptel). So, they kindly requested that Digium ch…
Why do some people recommend buying business VoIP from an ISP? What are the benefits to my company? What are the costs?
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
Look below the covers at a subform control , and the form that is inside it. Explore properties and see how easy it is to aggregate, get statistics, and synchronize results for your data. A Microsoft Access subform is used to show relevant calcul…
Suggested Courses
Course of the Month14 days, 17 hours left to enroll

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question