In North America, people are used to being able to dial 911 in order to reach emergency services. Outside of North America, well-known emergency numbers are 112 and 999. If you make your Asterisk system available to people, you are obligated (in many cases regulated) to ensure that calls can be made to emergency services from any telephone connected to the system (even those phones that otherwise are restricted from making calls).
One of the essential pieces of information the emergency response organization needs to know is where the emergency is (i.e., where to send the fire trucks). In a traditional PSTN trunk this information is already known by the carrier and is subsequently passed along to the Public Safety Answering Point (PSAP). With VoIP circuits things can get a bit more complicated, by virtue of the fact that VoIP circuits are not physically tied to any geographical location.
You need to ensure that your system will properly handle 911 calls from any phone connected to it, and you need to communicate what is available to your users. As an example, if you allow users to register to the system from softphones on their laptops, what happens if they are in a hotel room in another country, and they dial 911?[81]
The dialplan for handling
emergency calls does not need to be complicated. In fact, it’s far better
to keep it simple. People are often tempted to implement all sorts of
fancy functionality in the emergency services portions of their dialplans,
but if a bug in one of your fancy features causes an emergency call to
fail, lives could be at risk. This is no place for playing around. The
[emergency-services]
section of your
dialplan might look something like this:
[emergency-services] exten => 911,1,Goto(dialpsap,1) exten => 9911,1,Goto(dialpsap,1) ; some people will dial '9' because ; they're used to doing that from the PBX exten => 999,1,Goto(dialpsap,1) exten => 112,1,Goto(dialpsap,1) exten => dialpsap,1,Verbose(1,Call initiated to PSAP!) same => n,Dial(${LOCAL}/911) ; REPLACE 911 HERE WITH WHATEVER ; IS APPROPRIATE TO YOUR AREA [internal] include => emergency-services ; you have to have this in any context ; that has users in it
In contexts where you know the users are not on-site (for example, remote users with their laptops), something like this might be best instead:
[no-emergency-services] exten => 911,1,Goto(nopsap,1) exten => 9911,1,Goto(nopsap,1) ; for people who dial '9' before external calls exten => 999,1,Goto(nopsap,1) exten => 112,1,Goto(nopsap,1) exten => nopsap,1,Verbose(1,Call initiated to PSAP!) same => n,Playback(no-emerg-service) ; you'll need to record this prompt [remote-users] include => no-emergency-services
In North America,
regulations have obligated many VoIP carriers to offer what is popularly
known as E911
.[82] When you sign up for their services, they will require
address information for each DID that you wish to associate with outgoing
calls. This address information will then be sent to the PSAP appropriate
to that address, and your emergency calls should be handled the same as
they would be if they were dialed on a traditional PSTN circuit.
Handling emergency calls does not have to be complicated (in fact, it is best to keep this as simple as possible). The bottom line is that you need to make sure that the phone system you create allows emergency calls.
[81] Don’t assume this can’t happen. When somebody calls 911 it’s because they have an emergency, and it’s not safe to assume that they’re going to be in a rational state of mind.
[82] It’s not actually the carrier that’s offering this; rather it’s a capability of the PSAP. E911 is also used on PSTN trunks, but since that happens without any involvement on your part (the PSTN carriers handle the paperwork for you), you are generally not aware that you have E911 on your local lines.