Asterisk i extension

The Asterisk invalid extension


Each context in extensions.conf may have an 'i' extension that is used
for invalid extensions, i e, non-existing extensions dialled by clients.

Not Automatic

You would think that Asterisk would automatically jump to the 'i' extension if the client dials a number that is not matched by any other extensions. But it doesn't. Take this simple example:
[testing]
exten => 1,1,Dial(Zap/3,20)
exten => 2,1,Dial(Zap/4,20)
exten => i,1,Answer
exten => i,2,Playback(pbx-invalid)
exten => i,3,Hangup
If the client dials '1' or '2', all is well; they are connected to the appropriate extension. But if they dial '3', asterisk does not jump to the 'i' extension and play the "pbx-invalid" sound file.

The 'i' extension only gets fired when there's a prompt or input been made with 'background'. You can set up a 'exten => i,1...' to prompt for wrong keypresses - insult the user and so on. So this wont work if someone just dials somthing wrong.

Where's the original number?

The original number dialled is found in the channel variable ${INVALID_EXTEN}

Alternative to i

Include a separate (!) context like below to catch all other = non-existing extensions:

[bogons]
exten => _.,1,what_to_do_for_fat_fingers_always_misdialing

EDIT:
For not trapping into the same extension twice if a user hangs up (when not defined a h extension),
you just could use _X. instead of _. so you only catch the numeric calls (X = 0..9 and not h, i or whatever).

Alternative NOT using 'i'

it works great!
Trapping for incorrectly dialed extentions.

Howto get 'i' working in your dialplan

So after much frustration and poking around I have figured out howto get an 'i' extension to register with your dialplan. The problem is that when a channel enters a context it does not honor 'i' for some reason, but if you're used to using macro's and Goto/GoSub you'll know that the 'i' extension works there. The solution is then to Goto/GoSub from a stub extension to your real extension.
For instance if your SIP users end up in a context-named "sip-users" you could configure something like:
[sip-users]
exten => _.,1,Goto(local-users,BYEXTENSION,1)

[local-users]
exten => 1,1,Dial(Zap/3,20)
exten => 2,1,Dial(Zap/4,20)
exten => i,1,Answer
exten => i,2,Playback(pbx-invalid)
exten => i,3,Hangup



Triggered by Other Commands

The following Asterisk commands can automatically trigger the 'i' extension

The Asterisk invalid extension


Each context in extensions.conf may have an 'i' extension that is used
for invalid extensions, i e, non-existing extensions dialled by clients.

Not Automatic

You would think that Asterisk would automatically jump to the 'i' extension if the client dials a number that is not matched by any other extensions. But it doesn't. Take this simple example:
[testing]
exten => 1,1,Dial(Zap/3,20)
exten => 2,1,Dial(Zap/4,20)
exten => i,1,Answer
exten => i,2,Playback(pbx-invalid)
exten => i,3,Hangup
If the client dials '1' or '2', all is well; they are connected to the appropriate extension. But if they dial '3', asterisk does not jump to the 'i' extension and play the "pbx-invalid" sound file.

The 'i' extension only gets fired when there's a prompt or input been made with 'background'. You can set up a 'exten => i,1...' to prompt for wrong keypresses - insult the user and so on. So this wont work if someone just dials somthing wrong.

Where's the original number?

The original number dialled is found in the channel variable ${INVALID_EXTEN}

Alternative to i

Include a separate (!) context like below to catch all other = non-existing extensions:

[bogons]
exten => _.,1,what_to_do_for_fat_fingers_always_misdialing

EDIT:
For not trapping into the same extension twice if a user hangs up (when not defined a h extension),
you just could use _X. instead of _. so you only catch the numeric calls (X = 0..9 and not h, i or whatever).

Alternative NOT using 'i'

it works great!
Trapping for incorrectly dialed extentions.

Howto get 'i' working in your dialplan

So after much frustration and poking around I have figured out howto get an 'i' extension to register with your dialplan. The problem is that when a channel enters a context it does not honor 'i' for some reason, but if you're used to using macro's and Goto/GoSub you'll know that the 'i' extension works there. The solution is then to Goto/GoSub from a stub extension to your real extension.
For instance if your SIP users end up in a context-named "sip-users" you could configure something like:
[sip-users]
exten => _.,1,Goto(local-users,BYEXTENSION,1)

[local-users]
exten => 1,1,Dial(Zap/3,20)
exten => 2,1,Dial(Zap/4,20)
exten => i,1,Answer
exten => i,2,Playback(pbx-invalid)
exten => i,3,Hangup



Triggered by Other Commands

The following Asterisk commands can automatically trigger the 'i' extension

Created by: oej, Last modification: Sat 14 of Oct, 2006 (21:40 UTC) by JeroenDE
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+