Adding Special Features To The Dialplan

Before we begin, some features may be provided by the outside lines dial plan (see the A Dial Plan For Outside Lines section), such as siezing a particular outside CO line to place a call, using the special feature code "42". Other features such as being able to transfer a call directly to a voicemail box by dialing an extension prefixed by "" may be provided by the local extensions dial plan (see the Configuring Local DAHDI FXS/FXO Channels section, for example). These special feature codes should not be reused herein, so check for them before you begin. If you used the SPECIALCODE variable to initiate such code sequences, you can simply search all the local configuration files with grep to determine what the already-assigned special feature codes are.

Another thing to consider is to try to copy standard telephone feature codes to accomodate people's predefined notions of how things should work. They have probably been using specific codes for special features, for years, both with their home telephone service and/or at work. To make it easy for them to remember what the special feature codes are, choose codes that are already in their memories, based on what are used by the local PhoneCo and or popular version of Asterisk, phone switches, etc. Here is a list of North American CLASS codes that you should consider using:

     http://www.voip-info.org/wiki/view/CLASS

From that list, we've chosen some feature codes that you might want to implement. Note that we use the SPECIALCODE variable (defined in the local variables file) to initiate the special feature code. For purposes of discussion herein, we assume it is set to "*".

>>>>>>
MeetMe - To access a MeetMe conference room, dial 8 + your extension. (i.e. for extension 200, dial 8200). This will create a MeetMe room for you. Once the room is live, you can then transfer callers into it. <<<<<<

Directory - Allow the user to dial *411 to get the directory. Not strictly legit, according to the North American CLASS codes but we're not implementing six-way conference calling so who cares.

>>>>>>
CallPickup

CallReturn - Dial *69 to return the last incoming call.

FollowMeForward -
<<<<<<

CallForwarding - Dial *72 to enable Call Forwarding. Implemented by an Asterisk database variable that holds the current Call Forward extension. Note that you should check for loops (i.e. forward to forward) both in the UI and in the routine that actually dials extensions.

CancelCallForwarding - Dial *73 to disable Call Forwarding.

DoNotDisturb - Dial *78 to enable Do Not Disturb (all calls go immediately to voicemail). Implemented by an Asterisk database variable that holds the current state (off/on) of the Do Not Disturb setting.

CancelDoNotDisturb - Dial *79 to disable Do Not Disturb (calls ring the extension in the normal manner).

CallForwardOnBusy - Dial *90 to forward incoming calls to another extension if your extension is busy. We'll also forward if there is no answer on your extension.

CancelCallForwardOnBusy - Dial *91 to cancel forwarding of incoming calls to another extension if your extension is busy.

MessageCenter - Dial *97 to pick up the voicemail for your extension from Comedian (voicemail). Dialing the Message Center with this code does not ask for a password or extension.

MessageCenterNumber - Dial *98 to be prompted for a mailbox number and pick up the voicemail for that mailbox from Comedian (voicemail).

Time - Dial *60 to get the current system time. This takes advantage of the time routine that is included in the extensions.conf file (as described in the Basic Asterisk Configuration section).

Weather - Dial *61 to get the local weather report. This uses the current weather conditions file that is generated by the Perl script run by cron, every fifteen minutes, as described in the Current Weather section (above).

WakeupCall - To schedule a wakeup call to your extension, dial *62. This adds a call file to the /var/spool/asterisk/outgoing directory to cause Asterisk to place the call at the future wakeup time. The Asterisk database is used to save a feature code that causes daily wakeup calls to be scheduled forever (until cancelled). The call is placed using the local channel so that we can jump into the internal context to ring the extension.

Here is more information about Asterisk Call Files:

     http://www.voip-info.org/tiki-index.php?page=Asterisk+auto-dial+out

And, here is further information about the Asterisk local channel:

     http://www.voip-info.org/wiki/view/Asterisk+local+channels

CancelWakeupCall - To cancel a previously scheduled wakeup call, dial *63. This deletes all files belonging to your extension from the /var/spool/asterisk/outgoing directory and removes the feature code from the Asterisk database.

EchoTest - Dial *43 for an echo test. Essentially, this just runs the Asterisk Echo() application.

FeatureList - Dial *46 for a feature list. This lists all of the state variables for the extension in the Asterisk database.

ClearFeatures - Dial *47 to clear all features on an extension. This deletes all of the state variables in the Asterisk database for the extension.

>>>>>>
Note about MySQL vs. dbm ....
<<<<<<