Module Documentation

Module Documentation

To access the FreePBX modules, follow step #1 on this page:

http://www.freepbx.org/support/documentation/installation/first-steps-af...

The modules are listed along the left-hand side of the web interface, and are divided into two sections, "Setup" and "Tools." Once you're at a specific module's page, you can hover your mouse over the title of each entry and get instructions on what the entry does and how to configure it.

For an overview of the modules, click here:

http://www.freepbx.org/support/documentation/module-documentation/overvi...

For more details about each module, click on the name of the module, below.


Overview of the Modules

Overview

Everything in FreePBX is a module, so you need to enable all the modules you want to use. If you do enable something you don't use, it won't matter - it'll just make clicking the red 'Reload Bar' take a little longer, as it goes through and asks every modules 'What would you like done?. If you're using a lower powered system (Say, a Piii 500 or slower) you might want to be a bit selective with the modules you use, but it will _only_ affect the speed of FreePBX, not the speed of Asterisk itself.

The modules are listed along the left-hand side of the GUI, and are divided into two sections, "Setup" and "Tools." Once you're at a specific module's page, you can hover your mouse over the title of each entry and get instructions on what the entry does. Generally, you'll want to configure the modules in this order:

Trunks- Trunks are the PBX equivalent of a phone line. They are how your system makes calls to the outside world and receives calls from the outside world. Without a trunk, you can't call anyone. You can configure a trunk to connect with any VOIP service provider (such as FreePBX's SipStation), with a PSTN/Media Gateway (which allows you to make and receive calls over standard telephone lines from your local telephone company), or to connect directly to another PBX.

Most reputable VOIP providers will give instructions on how to configure a FreePBX trunk with their service. The vast majority of VOIP providers provide their service using SIP Trunks. A few also support IAX Trunks.

Zap trunks are used to connect with phone line cards that are installed into your PBX computer.

An ENUM trunk interfaces with e164.org and allow you to make and receive free calls over the internet to anyone who has registered their number with e164.org. ENUM's usefulness is limited by the fact that your machine must be exposed to the internet to receive ENUM calls, and doing so presents a security risk.

The Dialed Number Manipulation Rules section lets you redirect calls to certain numbers to other numbers. For example, if someone dials 411, FreePBX can be configured to change that to 1-800-FREE-411. Or you could make 611 call your grandmother. Hover your mouse over the words "Dialed Number Manipulation Rules" for more details.

Outbound Routes- Outbound Routes are how you tell your PBX which Trunks (phone lines) to use when people dial certain telephone numbers. A simple installation will tell the PBX to send all calls to a single trunk. However, a complex setup will have an outbound route for emergency calls, another outbound route for local calls, another for long distance calls, and perhaps even another for international calls. You can even create a "dead trunk" and route prohibited calls (such as international and 976 calls) to it.

Hover your mouse over each of the fields for more details on what each field controls.

Extensions (or Devices and Users)- Extensions are where you set-up devices (telephones) and users (extensions) on your system.

To create one, click "add extension" on the right-hand side of the screen, and then select "generic SIP extension." Although there are a lot of fields available, most of them can be left blank or at the default setting. The only required fields are: User Extension (set the extension number here), Display Name (give the extension a name, usually a location or a person), and secret (the password used to register a phone to the extension).

All of the available fields have help available right on the Web GUI. Just hover your mouse over the field and a pop-up will tell you what it does.

Follow-me- The follow-me module allows you to create a more complicated method of routing calls that are placed to a specific extension. Using this module, you can make a call to one extension ring several other extensions, or even outside phone numbers. You can also make calls to one-extension end in the voicemail of another extension.

For example, using "follow-me," you could make a call to extension 10 actually ring extension 10, extension 11, and extension 12, and call someone's cellular phone, for 15 seconds, and then, if nobody answers, go the voicemailbox for extension 17.

Ring Groups- Ring Groups allow you to create a single extension number (the Ring Group Number) that will call more than one person.

For example, you could make a Ring Group so that when any user dials extension 601, extensions 10, 11, 12, and 13 ring for 15 seconds, and then the call goes to the voicemail for extension 17.

Inbound Routes- The Inbound Routes module is where you tell the PBX how to handle incoming calls. Typically, you tell the PBX the phone number that outside callers have called ("DID Number" or "Direct Inward Dial Number") and then indicate which extension, Ring Group, Voicemail, or other destination the call will go to.

Parking Lot- A parking lot allows anyone who has received a call to park the call on an extension that anyone else can access. Typically, you receive the call, transfer it to extension 70, and then listen as the system tells you where you can pick up the call (usually extension 71). Then, anyone else on your PBX can dial 71 to pick-up the call.

Feature Codes- This module allows you to set the special codes that users dial to access various features. You can also disable features if you don't want users to be able to access them.

General Settings-: This module has several important features you may want to consider changing:

. Dial Dial Voicemail Prefix: This feature allows you to directly dial an extension's voicemailbox by dialing the prefix listed on this page. So, for example, if you dial * (the default) and then an extension number, you'll skip ringing the extension and go straight to their mailbox. This is useful when you wish to transfer someone directly to voicemail. If you leave this at the default of *, and you use two digit extensions, the direct dial voicemail function will confict with certain feature codes. You may wish to change the direct dial voicemail prefix from the default of "*" to something else, such as *86.

. Optional Voicemail Recording Gain: If you find that the voicemail messages you receive are quiet compared to the system recordings, you might want to change this from the default of 0 to 5.

. Do Not Play "please leave message after tone" to caller- If you'd prefer that asterisk just play the outgoing message and then beep, then check this box.

. Operator Extension- You can specify the extension number/ring group number that people will get transferred to when they dial 0 while leaving a voicemail. If you leave this blank, the caller will return to whatever ring group they came from before reaching voicemail.

Paging and Intercom- By default, you dial *80 plus the extension number to intercom a specific user. The Paging and Intercom module allows you to define numbers you can dial to page a group of devices at once. For example, in a small office, you might define a paging group that allows any user to dial 00 to page the entire office.

Conferences- This module allows you to create an extension number that people can dial into in order to have a conference call.

For example, any user could dial extension 800 and they would be in a conference call.

IVR- This is the module where you configure an auto attendant to answer calls and direct them.

System Recordings- This is the module where you record the messages for use on your auto-attendant.

DISA ("Direct Inward System Access")- This module allows you to create a destination that allows people to call in from an outside line and reach a system dial tone. This is useful if you want people to be able to take advantage of your lower rate for toll calls, or if you want outside callers to be able to use the paging or intercom features of the system. Always password protect this feature, if you use it at all.

Backup and Restore- This module allows you to backup and restore the settings and recordings made by FreePBX/Asterisk. After they are made, you can find the backups by typing the following at your command prompt:

cd /var/lib/asterisk/backups

ls -l

Time Conditions/Time Groups- These modules allow you to define time periods and then choose where calls will go during those time periods. For example, you could set up a time period for the days and hours when a business is open, and then set the system to send calls to all extensions during business hours and straight to voicemail after hours.

PIN Sets- Allows you to set PINS (i.e., passwords) that you can make the system require users to enter before putting calls through. The PINs are defined in this module, and then selected in the Outbound Routes module.

Additional FreePBX modules

You will find some additional modules that have been contributed to the FreePBX community here:
http://mirror.freepbx.org/modules/release/contributed_modules/


Administrators

This module lets you limit the sections of freePBX to certain users.

Configuration

This module may not be active by default, and will say 'NOTE -
AUTHTYPE is not set to 'database' in /etc/amportal.conf - Module
crippled'. To enable it, you need to change AUTHTYPE in
/etc/amportal.conf to 'database'. If you have already tried to add
users before changing AUTHTYPE to 'database', delete them now and read
the "important warning" below.

Trixbox or Asterisk@Home users have some extra work due to the
Apache level authentication with the "maint" user. You will have to
comment out or delete the following lines in
/etc/trixbox/httpdconf/trixbox.conf for Trixbox or
/etc/httpd/conf/httpd.conf for A@H for this to work:

Password protect /var/www/html/admin

<Directory /var/www/html/admin>

AuthType Basic

AuthName "Restricted Area"

AuthUserFile /usr/local/apache/passwd/wwwpasswd

Require user wwwadmin maint

</Directory>

Then you have to restart httpd (/etc/init.d/httpd restart) and
possibly amportal (amportal restart) too. You should now be able to
login with admin/admin and create/change users in the Administrators
module. Be sure to change the admin password straight away!

Important Warning! Read before using this module

It is quite easy to lock yourself out of freePBX if you enable
AUTHTYPE after you have added users. Don't do it. If you want to use
this, then you must have NO USERS CREATED before you turn it on. If you
don't heed this advice, and turn it on with an existing user there,
then nothing you type in will let you access freePBX. You'll have to
turn it back off, and then delete any existing users.

Adding a User

Enter a username and password in the General section. If this is
the first user, make sure that you select 'ALL SECTIONS' in the 'Admin
Access' list so you can get back in there. As soon as you add the first
user, you will then be prompted for a username and password. Log in as
the user you've just created.

Limiting User Access

  • Department Name
    • Have been unable to find any documentation on this . Help?
  • Extension Range
    • When this user is logged in, they will only see the range
      specified here. This is useful if you're setting up multiple tenants on
      the one system.
  • Admin Access
    • This is a multiple-selection box. You can select a range of
      areas they're allowed to access by either holding down Control (or
      'apple' on Mac's) and selecting individual ones, or dragging the mouse
      over the list of ones you want to give them access to.

Announcements

The Announcement module alows you to play an announcement to a caller. You can then send the caller to another destination or back to the IVR that sent him to the announcement.

For example:

  1. IVR: "Hello, thank you for calling the North Carolina School district. To hear the latest updates about changes to thew school schedule due to the current weather conditions, press 1." After pressing 1, the caller will then hear the announcement regarding todays schedule. Then the caller will be returned to the IVR where they can press another option (2 for the school administration, etc.)
  2. You can play a message to the caller after the select an IVR destination - but befor the call is transfer. I.e. if the caller pressed 1 for sales, you could play "transfering to the sales team" - and then send the caller to the sales queue.

Configuration

  • Description: This is the name of the announcement.
  • Recording: This is the file to be played. You can add more recording using the System Recordings module.
  • Repeat: This option sets a repeat key.If the caller presses this key the announcement will be replayed.
  • Allow Skip: Alows the caller to press any key, to skip the announcement.
  • Return to IVR: Returns the caller to the IVR after they have heard the announcement
  • Don't Answer Channel: Check this to keep the channel from explicitly being answered. When checked, the message will be played and if the channel is not already answered it will be delivered as early media if the channel supports that. When not checked, the channel is answered followed by a 1 second delay. When using an annoucement from an IVR or other sources that have already answered the channel, that 1 second delay may not be desired.


Asterisk CLI

Asterisk CLI command


This allows you to run a command as if it was typed into the asterisk CLI.

Examples

* sip show peers

o This displays all the known SIP devices, and their state, according to Asterisk

* show channels

o Show any channels that are in use at the moment

* soft hangup Zap/1

o Hangs up the Zap/1 channel


Asterisk Info Module

Asterisk Information Module - Gives the use a snapshot of the system state such as SIP channels (calls in progress) SIP peers (SIP phones, VoIP trunck) etc...

This module will give you a summary of the following.

Summary: Summary of your system state.
-system uptime
-active SIP channels
-active IAX2 channels
-SIP registration
-IAX2 registration
-SIP Peers
-IAX2 peers

Channels: Summary of the systems channel information:
-Active Channels
-SIP channels
-IAX2 channels

Peers: Summary of the systems Peers:
-SIP peers
-IAX2 peers

SIP info - summary of the systems sip information:
-SIP registry
-SIP peers

IAX2 info - summary of the systems IAX2 information
-IAX2 registry
-IAX2 peers

Conferences - summary of the active conferences / MeetMe.

Subscriptions / Notify - registered Asterisk dial plan Hints.

Voicemail Users - A list of the extensions that have VM enabled and the number of new Voicemails.

Full Report: Gives you a full report of all the above information in one report.

Refresh - hitting this button will refresh the snapshot of the Asterisk Information.


Asterisk Logs

No documentation availabe. You can help by contributing to this book pate.


Asterisk Manager API Settings

No documentation availabe. You can help by contributing to this book pate.


Backup and Restore

Overview

You can configure a regular backup schedule to ensure that you
have a copy of your Asterisk and freePBX configuration, voicemail and
CDR records. You can also restore a previous backup, in case of data
loss or a major configuration fault. Backups are stored on the file
system at /var/lib/asterisk/backups. You should make a point of making
an offline copy of important backups.

Add Backup Schedule

  • Schedule Name: Give this backup a friendly name (e.g.
    "Daily" or "Voicemail") to accurately identify what you're backing up.
    This will make future restores easier.
  • Voicemail: Enable this if you want to include voicemail
    messages in this backup. This could seriously increase the size of your
    backups because you are backing up potentially large audio files.
  • System Recordings: Enable this if you want to backup custom
    System Recordings you may have created for a Digital Receptionist or
    Queue. Again, this could increate the size of your backups because of
    the size of some audio files.
  • System Configuration: Enable this option to backup your
    Asterisk and freePBX configuration data, including the MySQL and
    Asterisk databases. We recommend this be enabled for all backups.
  • CDR: Enable this option to backup your Call Detail Records.
  • Operator Panel: Enable this option to backup the Flash Operator Panel configuration.

Run Schedule

You can chose a pre-configured schedule from the drop-down, or
configure your own schedule using the Minutes, Hours, Days, Months and
Weekdays select boxes. The pre-configured options are: Daily (at
Midnight), Weekly (on Sunday at Midnight), Monthly (on the 1st at
Midnight) or Yearly (on the 1st January at Midnight).

Restore from Backup

This will list all the backups that are currently on your system
(located at /var/lib/asterisk/backups). Click on the backup you wish to
restore.

Upgrading from A@H:

Upgrading from an older version of A@H to freePBX causes restores to STOP WORKING. You need to totally clean out your /var/www/html/admin directory first, then re-run install_amp.

cd /usr/src/freepbx

rm -rf /var/www/html/admin

./install_amp

After you've restored, check to confirm you haven't lost anything.
*** NOTE ***
This module is NOT backwards/forwards compatible at this time. ONLY restore backup sets to the same revision. Meaning, don't install a fresh 2.3.0 system and try to restore a 2.2.1 backup set as you will have issues.

*** NOTE ***
I have tested a revision of this. Restoring an old version of FreePBX (2.2.X)to the newest version of FreePBX 2.4.X.

1. install your new system with FreePBX 2.4.0
2. install the Backup / Restore module
3. restore your old backup (I always restored everything for testing)
4. SSH into /usr/src/tbm-pbxconfig-5.0.0
5. run ./install_amp *this will fix all the web interface problems and the modules that were hosed.
5. Do not hit the orange bar yet.
6. Update all the modules, check your extensions then hit the orange bar and reload.

the system should be close to perfect.

This has only been tested. Long term testing has not been done.


Blacklist

This module allows you to manage the blacklist in astDB thru the FreePBX web interface.

Add or replace entry:

Number: Enter the number you want to block.

Adding a number to the blacklist will not allow the number into your system. The blacklisted caller will hear "The number you have reached is not is service."

Hit *32 to blacklist the last number called into your system.

On some phones you can setup a speeddial to blacklist callers.
speeddial *32.


Callback


The Callback module allows you to setup a destination that calls a user back and provides them access to an application. An example of this would be a caller that dials your system, disconnects, and is called back and then provided a DISA
dial-tone to make a phone call.

Add Callback

  • Callback Description: This is the name/description of the callback
  • Callback Number: This is the number to be called
  • Delay Before Callback: Optionally, you can enter an amount of time that the system should wait before placing the call

Known Issues

Some issues have been encountered with this plugin:

  1. Callbacks frequently fail, as it appears Asterisk disconnects
    before the associated callback PHP script (located in
    /var/lib/asterisk/bin) may complete the callback transaction.
  2. If one uses the 'CLI' callback capability, then you may
    encounter issues with being able to actually dial people back. The
    reason for this is that the telco only provides a 10-digit CLI, and if
    your provider requires you to add a '1' there is no way to do this
    without hacking the plug-in. Further, if your own dialplan requires an
    access code like '9' you also encounter this problem.
  3. There is no way to provide a number of retries, retry time or
    wait times for an answer. This app will try once, and if it fails, will
    not try again.

Alternative Solution

A replacement script, written in Ruby, has been created to replace
the /var/lib/asterisk/bin/callback PHP script provided with the
callback plugin. The Ruby script takes a different approach to
providing the callback capability, while still supported the HTML form
provided with the plug-in with FreePBX. The enhancements are:

- Provides the ability to set the access code to prepend to the recognized CLI number for a callback

- Uses call files instead of the Manager API

- Allows one to set the number of retries, the retry wait time and the wait time for a caller to pickup an attempt

To use the script below do the following:

(Note: This script requires that Ruby 1.8.x be installed on your Asterisk/FreePBX system)

1. Move /var/lib/asterisk/bin/callback to /var/lib/asterisk/bin/callback.original (to back it up)

2. Download the attached script and copy to
/var/lib/asterisk/bin/callback and then do a

chmod +x
/var/lib/asterisk/bin/callback

3. Add these options to the end of your configuration file at /etc/amportal.conf:

CALLBACK_PREFIX=91
CALLBACK_CLI=Callback
CALLBACK_RETRY=1
CALLBACK_INTERVAL=10
CALLBACK_WAIT=30


Caller ID Lookup Sources

This module provides the ability to specify Sources where inbound calls can have their Caller ID looked up so Caller ID Names can be used or changed.

The Caller ID Lookup Sources module enables your FreePBX system to lookup Caller Names that are related to your number whether they be in your phonebook, in a database, or via an HTTP lookup. The module can also be used with scripts in the agi-bin directory of your asterisk configuration.

------------------------------------------------------------------
Add Source

A Lookup Source let you specify a source for resolving numeric caller IDs of incoming calls, you can then link an Inbound route to a specific CID source. This way you will have more detailed CDR reports with information’s taken directly from your CRM. You can also install the phonebook module to have a small number <-> name association. Pay attention, name lookup may slow down your PBX.

Source Description: A description for this source.

Source Type: Choose the source type.
Internal: uses astDB as a lookup source. Use the phonebook module to populate it.

ENUM: Uses DNS to look up the callers Name; it uses ENUM lookup zones as configured in enum.conf

HTTP: This executes an HTTP GET passing the caller number as an argument to retrieve the correct name.

MySQL: the queries a MySQL database to retrieve the caller name.

Cache results - Decide whether or not to cache the results to a astDB; it will overwrite present values. It does not affect internal source behavior.

----------------------------------------------------

HTTP Lookup Configuration:

Configuring the module to lookup a Caller Name (cn) via http lookup is simple. Most http lookup providers will provide you with a string you'll need to query with (query string). We'll need to break up the string into it's various components to populate the CID Lookup Source Fields.

For the purposes of this tutorial, i'm going to use configuring metrostat as an http provider. They expect queries in the form: http://cnam1.edicentral.net/getcnam?q=C&f=S&dn=[NUMBER] where [NUMBER] is a 10 digit telephone number.

Source Description: Metrostat
Source Type: HTTP
Cache Results: (leave this unchecked)

Host: cnam1.edicentral.net
Port: (leave blank)
Username: (leave blank)
Password: (leave blank)
Path: /getcnam
Query: ?q=C&f=S&dn=[NUMBER]

ok.. so let's break this up so that we can see what we did. Source Description is nothing more than a name you want to call the lookup source. Since it's metrostat, we're just going to call it metrostat.

Source Type: Here, we can specify whatever the lookup source type that is supported for the query. In this particular case, it's an http lookup so we're going to specify http.

Cache Results: You can check this and the system will keep successful lookups for future use, thus eliminating excessive remote lookups for numbers that have already called you in the past.

Host: This is the hostname or IP address of the host you'll be querying. In our example, it's cnam1.edicentral.net.

Port: You can pass your query to any port that is running httpd. This is usually left blank if it's on the standard port (80). In our example, we're leaving it blank, because it's on the standard http port.

Username and Password fields: The username you're issued by the provider if it's needed, otherwise, it's blank. In this case, it's blank. This goes for the password as well.

Path: This is the first thing after the hostname (including the slash. Up to, but NOT including the '?' symbol. That's reserved for the query line otherwise it just won't work.

Query: This is everything after the Path entry. In our example, we had '/getcnam' so we'd be putting the following in here. '?q=C&f=S&dn=[NUMBER]'. The [NUMBER] variable will automatically be filled in with the incoming caller number.

After you've filled out and submitted your changes (remember to hit apply changes), go to the incoming route and select the appropriate caller id lookup source, submit the changes, and apply and you're good to go! enjoy!


Conferences (MeetMe)

Information

Conferences is a standard multi-party conferencing facility that is available as a destination.

Conference Details

  • Conference Number
    • This is a number that local users can dial to join the conference
  • Conference Name
    • This is used as an Identifier, along with the number, when picking a conference as a destination
  • User PIN and Admin PIN
    • If either of these options are set, anyone calling into the
      conference will be prompted for a PIN. If 'user' is left blank, they
      can just push '#' to enter. The only use of 'Admin' is to not actually
      open the conference until the admin user has arrived. If 'Music On
      Hold' is enabled, users will be placed on hold with the 'default' Music
      On Hold class.

Conference Options

  • Join Message
    • This is a sound that is played to all users upon entering.
  • Leader Wait
    • When there is an Admin PIN set, the conference won't start until the 'Admin' user joins. See above.
  • Quiet Mode
    • Usually a 'bing' noise is played when a user enter or leaves
      the conference, alerting other members to the fact that someone has
      joined or left. You can disable that by selecting 'Yes' here.
  • User Count
    • When someone joins, the conference will say 'There are (number) people in this conference"
  • User Join/Leave
    • When someone connects to the conference, it will ask them to
      record their name. The conference will then announce when they join and
      leave, by name.
  • Music On Hold
    • Totally enables or disables Music on Hold in this conference.
  • Allow Menu
    • Enables the user or admin to enter an the management mode by pushing '*'. The commands whilst in management mode are:
      • 1: Mute yourself
      • 4 or 6: Decrease or Increase the Conference Volume (eg, the sound you hear)
      • 7 or 9: Decrease or Increase your Volume (eg, the sound other people hear)
    • Additionally, Admin users have the added features of:
      • 2: Lock or Unlock the conference
      • 3: Eject the last person that called
  • Record Conference:
      Toggle this to yes if you would like to record the conference.

Core Module

Description

The Core Module is a collection of the fundamental modules that make up FreepPBX. It includes:

Extensions

Used to create User Extensions

FreePBX User

Used to create a FreePBX User (when operating in Devices and Users Mode) *This module is not present in the latest version of FreePBX 2.4.x

Devices

Used to create a FreePBX Device (when operating in Devices and Users Mode) *This module is not present in the latest version of FreePBX 2.4.x

Inbound Routes

Used to route incoming numbers, DIDs, to various destinations

Outbound Routes

Used to route outbound dial patterns to various Trunks

Trunks

Used to configure Zap, SIP, IAX and other types of Trunks to the PSTN or to interconnect with other PBXs

Administrators

Used to create FreePBX Administrators and provide access to limitted modules or extnension ranges *note this module will not work and the new users will not be able to log into the system unless AUTHTYPE is set to 'database' in /etc/amportal.conf

General Settings

A collection of system wide and defaut settings used by different systems within the PBX.


Custom Extension and Destinations

Custom Extension and Destinations
This documentation needs writing, for adding custom extensions and destinations to the registries. Contact us if you would like to write this page.

As a place holder until someone wants to update this page, here is a good writeup on using destination:

http://ronaldgibson.googlepages.com/unknowndestinationfreepbxv2.4.0beta


Customer Database Module

No documentation availabe. You can help by contributing to this book page.


Day / Night Mode Control

This module alows for the inbound routing changes to be placed via a phone call - without requiring access to the web configuration page. The module is useful for any situation where inbound routing needs to be changed by end users on-the-fly. An example of this would be a situation where an office would close early because of bad weather. In this case, just dial the appropriate feature code, and voila! all inbound calls go straight to the "night" IVR (or voice mail, or calls get forwarded to an answering service, etc.)

Configuration

  • Day/Night Feature Code Index: This is just a descriptive number to help identify which this particular feature code
  • Description: A descriptive name for this feature code
  • Current Mode: The mode that the feature code is currently set to (is now "day" or "night"?)
  • Optional Password: A password that protects the current state (dayor night) from being toggled by unauthorized personnel.

For an in depth tutorial, click here.


Destinations

Destinations are provided by various modules. If you don't have
these modules installed, you will not see these destinations. Current
modules are:

Extensions

Lets you send a call to an Extension directly.

Voicemail

Lets you send a call to an extensions Voice Mail box directly.

Terminate Call

Lets you terminate a call by sending it to one of the following special destinations:

  • Hangup
  • Congestion
  • Busy
  • Play SIT Tone (Zapateller)
  • Put caller on hold forever
  • Play ringtones to caller until they hangup

Queues

Lets you send a call into a Queue, which is an intelligent Ring Group.

IVR

This lets you jump to a specific Digital Receptionist IVR.

Time Conditions

This lets you do the equivalent of an 'IF', and you can pick two
different destinations depending on the time of the call. See Time
Conditions for more information.

Ring Groups

A Ring Group is a group of phones that ring simultaneously or sequentially. A dumber version of Queues

Conferences

Lets you use a standard tele-conferencing application. Please read Conferences before using

Misc Destinations

This lets you enter a number, just as if you dialed it on one of
your phones. Useful for making an "outside" number (such as a mobile
phone) a destination.

Custom App

You can create your own application using the standard Asterisk
Dialplan language in the file /etc/asterisk/extensions_custom.conf, and
reference it with this. An example would be:

custom-count2four

exten => s,1,SayDigits(1234)

exten => s,2,Hangup

After placing this in /etc/asterisk/extensions_custom.conf, you can send callers to this by using 'custom-count2four,s,1'


Dictate Module

The Dictate Module will not be found in the list of modules. When loaded it adds a dictation area to the Extension
Module. Load the module then look in an extension for 'Dictation Services'

Dictation Services

  • Dictation Service:
    Enable or Disable with this drop down menu.
  • Dictation Format:
    This is the sound format that your dictation is saved in. Choose from: Ogg Verbis, GSM, or WAV.
  • Email Address:
    This is the email address that the completed dictations are sent to.



To dictate enter *34 on the phone. Enter a file name with numbers followed by the pound key, for example 1234#.
To start dictate dial 1 to switch to record mode then dial * to start recording. If you want to start over, dial 8.
Toggle between pause and recording by dial *.
When you are done with the recording, dial 1 to go to playback mode then dial * to start to listen to your dictation, press * to toggle pause.
Dial 2 to toggle fast playback. Dial 7 or 8 to seek forward and reverse.

To mail the dictation, dial *35 then enter your file name used previously.


DISA

Overview

DISA (which stands for Direct Inward System Access) allows you to
provide an internal dialtone to external callers. When you configure a
DISA destination, you can use it as a menu destination within a Digital
Receptionist, so that you can get an internal Asterisk dialtone. This
means you could call into your Asterisk system and dial out as if you
were using an extension connected to the Asterisk box itself.

The security implications of DISA are obviuous! Make sure you have a proper authentication scheme in place so that unautherized callers cannot abuse your system!

Changelog

V2.0 - Added Response Timeout, Digit Timeout and Reuqire Confirmation

Configuration

  • DISA Name: A friendly name to help you identify the DISA destination.
  • PIN: A code required to be input by the
    remote user to access the dialtone. You should always require a PIN for
    security purposes! You can, if you must, leave it blank. The voice
    prompt will still say 'Enter Password', but you won't need to. This is
    on the list of minor annoyances that need to be fixed.
  • Caller ID: You can change the outgoing caller ID for this DISA by setting an override value.
  • Response Timeout: The maxium amount of time it will wait before hanging up if the user has dialed an incomplete or invalid extension
  • Digit Timeout: The maximum time delay between digits
  • Require Confirmation: Before prompting for
    password, it will say 'Press 1' every 3 seconds until a digit
    (anything, it doesn't have to be '1') is pressed. It will then continue
    on and ask for a password. This is mainly useful if dialling out
    through a device (eg, X100P, TDM400, or a poorly configured VSP) that
    doesn't tell you when the call is actually answered.
  • Context: By default, internal context
    (from-internal) is used. You could provide a custom context to limit
    the access for this DISA. (Only for the experienced)
  • Allow Hangup:When checked allows the current call to be ended and return the
    caller to the dial tone by pressing the Hangup feature code. (**)


DUNDi Lookup and Extension Registry Proxy

DUNDi Lookup and Extension Registry Proxy
This module provides a proxy for the extension registry feature in FreePBX. If you have a DUNDi trunk configured in FreePBX to other branch offices, and a route defined to access it, then this module will proxy and check for extension number duplication in other branch offices when creating new extensions, ringgroups or any other extension that can be dialed.
The module does not consider the outbound dialing rules. It simply checks the DUNDi cloud down all configured DUNDi routes, and if another system indicates they have that extension, then it will consider this a conflict and report it back as such since a change in routing rules would easily expose this conflict.
As a secondary function, the module allows you to easily check for numbers present within the configured DUNDi routes in a simple GUI page.


Extensions

Information

This area is for handsets, softphones, paging systems, or anything
else that could be considered an 'extension' in the classical PBX
context.

Overview

Defining and editing extensions is probably the most common task
performed by a PBX administrator, and as such, you'll find you'll
become very familiar with this page. There are presently four types of
devices supported - SIP, IAX2, ZAP and 'Custom'. This page also
configures how voicemail is handled on a per-extension basis.

Adding a new extension

Phone Protocol

Pick one of SIP, IAX, ZAP or Custom

  • SIP is the Standard protocol for VoIP handsets and ATA's. The Session Initiation Protocol (SIP) is a signalling protocol, widely used for setting up and tearing down multimedia communication sessions such as voice and video calls over the Internet.
  • IAX is 'Inter Asterisk Protocol', a newer protocol supported by only a few devices (eg, PA1688 based phones, and the IAXy ATA)
  • ZAP is a hardware device connected to your Asterisk machine - Eg, a TDM400, TE110P.
  • Custom is a 'catch all', for any non standard device, eg
    H323. It can also be used for "mapping" an extension to an "outside"
    number. For example, to route extension 211 to 1-800-555-1212, you
    could create a custom extension 211 and in the "dial" text box you
    could enter: Local/18005551212@outbound-allroutes

Extension Number

This must be unique. This is the number that can be dialled from any other extension, or directly from the Digital Receptionist if enabled. This

may be any length, but conventionally a three or four digit extension is used.

CID Num Alias

The CID Number to use for internal calls, if different from
the extension number. This is used to masquerade as a different user. A
common example is a team of support people who would like their internal
callerid to display the general support number (a ringgroup or queue).
There will be no effect on external calls.

SIP Alias

If you want to support direct sip dialing of users internally
or through anonymous sip calls, you can supply a friendly name that can
be used in addition to the users extension to call them.

Secret, aka 'Extension Password'

This is the password used by the telephony device to authenticate
to the Asterisk server. This is usually configured by the administrator
before giving the phone to the user, and is usually not required to be
known by the user. If the user is using a soft-phone, then they'll need
to know this password to configure their software.

NAT

very important to set this to 'yes' if you want to be able to use
your phone behind a nat firewall seperate from the lan that your
asterisk box is on.

Disallow

disallow any codec you do not want to use. common setting for this
if you want to make sure a device only uses the codec set in the allow
section is "all" (without the quotes).

Allow

allow a codec of your choice. primarily as an example i would use
"g729" or "GSM" (without the quotes), only one codec can be set here.
This is usefull if used with the disallow option set to "all" and you
set the definitive codec you want to use on allow, garunteing that you
will use that codec.

Mailbox

This option allows you to set what mailbox you would like to use.
Normally you would use 'your extension'@device . but if you want to say
have an extension's phone's light or dial tone indicate when a
different box has voicemail you can set it to 'extension vm'@device. so
say extension 1002 wants to know when 1001 has vm, then set this to
1001@device on 1002's mailbox setting.

Record Incoming

Option to record the calls received on this extension. There are three options:

  • Always
  • Never
  • On-Demand (User can dial '*1' to enable whilst in a call)

Record Outgoing

Same as above but for outgoing calls

Voicemail and Directory

Selecting 'Disabled' turns off voicemail for this extension totally, and these further options are hidden.

Voicemail Password

This is the password used to access the voicemail system (*98). It
can be changed by the user when they log into their voicemail (after
logging in, they dial 0 then 5).

Email Address

The address that voicemails notifications will be sent to

Pager email address

This email address will be sent a small message notifying of voicemail messages, suitable for an email-to-pager service.

Play CID

Read back caller's telephone number prior to playing the incoming
message, and just after announcing the date and time the message was
left.

Play Envelope

Envelope controls whether or not the voicemail system will play
the message envelope (date/time) before playing the voicemail message.
This settng does not affect the operation of the envelope option in the
advanced voicemail menu.

Delete Vmail

If set to "yes" the message will be deleted from the voicemailbox
(after having been emailed). Provides functionality that allows a user
to receive their voicemail via email alone, rather than having the
voicemail able to be retrieved from the Webinterface or the Extension
handset.

CAUTION: You must have email attachment set to yes if you
don't want your voicemail system to email you a notification saying
'You have a voicemail' and then immediately delete the voicemail.
Make sure you've fully tested voicemail-to-email before you turn this on. See Email Problems for hints.


Feature Codes

Note: The following are from Asterisk@Home 2.7

extensions.conf

*411 — Directory

*78 — Do Not Disturb activate

*79 — Do Not Disturb deactivate

*98 — Check voicemail (enter extension)

*98nnn — Check voicemail (extension nnn)

*97 — Check voicemail (for calling extension)

*70 — Call Waiting activate

*71 — Call Waiting deactivate

*72 — Call Forward activate

*73 — Call Forward deactivate

*90 — Call Forward on Busy activate

*91 — Call Forward on Busy deactivate

*69 — Call trace

*11 — Log in (not used for fixed devices)

*12 — Log out (not used for fixed devices)

888 — Barge-In (unconfirmed, please update wiki)

8nnn — Meet-Me conferencing (nnn = 1 to 4-digit extension number)

*77 — Record announcement

*99 — Playback announcement

7777 — Simulate incoming voice call

666 — Simulate incoming fax call (unconfirmed, please update wiki)

*43 — Echo test

extensions_custom.conf

*60 — Time

*61 — Weather

*62 — Wakeup call

*65 — Playback extension

300 3nn 91npanxxxxxx — Set speed dial nn to 9-1-NPA-NXX-XXXX

3nn — Dial speed dial entry nn

*3nn — Listen to / dial speed dial entry nn

features.conf

 

#70 — Call Parking (Will park call on ext#71-79 and announce)

 


Follow Me

Information

Follow-Me settings are just like a mini Ring Group, but it's tied directly to your extension. It's configured exactly the same way as a ring group, including the ability to use an announcement to alert people that they're being transferred elsewhere.

The dialplan has been structured such that any place where one might dial to ring an extension, the Follow-Me ringgroup will be engaged if it is defined. This means that from an IVR calling from outside and internally when dialing an extension you will reach the ring group in place of the extension. This behavior is enabled by simpling including the ext-findmefollow context ahead of the ext-local context any place that extensions are dialed.

There are other 'creative' uses of the Follow-Me function. At the simplest, you can simply put in the extension of the Follow Me number with a choice to go to its voicemail if not answered and you will be accomplishing exactly the same thing as if the extension was being dialed. However, you can now diverge with such simple things as changing your ring time to override the default, adding an announcement, going to an alternative voicemail or other destination if not reached, and of course adding multiple numbers and ring strategies when someone tries to call that number.

Add Follow Me

In addition to the settings for Ring Groups, the following options are available:

Disable

By default (not checked) any call to this extension will go to this Follow-Me instead, including directory calls by name from IVRs. If checked, calls will go only to the extension.
Checking this box is often used in conjunction with VmX Locater, where you want a call to ring the extension, and then only if the caller chooses to find you do you want it to come here.

Initial Ring Time

This is the number of seconds to ring the primary extension prior to proceeding to the follow-me list. The extension can also be included in the follow-me list. A 0 setting will bypass this.

Ring Strategy

The following Ring Strategy is only available in Follow Me (but not for Ring Groups):

  • ringallv2:Ring primary extension for initial ring time followed by all additional extensions until one answers

FreePBX 2.3 Screen Shots

This page contains Screen Shots from many common FreePBX Version 2.3 Module Screens


Adding Extensions

Adding Extensions

Digital Receptionist

Digital Receptionist

Edit Administrator

Edit Administrator

Edit Recording

Edit Recording

FreePBX System Status Dashboard

FreePBX System Status Dashboard

IVR Editing

IVR Editing

Miscellaneous Applications

Miscellaneous Applications

System Recordings

System Recordings

FreePBX Framework Module

The FreePBX Framework module is not like other modules on the system. Its purpose is to provide a mechanism to upgrade the overall Framework of FreePBX as described below.

Simple FreePBX Architecture Description

FreePBX is a modular architecture that can easily be extended with new modules to add functionality to the main system or extend existing functionality. In the absence of any module being loaded, there is still a foundation of code that is required to enable the system. This code base is referred to as the FreePBX Framework. Once the Framework is loaded, the system requires a minimal set of modules to provide any useful functionality. These include Core as well as a handful of other Key modules without which the system will not properly function. When FreePBX is initially installed, these modules are all installed at that time.

Module Administration in Framework

Part of the Framework code is the Module Administration Page. Once you have a Framework loaded, Adding modules is fairly straight forward. Under the covers, FreePBX simply explodes a module's tarball into the modules directory and then executes any included install scripts that the module requires.

Framework as a Module

In order to provide a mechanism that upgrades the Framework code, it was previously necessary to manually download a new version's tarball and then run install_amp which would upgrade you to that new version. Running install_amp is effectively takes files form the tarball and copies them onto the framework code in a similar manner to installing a module. (It does a bit more, but that is out of the scope of this description). The Framework module does effectively the same thing as install_amp. After being loaded by Module Admin it has a directory structure that is very similar to what you would see when untarring a FreePBX tarball. The Module Administration code then executes Framework's install script as if it were just another module. (As far as it know, it is just another Module). The install code proceeds to do almost the same thing that install_amp does resulting in all the Framework files being updated, and any incremental upgrade scripts being run. (It shares the same libraries as install_amp so it is basically the same code running.

 


FreePBX System Status

The FreePBX System Status page is the first page you land on when you login to the web interface.

This module shows you important Notices found by the system (such as FreePBX updates and other issues that may affect the operation of your system), various Statistics relating to the operation of your system, and the status of various components needed for your system to run properly.

Most of these components are self-explanatory.

However, you should note that the transmit and receive statistics (under "Network" in the "System Statistics" box) are reported in Kilobytes, and must be multiplied by 8 in order to get the bandwidth in kilobits.


FreePBX Users & Devices

About Device & User Mode

By default, FreePBX operates in "Extension Mode." In Extension Mode, devices (such as phones) and users (people) both use the same identification number, i.e. their extension number. Each Device (Phone) is assigned one User (Extension) and they cannot be easily changed, without accessing the FreePBX User Interface. A single module, entitled "extensions" will appear on the left hand side of the FreePBX interface, and all settings relating to both the phone and the user will appear in the same place.

FreePBX can be switched to operate in "Device & User Mode." Device & User Mode will cause the "Extensions" module to disappear and to be replaced with two separate modules, one entitled "Devices" (i.e., phones) and the other entitled "Users" (i.e., Extensions).

The Devices module sets up device related settings, i.e. the Device Number (which should be a number that is different from any extension number), the Device's Name (usually the location of the phone), the password the Device uses to register with the PBX, etc. The Users module sets up the User related settings, such as the extension number, the person's name, whether that person has voicemail, the voicemail password, etc.

There are two main advantages to Device & User Mode.

First, two devices (i.e., phones) can share the same extension number. For example, if a manager has an office on two different floors, he might want to have the phones in both offices have the same extension number, so that regardless of which office he's in, a call to the same extension number will ring both phones. Both phones can also receive intercom calls to the same extension number, and both phones will show when he has a voicemail. This can be accomplished by setting up each of his phones as a Device, setting up one User (i.e. the manager), and then assigning the User to both devices.

Second, extensions can roam from one device to another. For example, suppose that John and Jane both work in the same office. John works Monday, Wedneday, and Friday. Jane works on Tuesday and Thursday. When John and Jane come to work each day, they could pick up any phone that's not in use and "login" using a feature code, thereby causing their extension # to be registered to the phone that they are in front of, so that they can start receiving and making calls. Before they leave, they can log-out using another feature code. If they both happen to come in on the same day for some reason, either can use any other unassigned phone.

For instructions on how to enable Device & User Mode, follow this link:

http://www.freepbx.org/support/documentation/installation/enabling-devic...


Gabcast

No documentation availabe. You can help by contributing to this book pate.


General Settings

Dialling Options

Aterisk Dial Command Options: See below.
Asterisk Outbound Dial Command Options: See below.

Dial command options

The most common options are 'tr', which means 'The person
receiving the call can transfer a call using #' and 'Generate ringtones
when an extension is ringing'. Other useful options are (Note, this
list is very incomplete. The complete list of options is huge and can
be seen by typing 'show application Dial' in the asterisk console):

  • A(x) -Play an announcement to the called party, using 'x' as the file.
  • D([called][:calling]) - Send the specified DTMF strings
    *after* the called party has answered, but before the call gets
    bridged. The 'called' DTMF string is sent to the called party, and the
    'calling' DTMF string is sent to the calling party. Both parameters can
    be used alone.
  • h - Allow the called party to hang up by sending the '*' DTMF digit.
  • H -Allow the calling party to hang up by hitting the '*' DTMF digit.
  • r - Indicate ringing to the calling party. Pass no audio to the calling party until the called channel has answered.
  • t - Allow the called party to transfer the calling party by sending the DTMF sequence defined in features.conf.
  • T - Allow the calling party to transfer the called party by sending the DTMF sequence defined in features.conf.
  • w - Allow the called party to enable recording of the call by
    sending the DTMF sequence defined for one-touch recording in
    features.conf.
  • W - Allow the calling party to enable recording of the call
    by sending the DTMF sequence defined for one-touch recording in
    features.conf.


Voicemail

    Number of seconds to ring phone before sending callers to voicemail

    This is reasonably self explanitory, except this number is also
    used in Ring Groups to determine the amount of time each phone will
    ring in a 'hunt' or 'memoryhunt' ring group. Setting 'Ring Time' in the
    Extensions Module will have precedence over this setting. Generally there are
    5 seconds per ring, so 20 seconds would be 4 rings.

    Extension prefix for dialing direct to voicemail

    Dialing this before an extension will not ring the extension, but send you directly to this person's voicemail box.

Company Directory

The company directory is reached by dialling '*411', or a user pushing '#' (if enabled) whilst in an IVR.

    Find users in the Company Directory

    When searching the Directory, this lets you chose wether it's searched by First name or Last name.

    Play extension number

    Plays a message "Please hold while I transfer you to extension
    xxx" that lets the caller know what extension to use in the future. to
    caller before transferring call. Useful if you have an indial range, or
    wish to let users know which extension they can dial directory from the
    IVR.

    Operator Extension:

    This is the number the callers (both internal users and callers calling in from the outside) will dial to get to the operator.

 


Inbound Routes

Information

The 'Inbound Routes' page lets you configure which destination
FreePBX uses for calls coming from Trunks. When a call is recieved by
Asterisk from a trunk, the DID and/or Caller ID is matched and the call
is dispached as per your settings.

DID Number

For a SIP or IAX peer, this is usually your Account Number. If you
have an account of '888123123', putting that in here will match calls
coming from that provider. Leaving this blank will match 'any'.

CID Number

The Caller ID number sent to your machine. This is not something
you should trust, as it is easily spoofable (both with Voice over IP
and normal telephone lines). Leaving it blank will, again, match any.

You can leave both of these blank to match any call, from any caller.

Fax Handling

With these two options, you can manage the way faxes are received
over this trunk. Note that VoIP and Faxing does not work well together,
and you most probably will have problems.

Privacy Manager

Turn this on to ask for the callers Caller ID if not provided.
This is useful for telemarketers, as they are loathe to divulge this
information and will usually hang up.

Options

Pause After Answer

The number of seconds we should wait after performing an Immediate
Answer. The primary purpose of this is to pause and listen for a fax
tone before allowing the call to proceed.:

Alert Info

ALERT_INFO can be used for distinctive ring with certain SIP
devices. The standard names are 'Bellcore-dr1' to 'Bellcore-dr7', Snom
phones can additionaly use a http:// url of a WAV or MP3 file.

Set Destination

This is a standard destination option group.


Inventory Database

No documentation availabe. You can help by contributing to this book pate.


IVR (Digital Receptionist)

Information

The 'Digital Receptionist' page is the interface used to setup
your auto attendant when people call your business or home. Normally
heard as "Thanks you for calling MYBUSINESS, for Sales press 1, for
Service press 2", etc.

Getting Started

  • For Pre-freePBX 2.1 IVR's, see (history)

When you select Digital Receptionst, the first page is now a
brief set of instructions on how to drive the IVR. You can either edit
an IVR, if one is existing, or create a new one by clicking on 'Add
IVR'.

Naming your IVR

Unlike the old Digital Receptionist system, this creates the IVR
(and calls it 'Unnamed') as soon as you click 'Add' - You'll see it
appear on the right straight away.

Your options are reasonable self-explanitary:

  • Change Name: This is simply the descriptive name that appears on the right, and in the drop-down menu of Destinations
  • Timeout: This is the amount of time the system waits before sending the call to the 't' destination
  • Enable Directory: If you switch this on, users will be able to dial the FeatureCodes" title="Multiple pages with this name">feature code for Directory from IVR and access the Directory service.
  • Enable Direct Dial: If you enable that, users will, in addition to being able to dial the IVR options, be able to directly dial an Extension number
  • Announcement: A System Recording that is played to users when they enter the IVR. This can be set to 'nothing'

Configuring your IVR

In the box on the left, enter the option for the user. This may be
one, or a series of numbers, or, 'i', or 't'. 'i' and 't' have special
meanings:

  • i: This is the destination used when a
    caller enters an invalid option - if you only have 1 2 and 3 defined,
    and they push 4, it will jump to this destination. The default option
    for this, ff you don't supply an 'i' destination, its to replay the
    current menu. If they hit 'i' more than three times, the call is hung
    up.
  • t: This is the destination used when
    nothing happens. You might wish to have this one go directly to an
    operator, in case the caller doesn't have a DTMF phone. As with 'i',
    the default is to replay, and if it's been replayed three times, hang
    up.

Note that with freePBX 2.1, Destinations are only displayed if there is at least one entry in there. So if, for example, you have the DISA module enabled, but no DISA entries, it will not appear in the list.

The rest of the page should be self explanitory. Use 'Increase
Options' or 'Decrease Options' to alter the number of options
available. This won't let you decrease it to less than the number of
options that are currently set.

To delete an option, simply leave the selection blank.

When you're finished, click 'Save' and you have your new IVR.


Java SSH Terminal

No documentation availabe. You can help by contributing to this book pate.


Miscellaneous Destinations

Overview

Misc Destinations allow you to use anything you could dial from a standard extension as a destination.

Example

You might want to have an IVR option that is 'If you want to speak
to rob, you can connect to his mobile by pushing 2', and having a Misc
Destination of

  • Rob's Mobile
  • 00402077155 (Note the leading 0, as that's what I use for an 'external' call)

Then in the IVR menu, you simply select 'Rob's Mobile' as a destination, and it will connect the caller through.


Music On Hold

Information

Here you can configure the Music On Hold files that will be
played. You can configure various 'Classes' of Music on Hold, which are
used in Queues. The idea behind that is your 'default' MOH is standard
music, and your various queues can have different 'hold' music while
they're waiting.

Uploading a file

Simply select 'browse' and pick a MP3 file on your system. Then click 'Upload'. It will appear in the list of MOH files below.


Add Streaming Catagory

With the release of FreePBX 2.5, Music On Hold comes with the new feature "Add Streaming Catagory." This addition to the Music On Hold module allows the Integrator to offer MOH streamed from the Internet or via the Line IN port on a sound card as a catagory.

In this example a Police Scanner is connected to a Line In port on a FreePBX 2.5.0 / Asterisk 1.4.21.2 system.  The directions used to get Audio in and available are located here - http://www.sthomas.net/go/blog/view/38 NOTE: Skip editing musiconhold_X.conf. Use the GUI.

Music On Hold Module

This example uses a scirpt created in /usr/sbin/ called "ast-playlinein" and it is used to control the parameters of "arecord" which is the program doing the heavy lifting here. Pointing at the script was all that was needed.

Streaming Catagory

Streaming from the Internet is not that different. A good link to get started is http://www.voip-info.org/wiki-Asterisk+config+musiconhold.conf

 


Online Support


Online support offers you two links, one to this Wiki, the other to a built-in IRC client

IRC Online Support


Clicking on this loads a Java IRC client, which connects to the
FreeNode? IRC network, and joins the '#freepbx' channel, where most of
the developers are.


NOTE

When you join the IRC channel, the FreePBX version you're using,
and the kernel version of your machine will be sent to everyone in the
channel automatically. This is to assist developers with diagnosing any
problems you have, but also may cause you to have privacy concerns. If
you do not wish this information to become public, DO NOT USE THIS
CLIENT.


Outbound Routes

Information

Outgoing calls are sent over trunks as determined by the
configuration of the Outbound Routing page. This is designed to be as
flexible as possible, and allows for fall-through and multiple paths -
eg, Least Cost Routing!

Adding a Route

Route Name

This is simply a descriptive name for the trunk, which will be shown on the right hand side of the screen.

Route Password

If this route is hit by a caller, and this is not empty, they will
be prompted for a password. If they get the password incorrect, the
call will be dropped, and will not try for a match on any further
trunks.

Emergency Dialling

Settnig this means that this route is used for 'Emergency' calls.
If you wish to have a different caller ID send for this call (eg, when
you're dialling 000/911/999), turn this on. Any calls matching this
dial pattern will use the Caller ID specified in Emergency CID rather
than the usual Outbound CID in Extensions.

Dial Patterns

A Dial Pattern is a unique set of digits that will select this trunk. Enter one dial pattern per line.

Rules:

  • X - matches any digit from 0-9
  • Z - matches any digit form 1-9
  • N -matches any digit from 2-9
  • [1237-9] - matches any digit or letter in the brackets (in this example, 1,2,3,7,8,9)
  • . - wildcard, matches one or more characters
  • | - seperates a dialing prefix from the number (for example,
    9|NXXXXXX would match when some dialed "95551234" but would only pass
    "5551234" to the trunks)

Examples

  • 000
    • Only use this route if the user has dialled '000' exactly.
  • 9|911
    • Only use this route if the user has dialled '9911', but take off the 9 before sending it to the trunk
  • 0|.
    • Any number that starts with 0, use this route

Trunk Sequence

When this route is matched by the Dial pattern above, trunks are
tried in the order listed here. Note that if you have a password
protected trunk, and the caller gets the password wrong, it does not
proceed to the next trunk. Make sure you click 'Add' after adding the
trunk, and before you click 'Submit'.


Paging and Intercom

Information

Paging lets you, with phones that support it, do a 'Page' - you
dial a number, and all the phones in the group pick up automatically,
go into hands free, and play through their speaker what the caller is
saying. This is very useful in a small office environment ("Pizza is at
reception!"). To add a paging group, simply put in the Paging group
number - this is the number that people will dial to page the group,
and the list of devices, one per line, that are to be paged.

Note that Intercom is not currently supported

Supported Phones

Snom Phones

To enable paging, under 'Advanced', select 'Enable Intercom', and 'Dialog-Info Call Pickup'

GXP-2000 Phones

Select the line you use to register to the FreePBX machine, and
enable 'Allow Auto Answer by Call-Info' and 'Turn off speaker on remote
disconnect' (otherwise it will beep with a busy tone eternally when the
page is finished)

Aastra 480i

Appears to support it out of the box.

Aastra 9133i

Appears to support it out of the box. Tested with FreePBX v2.1.1 and Aastra firmware v1.4

Polycom 301, 501?, 601

You MUST provision the phone from a FTP server to
load the Polycom config files, then edit sip.cfg, search for
"alertInfo" and set "voIpProt.SIP.alertInfo.1.value" to equal "Ring
Answer". Now reboot your phone to load the new config option.

for example:

<alertInfo voIpProt.SIP.alertInfo.1.value="Ring Answer" voIpProt.SIP.alertInfo.1.class="4"/>

Uniden UIP200

Does NOT support auto answer as of firmware 4.77

Swichvoice IP10S

Appears to support it out of the box, I updated the firmware before testing this feature. ( IP10 SP v1.0.1 (Build 3)

Asterisk Console

To use the asterisk console as a paging extension (for example, if
you have overhead speakers plugged into your sound card), add a new
custom extension with "console/dsp" as the dialstring. You'll have to
assign this an extension number, but then you can use it in the paging
module. Note that as of FreePBX 2.2 (currently in svn) there is special
handling for this extension type, and a beep will be played when it
first answers.

Other phones

Please fill in information for any other phone you have working.


Comments




Paging to Grandstream no longer works properly

by versodom, Monday 28 of August, 2006 [07:03:09]

Somone modified the page function, and the GXP-2000 Phones do not work
properly anymore while paging. I have provided a temp fix untill this
is sorted out.

If you add the following in extensions_custom.conf, then when you
dial 7243 or "PAGE" on your phone you will get a 2 way page on the SIP
extensions as entered below.

(You will need to change the SIP extensions entered below, to the ones you want to use for paging. )

If you want one way paging to many phones dial 7241 or "PAG1".

For simplicity, I assigned one of the programable buttons on all of my Grandstream GXP-2000's to dial 7243.

from-internal-custom

exten => 7243,1,SIPAddHeader(Call-Info: answer-after=0)

exten => 7243,2,Page(SIP/6331&SIP/5481&SIP/3361&SIP/6271&SIP/2741&SIP/7461&SIP/8431|d)

exten => 7243,3, Hangup

exten => 7241,1,SIPAddHeader(Call-Info: answer-after=0)

exten => 7241,2,Page(SIP/6331&SIP/5481&SIP/3361&SIP/6271&SIP/2741&SIP/7461&SIP/8431|)

exten => 7241,3, Hangup


Parking Lot

This module allows you to configure all the normal features.conf settings for the parking lot functionality of Asterisk.

These include:

  • Enable/Disable the feature (while retaining settings)
  • Parking Lot Extension
  • Number of Parking Lot slots
  • Parking Timeout before the call is returned to the orignal parker if not picked up
  • Parking Lot Context (for advanced use)

The more useful part of this module is to specify a destination for
parked calls that get orphaned. This can occur if the call is not
picked up and for some reason the original parker can not be reached.
(e.g. the original parker is on the phone and does not have call
waiting or ignores it). In this case, call is diverted to the chosen
destination which is any of the standard destinations provided in all
modules that include such an option. Prior to sending the call to that
destination, you can configure the following options to further
identify the orphaned all:

  • Parking Alert-Info (to provide a unique ring for the returned call)
  • CallerID Prepend (to identify the call with additional CID information)
  • Announcement (to be played to the orphaned caller to reassure them that you are trying to get them back to someone)

Parked Calls with BLF indicator light. -teknoprep- (you know you love me)

i have got this to work on my GXP-2000 phones using trixbox 1.1.1
on vmware with 1.2.12.1 compiled asterisk. so if you follow these
instructions you should be good to go. This tid bit of bash commands
was taken from X-Rob's lesson on
http://www.freepbx.org/2006/09/28/un-trixbox-your-trixbox/ .

  • important.. IF YOU RUN VMWARE... do not do the first 2
    lines... NEVER run yum on your vmware box for updates if you run a
    trixbox vmware image. CentOS 4.4 does not cooperate well with vmware.



yum -y install kernel-smp-devel

yum -y update

sed -i s/enabled=1/enabled=0/ /etc/yum.repos.d/trixbox.repo

rm -rf /usr/sbin/safe_asterisk /usr/lib/asterisk/modules/app_trunkisavail.so

cd /usr/src

wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.12.1.tar.gz

wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.9.1.tar.gz

wget http://ftp.digium.com/pub/libpri/releases/libpri-1.2.3.tar.gz

wget http://ftp.digium.com/pub/asterisk/releases/asterisk-addons-1.2.4.tar.gz

tar zxvf asterisk-addons-1.2.4.tar.gz

tar zxvf libpri-1.2.3.tar.gz

tar zxvf zaptel-1.2.9.1.tar.gz

tar zxvf asterisk-1.2.12.1.tar.gz

cd libpri-1.2.3 && make install

cd ../zaptel-1.2.9.1 && make install

cd ../asterisk-1.2.12.1 && make install

cd ../asterisk-addons-1.2.4 && make install

asterisk -rx "stop now"

/etc/init.d/zaptel restart

amportal start



Don't forget to hit enter at the last line.

Now, lets get BLF working for Parked Calls.

cd /usr/src

wget http://aussievoip.com/storage/users/315/315/images/179/metermaid-1.2.7.1...

cd asterisk-1.2.12.1

patch -p0 < /usr/src/metermaid-1.2.7.1.txt

make

make install

asterisk -rx "stop now"

/etc/init.d/zaptel restart

amportal start

Now lets edit some files

nano /etc/asterisk/extension_custom.conf

add this to the file

exten => _*3, 1, ParkAndAnnounce(pbx-transfer:PARKED|120|SIP/${DIALEDPEERNUMBER}|sip_incoming,${DIALEDPEERNUMBER},1)

;the line above this, NEEDS TO BE ON ONE LINE... not on 2

exten => 701,1,ParkedCall(701)

exten => 701,hint,Local/701@parkedcalls

exten => 702,1,ParkedCall(702)

exten => 702,hint,Local/702@parkedcalls

exten => 703,1,ParkedCall(703)

exten => 703,hint,Local/703@parkedcalls

exten => 704,1,ParkedCall(704)

exten => 704,hint,Local/704@parkedcalls

Save the file and now lets edit another file

nano /etc/asterisk/features.conf

now it should look something like this when you are done in the General context

parkext => 700 ; What ext. to dial to park

parkpos => 701-704 ; What extensions to park calls on

context => parkedcalls ; Which context parked calls are in

parkingtime => 5000 ; Number of seconds a call can be parked for (default is 45 seconds)

  • the important part is for the parkext to = 700 and the
    parkpos to be 701 and up.. usually i would only need 4 parking lots for
    now since most phones just don't have enough buttons to support more...
    but hey you can do whatever you need.

now lets use it

when a call comes in you press Transfer - *3... this will park the
call... the asterisk box will call you back and tell you where its
parked... First call parked always goes to 701.

now on your phone setup one of your button light indicators for

Asterisk BLF 701

Asterisk BLF 702

Asterisk BLF 703

Asterisk BLF 704

(this is how i did it on my gxp-2000)

now when a call gets parked anyone with this setup will see the
light indicator light up for any of the 4 parking lots... this will
give you the ability to have the call picked up from anywhere on the
system that has this setup... just press the button.

  • Problems - when i first boot up my GXP-2000 the lights for
    the BLF of Parked Calls will light up even tho no calls are parked...
    this will change once a parked call is picked up on that lot. (2) If
    you restart asterisk in any way... it seems that parked BLF stops
    working... ANYONE have a fix for that?

Phone Book and Phone Book Directory

No documentation available. You can help by contributing to this book pate.


PHP AGI Library Configuration

No documentation available. You can help by contributing to this book pate.


PHP Configuration Information

No documentation available. You can help by contributing to this book page.


PIN Sets


PIN Sets are a module that allow you to use a range of PIN's, rather than just one. This is currently only used by Trunks, but it potentially could be used in DISA or anything else that uses PIN's for authentication.

 


Print Extensions

This module will print a list of users and extensions. Handy for creating a company directory listing quickly.



Queue Priorities

Queue Priorities
This page needs writing, please contact us if you would like to write this page.


Queues

Information

Queues allow you to manage a large number of incoming calls, as
you would expect to have in a Call Center. This is very intelligent
application, and as such, it has a lot of configuration options.

Queue Setup

Queue Number

This is the number that can be dialled from any extension to be
put into the queue. This is also the same number you use when selecting
a destination. Agents (eg, the people receiving the call) log in and
out of the queue by dialling the number then a single asterisk to log
in, or two asterisks to log out (eg, 700* to log in, 700** to log out)

Queue Name

A short name for the queue. This is only used in the web interface for ease of identification.

Queue Password

If you are concerned about security, you can put a password on the
queue to stop just anyone from logging into it. After the Agent tries
to log in, he or she will be prompted for the password here.

CID Name Prefix

As an agent may be logged into more than one queue, it can be
useful to have a prefix on the Caller ID seen on the agent's phone, so
he or she knows which queue the call is coming from - eg, 'Sales:' or
'Tech:.

Static Agents

These are devices that are always logged into the queue. This is
useful if you have an agent that is not directly connected to the
FreePBX PBX, but is telecommuting. You can put their number in as it
would be dialled from an internal extension. (Note that his has changed from AMP
— You used to need to prefix the number with a #. This is no longer
needed). The number will be routed as if it was dialled from a normal
extension, so dial rules in Outbound Routing and trunks are matched as
per normal.

Queue Options

Agent Announcement

This is an announcement that is played to the Agent prior to
connecting in the caller. An example could be: "the Following call is
from the Sales Queue" or "This call is from the Technical Support
Queue". This is useful when agents don't have Caller-ID on their phone,
or don't look at it for the CID Name Prefix. These recordings are
managed by System Recordings.

Hold Music Category

This is the category of Music (or Commercial) played to the caller
while they wait in line for an available agent. Categories are set up
in On Hold Music

Max Wait Time

The maximum number of seconds a caller can wait in a queue before
being pulled out and set to the destination beow. Set to 0 for
unlimited, but that's not recommended.

Max Callers

The maximum number of people permitted to wait in the queue. If
this number is reached, any further people will be sent straight to the
destination below.

Join Empty

If you wish to allow callers to join queues that currently have no agents, set this to yes. This is not recommended.

Leave When Empty

If you wish to remove callers from the queue if there are no
agents present, set this to yes. If you have agents logging in and out
all the time, you may wish to set this to 'no', otherwise a good idea
is to set this to yes - everyone's gone home, and didn't get around to
answering the customer.

Ring Strategy

There are 6 ring patterns to chose from:

  • ringall: ring all available agents until one answers (default)
  • roundrobin: take turns ringing each available agent
  • leastrecent: ring agent which was least recently called by this queue
  • fewestcalls: ring the agent with fewest completed calls from this queue
  • random: ring random agent
  • rrmemory: round robin with memory, remember where we left off last ring pass

Agent Timeout

The number of seconds an agents phone can ring before we consider it a timeout.

Retry

The number of seconds we wait before trying all the phones again

Wrap-up-time

After a successful call, how many seconds to wait before sending a
potentially free agent another call. The default is 0, or no delay.
You'll probably have grumpy agents with that. Try setting it to 30
seconds.

Call Recording

Incoming calls to agents are recorded. They are saved to /var/spool/asterisk/monitor.

Caller Announcements

Frequency

How often to announce queue position, estimated holdtime, and/or
voice menu to the caller. Set to 0 to Disable Announcements totally.

Announce Position

Set to 'Yes' to announce position of caller in the queue.

Announce Hold Time

Should we include estimated hold time in position announcements?
Either yes, no, or only once; hold time will not be announced if it's
estimated to be less than 1 minute.

Voice Menu

After announcing Position and/or Hold Time, you can optionally
present an existing Digital Receptionist Voice Menu - eg If you'd like
to leave your name and number for a call back, please push * now. This
will not effect your position in the queue. This voicemenu must only
contain single-digit 'dialed options'.

Join Announcement

The announcement played to callers once prior to joining the queue. These recordings are managed by System Recordings.

Fail Over Destination

This is a standard destination that is used in an overflow/timeout condition, which is configured above.


Ring Groups

Information

This defines a 'virtual' extension that rings a group of phones
simultaneously, stopping when any one of them is picked up. This is
basically just a dumber version of Queues for those that don't need the
extra functionality of it.

Add Ring Group

Group Number

This is the number that is dialled from any extension that will make all of the phones in the group ring.

Ring Strategy

  • ringall: Ring all available channels until one answers (this is the default)
  • hunt: Take turns ringing each available extension
  • memoryhunt: Ring first extension in the list, then ring the 1st and 2nd extension, then ring 1st 2nd and 3rd extension in the list.... etc.
  • *-prim: These modes act as described above. However, if the primary extension (first in list) is occupied, the other extensions will not be rung. If the primary is FreePBX DND, it won't be rung. If the primary is FreePBX CF unconditional, then all will be rung
  • firstavailable: Ring only the first available channel
  • firstnotonphone: ring only the first channel which is not offhook - ignore CW

Extension List

List extensions to ring, one per line. You can include an
extension on a remote system, or an external number by suffixing a
number with a hash (#). ex: 2448089# would dial 2448089 on the
appropriate trunk (see Outbound Routes)

CID Name prefix

You can optionally prefix the Caller ID name when ringing
extensions in this group. ie: If you prefix with "Sales:", a call from
John Doe would display as "Sales:John Doe" on the extensions that ring.
(Note, you can't use a space here.)

Ring Time

How long (in seconds) the group of phones will ring before
'failing' and doing the options specified below. This is not related to
the 'hunt' ring strategy above, but is the total length of time a call
will stay in the group before using the 'Destination if no answer'
selection.

Destination if no answer

This gives you a selection of things to do when the call exceeds
the 'Ring Time' specified above. Options may be added and removed from
this list depending on the modules that are installed. See Destinations for more information.


System Recordings


System Recordings are used in Ring Groups and Conferences for various announcements.


Uploading a file


If you're uploading a .wav file directly, it needs to be saved as a 'PCM Uncompressed' 8000hz 16bit mono file.


Time Conditions

Information

Time Conditions are a module that appears as a destination when
installed. It allows you to do an 'if' based on the current Time,
Weekday, Day of the Month, or Month. At the moment it's reasonably
basic with no support for 'AND' or 'OR', but you can chain together
time conditions to do the same thing.

Time Condition Name

A short name which is used to identify the Time Condition in a destination.

Time Condition

Select from the pull down menus the time range that you want to use. Note that '-' means 'Any'.

Destinations

You have a choice of two destinations,
depending on wether the time is matched or not. You can chain together
time conditions to get an 'OR' or 'AND' effect. Unfortunately, there's
no easy way to do that... at the moment!

Example of OR

Lets say you want Monday to Friday, 9am to 5pm or Saturday 9am to 12pm to go to IVR1, whilst all the rest of the time, it goes to IVR2.

  • Timecond1 Match Mon-Fri, 9am-5pm
    • True: Goto IVR1
    • False: Goto Timecond2
  • Timecond2: Match Sat, 9am-12pm
    • True: Goto IVR1
    • False: Goto IVR2

Example of AND

On Between 9am and 5pm on Monday and Wednesday, go to IVR2. Otherwise go to IVR1.

  • Timecond1: Match 9am-5pm
    • True: Goto Timecond2
    • False: Goto IVR1
  • Timecond2: Match Monday
    • True: Goto IVR2
    • False: Goto Timecond3
  • Timecond3: Match Wednesday
    • True: Goto IVR2
    • False: Goto IVR1

Time Groups

Time Groups
Needs Content, please contact us if you would like to help write this page.


Trunks

What are trunks?

You use a trunk to carry a call (or any number of calls) to a VSP
or a device that cares about what number you send to it (eg, another
Asterisk/FreePBX Machine). There are 5 types of trunks supported:

  • Zap Trunk
  • Define-IAX2 Trunk
  • SIP Trunk
  • Define-ENUM Trunk
  • Custom Trunk

All the trunks are configured mainly in the same way:

General Settings

Outbound Caller ID

Setting this option will override all clients' caller IDs for calls placed out this trunk. The format is

"caller name" <#######>

Leave this field blank to simply pass client caller IDs. Quotes are optional around the caller name, but highly recommended.

Never Override CallerID

Some VoIP providers will drop the call if you try to send an invalid CallerID (one you don't 'own.') Use this to never send a CallerID that you haven't explicitly specified in this trunks Outbound Caller ID field or the Outbound CID of an extension/user. You might notice this problem if you discover that follow-me or RingGroups with external numbers don't work properly. Checking this box has the effect of disabling 'foreign' caller IDs from going out this trunk. You must define an Outbound Caller ID on the this trunk when checking this.

Maximum channels

This limits the maximum number of channels (simultaneous calls)
that can be used on this trunk, including both incoming and outgoing
calls. Leave blank to specify no maximum.

Dial Rules

Dial rules are very powerful, but quite simple to learn.They tell
the server how calls will be dialed on this trunk. It can be used to
add or remove prefixes. Numbers that don't match any patterns defined
here will be dialed as-is. Note that a pattern without a + or | (to add
or remove a prefix) is useless.

Rules:

  • X - matches any digit from 0-9
  • Z - matches any digit from 1-9
  • N - matches any digit from 2-9
  • [1237-9] -matches any digit or letter in the brackets (in this example, 1,2,3,7,8,9)
  • . - wildcard, matches one or more characters (not allowed before a | or +)
  • | - removes a dialing prefix from the number (for example,
    613|NXXXXXX would match when some dialed "6135551234" but would only
    pass "5551234" to the trunk)
  • + - adds a dialing prefix from the number (for example,
    1613+NXXXXXX would match when some dialed "5551234" and would pass
    "16135551234" to the trunk)

Examples:

You're in Melbourne, Australia. You normally dial 8888-1234, but
your VSP requires you to have an area code on all calls. This means
that a user dialing an 8 digit number wants to have the Melbourne area
code put on the front (03)

  • 03+NXXXXXXX

You're in England, but your VSP is in the US. You want to be
able to dial UK Numbers without having to dial the whole 01144 string

  • 01144+NXXXXX.

ENUM Trunks

There's not all that much configuration to be done, as enum
lookups are done automatically on the e164.org domain. e164.org allows
you to register your normal, home, telephone line as a VoIP line
without needing government or offical supervision. e164.org is run by
volunteers and is donation supported.

Some example Dial Rules for an E164 trunk would be:

  • Australia (07 Area Code)
    • 617+NXXXXXX
    • 61+0|NXXXXXXXX
    • 0011|.
  • North America (613 area code)
    • 1613+NXXXXXX
    • 1+NXXNXXXXXX
    • 011|.

IAX2 and SIP Trunks

The configuration is as per above, but with the additional
requirement of Incoming and Outgoing settings. These are available from
your VSP, or, from the VSP Hints page.

ZAP Trunks

Zap trunks consist of physical hardware in your machine that uses
the Zapata interface. This is configured in /etc/zaptel.conf and
/etc/asterisk/zapata.conf. Documentation on these files is available on
the voip-info wiki.

Custom Trunks

If you're using H323, Chan_capi, or any other non-standard trunk,
you can explicitly configure the Dial string to usew with this trunk
type, replacing the number to be dialed with $OUTNUM$. Eg:

  • CAPI/XXXXXXXX/$OUTNUM$/b
    • You can use either gX or ContrX to identify CAPI groups or individual controllers
  • H323/$OUTNUM$@XX.XX.XX.XX
  • OH323/$OUTNUM$@XX.XX.XX.XX:XXXX
  • vpb/1-1/$OUTNUM$:



Comments

Changing enum servers

by benmack, Monday 18 of September, 2006 [07:47:33]

Under freepbx version 2.1.1, it seems enum.conf is ignored

I found that changing line 326 in extensions.conf does the trick

exten => s,n,Set(E164NETWORKS=e164.arpa-e164.info-e164.org) ; enum networks to check

HTH


Upgrade Module

Upgrade Module Overview

The Upgrade Module is a module that is used to allow FreePBX to be upgraded from one major version number to a higher version. For example, to upgrade from version 2.3.X to 2.4.0. The way that FreePBX manages the Online repository is by providing an XML file associated with each X.X version of the product. FreePBX uses this XML file to detemine what the latest available modules are for your current version and where to find them. It then compares this against what you have installed to allow you to upgrade.

In order to upgrade from a version such as from 2.3.X to 2.4.X you need to have Module Admin download modules-2.4.xml instead of modules 2.3.xml. Since FreePBX uses its internal version number to detemine which one to pull, the upgrade process simply bumps the current FreePBX version to the lowest possible version so that it will download the proper XML file. The lowest version, in the case of 2.4, would be 2.4.0alpha0 which in fact never existed since we always start with version 1 for alpha, beta and RC releases.

Once you have bumped the version number, you need to go through the process of downloading modules. The Framework module is a special module that often has libraries and functions required by many other modules. So this module usually needs to be downloaded first, followed by all the other modules. Also - it is important during the upgrade process that you don't press the Apply Configuration bar. The Upgrade module has a mechanism that should keep the Apply Configuration bar from coming up until you have finished the upgrade process. This is to make sure you keep from running the configuration generation part of FreePBX (retrieve_conf) which may have other requirements not yet upgraded until all modules are brought up to date.

Upgrade Process

During each step of the upgrade process the top display of the Upgrade module will show the current version for FreePBX Base, FreePBX Framework and FreePBX Core since these are typcially the core critical modules that need to get fully upgraded before the module is satisified and removes itself. You should still be certain to upgrade ALL other modules that have upgrades available or you will have potential for errors.

The step that are involved in the upgrade process are:

  1. One might acquire the 2.4 Upgrade Tool through many methods but most will simply get it through the familiar Module Admin by clicking on the “Check for updates online” link/button.
  2. Install the module called "2.4 Upgrade Tool," by clicking on the module and selecting Install. Then click the process button at the bottom of this screen.
  3. Now we will see a typical module install screen requesting that we confirm the “2.4 Upgrade Tool 2.3.0 will be installed and enabled.” Click the “Confirm” button now to proceed.
  4. Once this tool is installed a new option will show up on the left navigation bar under the Admin Section titled “2.4 Upgrade Tool.” Think of this temporary tool as your guide through a healthy install process. Only once the upgrade process is complete and no longer necessary will this tool handily remove itself from the navigation bar.
    2.4 Upgrade Bar Left Navigation Bar

  5. We will return to this button several times as it will guide us through the complete multistep process dynamically providing status updates and instructions as we proceed. Go ahead and click the “2.4 Upgrade Tool” button now.
  6. Please take the time to read through the provided instructions.
    2.4 Upgrade Version Progress
  7. Please note, as tempting as it may be, the repeated instructions of IMPORTANT: Do NOT Apply Configuration Changes (reload bar) until you have gone through all the steps!
  8. Click on the Upgrade Now button and confirm the first part of the upgrade process at this time.
  9. Read the instructions (RTMF) as they have dynamically updated. Notice that the line FreePBX Base Version: now has a new value of “2.4.0alpha0.” Each of these three components, Base, Framework, and Core will display their currently respective versions on the local system and be updated as we progress.
    2.4 Upgrade Version Progress
  10. The instructions now say to go back to Module Admin and choose to ONLY upgrade “FreePBX Framework.” Do so now following the usual upgrade confirmation and return prompts.

    Framework Upgrade
  11. Now we may upgrade Core and everything else in this step. Once again do so now.
  12. As previously stated we have repeated been told to NOT press the reload bar until you have completed the previous step. We may do so now.
  13. Upgrade Complete.
  14. Notice that the “2.4 Upgrade Tool” has removed itself from the navigation bar as it has completed its task of guiding us through the easiest FreePBX upgrade to date.

Once you have completed these step you will be upgraded to the new version. Under normal circumstance, the module should delete itself. If it is still there, try clicking on it and see if that removes it. If not, read the status information to see if you have really finished the upgrade. If you have it should go away.


VoiceMail Blasting (VMB)

VoiceMail Blasting VMB

In Progress


Voicemail Module

The Voicemail Module is a required for the system to work properly. For
that reason, once installed it can not be un-installed. This module
provides the functionality to the Extensions or Users Page to configure
Voicemail. It also provides the Feature Codes used to dial into a users
Voicemail box.


ZAP Channel DIDs

ZAP Channel DIDs

In Progress


ZOIP

ZoIP - The Great Asterisk Underground Empire

Originally from http://uc.org/read/ZoIP

Zoip is a new way of playing Zork - It uses Text-to-Speech and
Speech Recognition to play the classic infocom game, Zork. It appears
as a destination. If you wish to play this without needing to go through an IVR,
the easy way is to create a Ring Group with an invalid extension in it, and a destination of Zoip.

Also, if your FreePBX machine is on a slow connection, BE WARNED. This is a 7 Megabyte
download. That's a lot through a slow connection. You don't need to use
the 'online modules' link to donwload this, you can download it
manually - see the bottom of this page, with the title of 'Downloading
it Manually'. I can't download it through a 1.5mbit connection in under
the default 30 second max execution time. If you don't want to download
it manually, and the screen just goes white and stops after 30 seconds,
this is because your 'max_execution_time' in /etc/php.ini is too short.
Set it to 600 (10 minutes), restart apache (/etc/init.d/httpd restart as root) and it should work fine.

As it does some new, non-standard things, there are some packages
that need to be installed. Without these, the module will not work
properly.

CenOS/RHEL/FC3/4/5 Instructions

From the shell:

[root@asterisk1 ~] rpm -i http://mirror.freepbx.org/sphinx2-0.6-0.i386.rpm

(This could take a couple of minutes to finish downloading, as it's a big file)

[root@asterisk1 ~]# wget http://mirror.freepbx.org/Speech-Recognizer-SPX-0.0801.tar.gz

--09:08:27-- http://mirror.freepbx.org/Speech-Recognizer-SPX-0.0801.tar.gz

=> `Speech-Recognizer-SPX-0.0801.tar.gz'

... A few lines of text ...

09:08:30 (117.55 KB/s) - `Speech-Recognizer-SPX-0.0801.tar.gz' saved [91123/91123]

[root@asterisk1 ~]# tar -xzf Speech-Recognizer-SPX-0.0801.tar.gz

... A lot of text scrolls past ...

[root@asterisk1 ~]# cd Speech-Recognizer-SPX-0.0801

[root@asterisk1 Speech-Recognizer-SPX-0.0801]# perl Makefile.PL --sphinx-prefix=/usr

Found Sphinx-II in /usr and /usr/share/sphinx2

Checking if your kit is complete...

Looks good

Writing Makefile for Audio::MFCC

Writing Makefile for Audio::SPX

Writing Makefile for Speech::Recognizer::SPX

[root@asterisk1 Speech-Recognizer-SPX-0.0801]# make install

cp SPX.pm blib/lib/Speech/Recognizer/SPX.pm

cp SPX/Config.pm blib/lib/Speech/Recognizer/SPX/Config.pm

... about 20 lines ...

Installing /usr/share/man/man3/Speech::Recognizer::SPX.3pm

Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Speech/Recognizer/SPX/.packlist

Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod

[root@asterisk1 Speech-Recognizer-SPX-0.0801]# cd ..

[root@asterisk1 ~]# wget http://mirror.freepbx.org/Proc-Daemon-0.03.tar.gz

... file downloads ...

[root@asterisk1 ~]# tar zxvf Proc-Daemon-0.03.tar.gz

... 9 files ...

[root@asterisk1 ~]# cd Proc-Daemon-0.03

[root@asterisk1 Proc-Daemon-0.03]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for Proc::Daemon

[root@asterisk1 Proc-Daemon-0.03]# make install

... 6 lines of installation ...

[root@asterisk1 Proc-Daemon-0.03]# cd ..

[root@asterisk1 ~]# wget http://mirror.freepbx.org/Config-Tiny-2.08.tar.gz

... file downloads ...

[root@asterisk1 ~]# tar zxvf Config-Tiny-2.08.tar.gz

... 26 files ...

[root@asterisk1 ~]# cd Config-Tiny-2.08

[root@asterisk1 Config-Tiny-2.08]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for Config::Tiny

[root@asterisk1 Config-Tiny-2.08]# make install

... a few lines...

[root@asterisk1 Config-Tiny-2.08]# cd ..

[root@asterisk1 ~]# yum install festival

Setting up Install Process

Setting up repositories

... etc ...

[root@asterisk1 ~]#

That's it - you can now download the module and it'll work happily!

Debian, Ubuntu, apt-style distros

This is taken from the Zoip installer, and may not be accurate. I don't have a Debian machine here, so I can't test this.

  • Install Sphinx2, and Festival
    • Install the Sphinx2 binaries and developer kit
apt-get install sphinx2-bin libsphinx2-dev

    • Install the Sphinx2 Perl bindings
wget http://mirror.freepbx.org/Speech-Recognizer-SPX-0.0801.tar.gz

tar -xzf Speech-Recognizer-SPX-0.0801.tar.gz

cd Speech-Recognizer-SPX-0.0801

perl Makefile.PL --sphinx-prefix=/usr

make install

    • Install Festival, and the 'kallpc8k' voice, sitable for telephone quality
apt-get install festival festvox-kallpc8k

  • Add some additional perl modules used by ZoIP from the apt repository
apt-get install libproc-daemon-perl liblog-log4perl-perl libconfig-tiny-perl

Installing ZoIP Manually

Beacuse this is abig file, it may be neccesary to download the module manually. This is simply done by:

[root@asterisk1 ~]# cd /var/www/html/admin/modules

[root@asterisk1 ~]# wget http://mirror.freepbx.org/modules/release/2.2/zoip-0.2.0.tgz

... file is downloaded ...

[root@asterisk1 ~]# tar zxvf zoip-0.2.0.tgz

... files are extracted ...

From here, you can go back to your Module Administration page, and
the Zoip module will appear as a 'Disabled Module' ready to be
installed, without requiring going to the online module repository.


Third-Party Unsupported Modules

Contributed Modules

These modules are unsupported — they have been known to cause happiness and glee, or dizziness, confusion, and frustration.

The modules can be obtained from:
http://mirror.freepbx.org/modules/release/contributed_modules/

Instructions for installing third-party modules that are not yet included in the Third-Party module repository (e.g. recently contributed modules) can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/modules/README.t...

Please understand that these modules were written by other users of FreePBX and not the FreePBX development team. Issues such as what version or versions they will work with, problems with installation, etc. need to be directed to the authors of these modules and not the FreePBX development team.

If you have installed any of these modules and are about to upgrade your system from one version to a newer version it is possible that right after the upgrade your system might not work properly. If that is the case please first disable these third party modules to verify that they are not causing the issue. Some authors don't upgrade versions as quickly as others do and might not know there is a problem.

It is also possible that when you upgrade that suddenly you might not have a working GUI to disable a module. If that becomes the case, you can do the following at a Linux prompt (assuming standard install defaults):

/var/www/html/admin/modules/framework/bin/module_admin disable {module name}

If you are an author of any module(s) here we request that you please keep it updated, and in your description include what version(s) it has been designed and tested on, so that in the future people will know how current the posted module is when they look at it.


Agent Administration

Agent Administration

This module allows for adding and modifying new agents to the freePBX system. This would include the agent ID, full name and password. This rewrites the agents.conf file.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Boss-Secretary

Boss-Secretary

The boss-secretary module creates a special ring group which includes one or more "bosses" and one or more "secretaries". When someone calls the boss' extension, the secretary (or secretaries) extension will ring too, allowing the secretary to answer his or her boss' call.

Additionally one may define one or more chiefs, who may call the boss directly, without ringing the secretary's extension.

The module includes codes for activating, deactivating and toggling the groups' state. For example, when a secretary ends her working day, she may turn off the boss-secretary group dialing *255<ext number>, so her boss will receive calls directly.

The module generates the appropriate hints to have ip phones show the groups state by subscribing to the *255<ext number> extension.

Note: this module send an alert info of type alert-group to ip phones, so we recommend to set up the boss' phone so its ring tone is silent or very quiet when receiving an alert info of type alert-group; this way, the boss won't be distracted by phone calls which are being processed by his or her secretary. Calls from the secretary to the boss will ring normally.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/modules


Bulk DIDs

Bulk DIDs

Manage DIDs in bulk using CSV files.

Start by downloading the Template CSV file or clicking the Export DIDs button.

Modify the CSV file to add, edit, or delete DIDs as desired. Then load the CSV file. After the CSV file is processed, the action taken for each row will be displayed.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Bulk Extensions

Bulk Extensions

Use CSV files to add, edit, or delete one or more extensions. Export extensions feature now available. Improved interface and documentation.

This module is a replacement and upgrade for the importextensions module. After installation there will be a Bulk Extensions entry under Third Party Addon on the Tools tab on the left side menu. The Bulk Extensions page allows you to download a template CSV file. It also allows you to upload a CSV file for processing. Almost all the options shown on the FreePBX 2.4 Extensions interface can be specified in the CSV file. The template CSV file has examples of adding a new extension, editing an existing extension, and deleting an existing extension.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release
Note that versions starting with 0. can be used with FreePBX 2.4 (and possibly earlier), while versions starting with 2.5. may only be used with FreePBX 2.5.


Caller ID Popup (post answer for use with Ring Group)

CID Popup

Caller ID Popup (post answer for use with Ring Group)

This specialized module allows you to specify a destination IP Address of FQDN to be associated with various AGI Scripts that can be launched as part of a post answer action in a ringgroup. The scripts are specialized to deal with various destination CRM systems such as SugarCRM and other future system to provide push based CID PoPup and other CRM data to the agent who answers the call. Once you make an entry including the relevant information, these instances will be available within ringgroups to optionally associated a ringgroup with one of the configured servers so that such CRM data can be displayed to its agents.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Caller ID Superfecta

Caller ID Superfecta

Purpose:

This module installs the Caller ID Superfecta (a utility program which adds incoming CallerID name lookups to your Asterisk system using several different sources: AsteriDex, the Google Phonebook, AnyWho, and WhitePages, to name only a few) as a FreePBX Module. As a Module, the Configuration items can be changed from the Web UI.

Notes on version 2.2.2:

Caller ID Superfecta is an easy to install module designed for use with almost any Asterisk/FreePBX/MySQL PBX distribution. It is user interface driven, and requires no special technical capabilities to install and configure.

Version 2.2.2 of the caller ID Superfecta provides worldwide caller ID lookup from multiple sources, and provides support for international caller ID formats of all varieties.

This most recent release of the Caller ID Superfecta includes 27 different data sources, and supports multiple caller ID schemes, that allow the PBX administrator unparalleled flexibility in configuration of inbound caller ID functions. More data sources are added frequently. And just the make sure your Superfecta keeps working at its peak, all data sources can be updated and new sources added online with the click of a mouse using Caller ID Superfecta live data source update – and its all built right into the module.

Conditions/Prerequisites:

This module depends up the Asterisk DB AMP user ID and password being set at their default values. The module script may be edited to reflect your actual id and passwords if you have changed them.

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBX In A Flash
Elastix *See Special Installation Steps

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_Caller_ID_S...

The principal community discussion thread for the module is located here.

http://pbxinaflash.com/forum/showthread.php?t=4387

Release Announcement:

http://www.freepbx.org/forum/freepbx/users/caller-id-superfecta-module-f...

Theory of Operation v 2.0.0:

http://projects.colsolgrp.net/documents/show/2


Capture Groups

Capture Groups

This module allow the administrator to quickly create and administrate capture groups. It will configure every extension's capturegroup and pickupgroup automatically.

Additionally it will generate a virtual extension number which, which notifies users (phones) of calls in the capture group.

Using the following asterisk 1.4.x patch (File asterisk-1.4-pickupbycallid.patch)

one can subscribe phones to the virtual extension generated by this module and receive notifications of all calls received by the groups' members, and may pickup the incoming call by pressing the subscribed button (tested with snom phones and firmware >= 7.1.35).

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/modules
Also see Ticket #3910


CDRCost (a.k.a. Call Cost)

CDRCost (a.k.a Call Cost)

This downloadable FreePBX plug-in allows you to setup the Call Cost parameters, categorizing each call and assessing a cost for each. From this data you can generate call costs by create a new table called cdrcost in the asteriskcdrdb (which contains the cost and the used rate of each calls which is not 0). Afterwards you can generate many kinds of statistics from this (to see which extension, group etc. called which direction, and how much the cost was for you).

You can define the following parameters:

Zone Group

These are a collection of zones which are only used for grouping of Zones (for the UI). You can put each Zone into one Zone Group.
Parameters:

  • You can give a name for each Zone Groups.

Example of Zone Groups:

  • Local
  • Long Distance
  • Mobile
  • International, etc.

Zone

These are the definition of the Zones.
Parameters:

  • You can give a name for each Zone,
  • Assign it to the Zone Group to which it belongs (choose from the list),
  • Define which pattern is used for this Zone. This pattern is a regular expression which will be fitted on the destination number (i.e. Do not use the Asterisk style patterns NXZ!!!). Example:
    ^1888[0-9]{7}$

Schedule

A Schedule is a collection of Schedule Parts.
Parameters:

  • You can give a name for each Schedule.

A Schedule Part define an interval(s).
Parameters:

  • You can give a name for each Schedule Part.
  • Assign it to the Schedule which it belongs to,
  • Weekday of this Part 0-7 (both 0 and 7 means Sunday) or -1 in case it's applied for all days,
  • From which time valid (format is: 'hh:mm:ss'),
  • Until which time valid (format is: 'hh:mm:ss').

Rate

This defines the cost parameters from which the cost can be calculated.
Parameters:

  • You can give a name for each Rate.
  • The accountcode of the call when this rate can be applied,
  • From when this rate is valid (format is: 'yyyy-mm-dd hh:mm:ss'),
  • Until when this rate can be used (format is: 'yyyy-mm-dd hh:mm:ss'),
  • The outbound Trunk prefix of the call (eg. Zap),
  • Zone for this rate is valid,
  • Rate is the call cost per minutes,
  • Minimum duration which will be charged in seconds,
  • Block size of the call duration (step size) in seconds,
  • Cost of the established connection, connection fee,
  • Disconnection cost,
  • The schedule in which rate is valid.

Maintenance

In this tab you can run a few maintenance operations on the cdrcost table.

The latest release can be found at:

http://www.freepbx.org/trac/browser/contributed_modules/release


Config Editor

Config Editor

Purpose:

This module installs a "protected" version of the Config Edit Program. The "protected" version obfuscates several configuration files, specifically, those that should never be edited by hand.

Conditions/Prerequisites:

This module will co-reside with the Advanced "un-protected" (non obfuscating) Config Editor module.

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBXIAF

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_Config_Edit...


Config Editor (Advanced)

Config Editor (Advanced)

Purpose:

This module installs an "unprotected" version of the Config Edit Program. The "unprotected" version does not obfuscate any of the configuration files, including those that should never be edited by hand.

Notice: Anything which is put in the xxx_additional.conf files will be overwritten by FreePBX.

Don't use this tool unless you are intimate with the workings of FreePBX.

Conditions/Prerequisites:

This module will co-reside with the standard "protected" (obfuscating) Config Edit module.

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBXIAF

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_Config_Editor_(Advanced)


CustomContexts

Currently this is an unofficial module that must be manually installed. It can be downloaded from:

http://mirror.freepbx.org/modules/release/contributed_modules

choosing the latest version of the customcontext module. The easiest way to install it is to dowload it to your desktop and then choose "Upload Modules" in FreePBX Module Admin and install the module.

Then in FreePBX, click on the Tools tab, Module Admin, and Custom Contexts, select Install, click on Process, and then the red bar to complete installation.

Possible Uses

  • Restrict access to certain outbound routes or feature codes by a particular extension or group of extensions.
  • Give particular extension(s) priority access to certain outbound routes, such as a particular emergency route associated with their geographic location.
  • Give certain outbound routes top priority for use during "free" or low cost calling periods, while making those same routes lower priority (or disallowing access entirely) during higher cost time periods.
  • Disallow access to outbound routes (with possible exception of Emergency access) to certain (or all) extensions during particular time periods (don't let night cleaning crew make long distance calls, or disallow outgoing night calls from telephones in children's rooms, while still allowing emergency number calls).
  • Allow two or more families/companies/organizations to use the same FreePBX box, while still allowing each to have access only to "their" outgoing routes and trunks.
  • If you have a SIP provider that does not send DID (normally a pain to handle because you can't create a normal Inbound Route), set up a new custom context (call it idiot-provider), give them no access to anything (deny all), and then specify where you want their calls to go in the Failover Destination. Then put context=idiot-provider in that provider's trunk user details.

What This Module Is NOT Intended For

  • This module is not intended to provide an alternative way to access code that is found in, or might normally be placed in extensions_custom.conf. You probably want the DialplanInjection module if that is what you are trying to achieve.
  • It's also not intended to give you simplified access to existing features, applications, or destinations (e.g. from an IVR) - you probably want to use Misc. Applications and/or Misc. Destinations (or possibly a Custom Extension) for that.

Known Incompatibility

Please be aware that if you you have installed both this module and HUDlite on the same system, HUDlite will allow users to bypass any restrictions placed upon them by this module. Therefore, restricted users should not be given access to HUDlite. Also, a savy user can bypass the system. As soon as they transfer a call, the current dialplan puts them in a new context which is effectively from-internal taking away any restrictions.

Description

One feature which was a bit lacking in Asterisk/FreePBX was the ability to easily create multiple tenants.

This module creates custom contexts which can be used to allow limited access to dialplan applications.

Now allows for time restrictions on any dialplan access!

This can be very useful for multi-tenant systems.

Inbound routing can be done using DID or zap channel routing, this module allows for selective outbound routing.

House/public phones can be placed in a restricted context allowing them only internal calls.

Custom contexts can now be used as destinations. An IVR menu, Time Condition, etc. can now send a caller into a custom context. This feature requires FreePBX 2.2.0rc2 (or the latest SVN version if prior to the release of rc2)

(The following are the module author's comments, "I" refers to the module author, not the original creator of this wiki page).

A number of improvements have been made to freePbx to handle multiple tenants.

1) inbound routing based on zap channel - i used to have to hack it by putting each zap channel in its own context.

2) authtype = database allows for dividing extension ranges

the main problem for me was outbound routing...

I wanted some extensions to dial out one route, and others out another route.

I had to create a custom context for each, then place each in their own custom context, then include all of the contexts which they should have access to. This became a nuisance as each module added its own context to from-internal-additional which could not be included as it also contains outbound-allroutes.

The purpose of this module is to dynamically list all contexts included in any contexts you choose, and allow you to create custom contexts which can include any of these all without config editing.

As an added bonus, I added a select list to the devices/extensions page to allow you to easily select any of your custom contexts to place the device in.

Version 0.1.1 - Now has optional Time Groups which allows you to name a set of times to enable the user to not only deny or allow access to certain dialplan contexts, but to control access to each context by time, date or day also.

Version 0.1.2 - Changes
Bugfixes- deleted routes, etc. now are removed.
Context tests for spaces and illegal chars.
Moved admin to tools to reduce confusion.
Added option to allow entire internal dialplan. (Useful for time limit on everything)
Made description for outbound-allroutes clearer that allowing overrides to allow all routes.

Version 0.1.3 - Made it obvious when allowing one include may allow another entire context.

Version 0.2.0 - Added priority feature to allow the user to control in what order the allowed contexts are included.

Version 0.2.1 - Added Duplicate Context option to easily copy an entire set of rules.

Version 0.2.2 - bugfix

Version 0.3.0 - New Features:
Allow or Deny based on pattern matching.
Failover Destination (one for regular extension, one for failed feature codes)

Bugfixes:
Adjusted Gui, Duplicate context, now duplicates the description too.

Version 0.3.1 - New Features:
Now prompts on delete. After duplicate you are editing new context.
It is now possible to rename contexts.

Version 0.3.2 - New Features:
Optional PIN to protect failover destination.
Contexts can now be used as destinations. An IVR menu, Time Condition, etc. can now send a caller into a custom context.

Version 0.3.3 -
New Feature: Added Set All option to quickly allow/deny all.
Fixed bug which caused routes to be denied after rename/sort/or delete other route.

Version 0.3.4 -
Fix for compatibility issues with FreePBX version 2.3.1.3.

Installation of Beta version

Download the latest Beta version using the instructions in the first paragraph.

If you did not use the instructions for getting and installing the module using wget, then expand the .tgz file into the /var/www/html/admin/modules directory - it will create a new directory called customcontexts. Make sure the group and owner of that directory are asterisk and that the permissions match that of the other module subdirectories.

Browse to FreePBX, Tools | Module Administration. You should see an entry for Custom Contexts. Click on it, click install, then click process and the red bar as usual.

Usage Instructions

Most users will not need to do anything in the Custom Contexts Admin section (now found under the Tools tab) - that is for advanced users. When you "add" or "remove" contexts from the Admin, you are not really adding or removing anything, you are just telling the module where to find all of the includes to list. By default there are three includes which should be sufficient for most users: from-internal, from-internal-additional, and outbound-allroutes. So, skip the Custom Contexts Admin section until you feel comfortable making changes there.

The first thing that you will want to create is time groups, if you plan to use those. The reason for doing this first is so that they will become available in the drop down selections when you create your custom contexts. For each group you create, you can decide which times it should be available. You can define multiple times within one named group, and then each named group then becomes available along with allow/deny for each choice under a custom context (this will become clearer further down), so you can allow, deny, or choose your time group to allow only at specific times/dates/days.

One thing to bear in mind when creating time groups is that this module will not forcibly end calls in progress. So if, for example, you have "free" calling on a particular route from 9:00 PM to 7:00 AM, you probably don't want to set the end time right at 7:00 AM, because then someone could make a call at 6:59 and talk for several minutes into the non-free period.

Now, to actually create a Custom Context, you go to the Custom Contexts page, and add a context - note that the context name may NOT contain spaces. Then add a description (spaces are okay here) and submit.

We'll talk about Dial Rules later - in many cases you will want to leave the Dial Rules blank.

Once the context is created, you can edit it to allow or disallow the features and routes you want a particular extension (or group of extensions) to have access to. There is a "Set All" option to set all the features and routes to Allow or Deny - this is useful when you want to start out with all of the dropdowns in one state, so that you only need to change the exceptions. Then choose "Allow" or "Deny" for each application or route - for example, you may wish to allow all, except for the items you specifically wish to restrict (for example, you probably want to restrict ChanSpy and ZapBarge!). If you have created any time conditions, it will also be possible to select those, to allow a feature or route to be accessed only during certain times. If you have any Dial Rules, you can choose to "Allow Rules" (allow the feature or route only if a Dial Rules pattern is matched) or "Deny Rules" (deny the feature or route only if a Dial Rules pattern is matched).

Certain items are in bold red letters, such as "ENTIRE Basic Internal Dialplan" and "ALL OUTBOUND ROUTES." If you allow ALL OUTBOUND ROUTES, it will override the individual route selections in the following section. So if you want users of this context to have access to all outbound routes, you can just allow outbound-allroutes and ignore the individual route sections (leave them all set to "deny"). But if you want to select routes individually, then make sure that outbound-allroutes is set to "Deny". Of course, you could also use non-overlapping time conditions for outbound-allroutes and individual routes.

If you allow "ENTIRE Basic Internal Dialplan", then it overrides every other selection on the page. You would normally only use this with a time rule, to allow your unaltered dialplan to be used for a portion of the day. Allowing the "ENTIRE Basic Internal Dialplan" without using a time rule is usually pointless. If you want control over individual items, deny "ENTIRE Basic Internal Dialplan", and allow only what you want.

Associated with each item a "Priority" dropdown. All priorities are set to 50 by default (so you can easily make any item higher or lower in priority). The best use of these is in the Outbound Routes section - you WILL want to make sure that any Outbound Routes that you allow are ordered by priority, otherwise your outbound calls may not be routed as you expect. Normally you will want to mirror the priority of the existing routes - the easiest way to do that is add 50 to the number at the start of the route, so for example if you have a route called "outrt-001-Emergency" you could add 50 to the "001" and use 51 as the priority. But note that you do not have to mirror the default priority of routes, which could become useful in certain situations.

For example, let's suppose you have an emergency route that goes to a an emergency answering point in your local area, but you also have another emergency route that goes to an emergency answering point in a community where you have a remote office. You could create two emergency routes going to the two different answering points and let the one going to the local point be higher in priority normally, but create a custom context for your remote extensions and in that custom context, make their community's emergency answering point higher in priority.

One more note about priorities - you can hide the display of the priority dropdowns by clicking on "Hide Sort Option" at the top of any custom context page. BUT - if you click on the "Submit" button while you have the priorities hidden, all the priorities on that page will be reset to the default (50)! So use this option with care!!

Note: This option is no longer available as its purpose was to clean up the page when priorities were listed below each context. Now that the display was fixed, the "hide priorities" option was removed.

At the bottom of the page, you can select a Failover Destination and a Feature Code Failover Destination. The Failover Destination is used when the called number does not start with a * and does not match on any route, while the Feature Code Failover Destination is used when the called number begins with a * and does not match any feature code. Be careful here, because it's possible to send a caller to a destination that gives them access to destinations that you don't intend for them to be able to access. Either or both of the Failover Destinations can be PIN protected, that is, you can enter a numeric PIN to require authentication before continuing to the destination.

Regarding Dial Rules, these can be used when you want to further allow or restrict access based on the number dialed. For example, you could give an internal caller access to a particular route only if 911 was called, or if a local number was called, while restricting their ability to place other calls on the same route. It's also possible to use the | character to strip off initial digits. For example, if you had a dial plan that included something like 90210|1NXXNXXXXXX you could set an outbound route to "Allow Rules" and it would generally restrict access to that route, except for those callers that know that they must dial 90210 prior to the 1+area code+number.

Sometimes you will want to create a new custom context that is very similar to an existing custom context you have already created - perhaps you only want to modify one or two items in the new context. The easiest way to do that is to go into the existing context, then click on "Duplicate Context ..." at the top of the page. This will create a duplicate of the existing context that you can edit as you
wish.

Finally, you need to go to your Extensions page and select each extension for which you wish to use a custom context. On each individual extension page, you should now see a dropdown to allow you to select a custom context. This drop-down is simply a convenient way to fill in the correct context in the "context" textbox. When you click on a custom context, it replaces whatever is currently in the "context" textbox with your new selection - if you choose "Default", it resets the extension back to the default "from-internal" context. Don't forget to click "Submit", and then click the red bar when you are all finished making changes.

NOTE that if you disable or uninstall the Custom Contexts module, you MUST reset all the extensions back to the default "from-internal" context. If you delete a time group, anyone who had that time limitation becomes "Allow" with no time restrictions. If you add a new outbound route, by default that route is set as "Deny" in the Custom Contexts, so you should go into each context and set it to "Allow" (or use a time condition) where appropriate.

One more caveat. After you add an outbound route, it is not available until you reload.


Customer Database

Customer Database

Maintains a customer database.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Dialplan Injection

Currently this is an unofficial module that must be manually installed. It can be downloaded from this unofficial repository. See this FreePBX module tutorial if you need help understanding how to install it.    

Alternately, here is how to get and install this file (version 0.1.1) using wget:
 

cd /var/www/html/admin/modules
wget http://www.zelie.com/~n3glv/asterisk/dialplaninjection-0.1.1.tgz
tar -xzvf dialplaninjection-0.1.1.tgz
rm -f dialplaninjection-0.1.1.tgz
 
 

Description

This unofficial FreePBX module allows you to create short custom dial plan fragments. While such fragments can also be added to extensions-custom.conf, the advantage of creating them in this module is that the resulting dial plan fragment can be directly selected as a destination in modules that use destinations. Optionally, the dial plan fragment can also be accessed directly by calling an extension number. Just about anything that could be put into extensions_custom.conf can be placed in a Dialplan Injection.
 
 
Version history

Version 0.0.1: Initial version

Version 0.0.2:

  • Fixed extension bug
  • Allowed patterns in extension (allows a Dialplan Injection to be accessed by a group of extensions defined by a pattern)
  • Commands are one big text area now

Version 0.0.3:
  • Added ability to add line labels. Labels also become available as destinations for other modules.
  • Each direct dial injection is now in its own context to allow individual inclusion in other contexts.
  • Version now display correctly on screen.

Version 0.1.0:
  • Removed unique constraint on direct dial extension.
  • Added templates for most dialplan apps.

Version 0.1.1: Fixed a few templates and version display bug.
 
 
Installation of Beta version

Download the latest Beta version using the instructions in the first paragraph.

If you did not use the instructions for getting and installing the module using wget, then expand the .tgz file into the /var/www/html/admin/modules directory - it will create a new directory called dialplaninjection. Make sure the group and owner of that directory are asterisk and that the permissions match that of the other module subdirectories.

Browse to FreePBX, Tools | Module Administration. You should see an entry for Dialplan Injection. Click on it, click install, then click process and the red bar as usual.
 
 
Usage Instructions

To create a Dialplan Injection, click on Dialplan Injection and then on "Add Injection" (if you are not already on that page).

Enter a short description for your Injection - this should contain letters and numbers only.

Optionally, you may enter an extension number for direct access, which will allow dialing this injection directly. You may leave the extension field blank if you only plan to access the injection indirectly (such as from an IVR menu choice) OR if you plan to use Misc. Applications to create one or more extensions (or feature codes) for entry point(s). The extension may be a pattern (such as would be allowed in a route dial plan) to match (for example) a range of extensions. Also, you may use a pipe | to strip the preceding digits, as would be allowed in a route dial plan pattern.

Under Destination, choose a destination for use when all the lines in your Dialplan Injection have executed. For example, you could select Core: Hangup if you simply plan to play a message to the caller and disconnect. Or, you could send a caller to an IVR to make another selection.

Click on "Submit" to create the Dialplan Injection. Do not click the Red Bar yet.

Now select the Injection you just created from the list of Injections at the right. When you bring it up, you should see a text box where you can enter the actual lines of your injection. Remember, at this point you are playing the role of computer programmer and if you write bad code, your Injection wont work as you intend. Garbage in, garbage out. So check what you write very carefully.

As with code you might write in an actual context, you can use line labels to allow for conditional or unconditional jumps, or to permit multiple entry points to your code (for example, you might write a routine that returns certain information about an extension - if entered at one point, it might give the information about the extension the user is calling from, whereas if entered at a different point, it might prompt the caller to enter an extension and then give the report about that extension). To use a label, simply enclose it in parenthesis and put a comma between it and the statement, like this:

(label1),NoOp(This is a line with a label)

.....

GotoIf(somecondition?label1)

Each label you use can be selected as an entry point from other applications (for example, in Misc. Applications you will see a radio button and dropdown for Dialplan Injections, and in that dropdown you'll be able to select any labeled statement as an entry point, in addition to the normal entry at the top of the code). For example, if your Dialplan Injection was named My Injection and contained the above code fragment, you'd be able to use "My Injection" as a destination, and also "My Injection-label1".

There's also a "New Command" box that contains some commonly used commands, in order to help you recall the syntax of these commands. You don't have to select anything here but if you do, whatever you select will be pasted into your code.

Remember to put Ringing on a line by itself (usually as the first line of the code) if you want your caller to hear a Ringing signal until the call is answered. Also, you need to use Answer on a line by itself before playing any significant information to the caller (any message not having to do with call progress) in order to comply with legal requirements and to make sure that billing commences at the proper point. Obviously this does not apply for injections that can only be reached by internal callers, or can only be reached after the call has already been answered (by an IVR, for example).

When you are finished writing your code, click on "Submit", and only now should you click the Red Bar to enable use of your Dialplan Injection.

There is one other point that needs to be mentioned: If you have also installed the Custom Contexts module, you can individually allow or deny each Dialplan Injection. Here is how to do that (please note that nothing in the next three paragraphs will make sense to you if you have never used the Custom Contexts module):

Click on the Tools tab, Custom Contexts Admin, and Add context. Put ext-injections in the Context field (this must be entered exactly as shown), and give it a description (e.g. "Dialplan Injections"). Submit the page and click on the Red Bar.

(Optional but recommended): Go back to Tools, Custom Contexts Admin, and click on the description you just created (e.g. "Dialplan Injections"). When the page comes up, give each of the injections a meaningful name, rather than the default ext-injection-number. Note that the numbers at the end of each default injection name match the numbers in angle brackets following each injection name on the Dialplan Injections page. At present the Custom Contexts Admin tool doesn't seem to pick up the "friendly" name of the Dialplan Injections automatically.

After doing the above, you can go to the Setup tab, Custom Contexts, and edit your contexts (this assumes you've already created some custom contexts) as follows: Deny ext-injections, which should now be in red text, unless you want the context to allow ALL Dialplan Injections. Then, allow only those injections you wish to allow in each custom context.
 
 
Examples

Here are some actual Dialplan Injections to give you an idea of how simple a Dialplan Injection can be:
 
 
Play Music On Hold from the default context to the caller for up to 9999 seconds:

SetMusicOnHold(default)
WaitMusicOnHold(9999)

 
 
Inform a caller that no 911 service is available on the line by playing an appropriate recording three times, separated by one second of silence (note this should never actually be used as a substitute for 911 service, it's just an example):

Playback(no-911-2&amp;silence/1&amp;no-911-2&amp;silence/1&amp;no-911-2,noanswer)

The ,noanswer means that if the call has not already been answered it will not be, since this is considered a call progress message (Playback, unlike some other methods of playing audio, defaults to answering the line and requires the ,noanswer appendage if you don't want the call answered).

In both of the above examples, you would probably use Core: Hangup as the Final Destination.
 
 
Before ringing a particular line, play a recording to the caller containing some sort of notice. Here we'll play one second of silence (optional, but useful if some of your callers are calling from a phone with a dial in the handset - it gives them time to get the phone to their ear), then the system recording that says "This call may be monitored or recorded":

Playback(silence/1&amp;this-call-may-be-monitored-or-recorded)
Ringing

Then use Core: and the desired extension (or, if you prefer, a ring group) as the final destination. You can then use this Injection as a selection from your main IVR menu, so that callers that select this extension or department hear the recording first.

In a way this is a trivial example, because when creating a Ring Group you can specify an announcement to be played before ringing commences, and System Recordings lets you concatenate multiple recordings into one (so you don't really need to use a Dialplan Injection if that is all you want to do). BUT, suppose you want to play some audio that is dynamically generated by an AGI script, rather than system recordings? For example, you could call an AGI script that plays some information about current conditions (e.g. system status, the weather, or whatever you might be monitoring), then returns to an IVR as a final destination.
 
 
Inform caller that parking lot slot is empty (example pattern usage) - Let's say you have a parking lot for parked calls with eight slots, which can be numbered 901-908. If a caller tries to pick up a parked call and it's no longer there, you want to inform them of that fact. So, you would create a Dialplan Injection and use a pattern for the extension:

_90[1-8]

(Note: the underscore as the first character of a pattern is not required, as the module will insert it in the dialplan if it detects a pattern).

Then for the actual injection, simply play one second of silence, followed by an appropriate system recording:

Playback(silence/1&pbx-invalidpark,noanswer)

If there is a parked call, it takes precedence when someone dials the appropriate parking lot extension, otherwise the Dialplan Injection kicks in and plays the message to the caller.
 
 
Modified Speaking Clock routine with labels and multiple entry points - Finally, here's a more complex example - a modified Speaking Clock routine, that can give the time in either of two time zones (in this example, U.S. Eastern and U.S. Central time, but you can change these to any standard Unix time zones). This example uses labels, AND has two entry points (you can add more). We'll show the complete instructions to implement this:

1) Go to Dialplan Injections, Add Injection. Give it a description (e.g. "Speaking Clock") but do NOT give it an extension (with the code as shown you actually could add the extension for the Eastern Time Zone entry point, but for demonstration purposes we won't give it an extension here). Make the Destination Core: Hangup. Click Submit.

2) Re-Enter your new Injection, and paste the following code into the "Command" textbox:

(est),NoOp(Speaking Clock for Eastern Time Zone)
Set(TimeZn=EST5EDT)
goto(scstart)
(cst),NoOp(Speaking Clock for Central Time Zone)
Set(TimeZn=CST6CDT)
(scstart),Ringing
Set(FutureTime=$[${EPOCH} + 8])
Set(FutureTimeMod=$[${FutureTime} % 10])
Set(FutureTime=$[${FutureTime} - ${FutureTimeMod}])
Set(MaxConnectTime=$[${FutureTime} + 180])
(scringsomemore),Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}])
GotoIf($["${FutureTimeMod}" < "0"]?scanswer:scwaitasec)
(scwaitasec),wait(1)
goto(scringsomemore)
(scanswer),Answer
(scplayagain),Set(FutureTime=$[${FutureTime} + 10])
Set(FutureTimeMod=$[${FutureTime} % 60])
wait(1)
playback(at-tone-time-exactly)
SayUnixTime(${FutureTime},${TimeZn},IM)
GotoIf($["${FutureTimeMod}" = "0"]?scexactmin:scsaysecs)
(scexactmin),SayUnixTime(${FutureTime},${TimeZn},p)
goto(scwaittobeep)
(scsaysecs),playback(and)
SayUnixTime(${FutureTime},${TimeZn},S)
playback(seconds)
(scwaittobeep),Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}])
GotoIf($["${FutureTimeMod}" < "1"]?scplaybeep:scwaitsectobeep)
(scwaitsectobeep),wait(1)
goto(scwaittobeep)
(scplaybeep),playback(beep)
Set(FutureTimeMod=$[${MaxConnectTime} - ${EPOCH}])
GotoIf($["${FutureTimeMod}" < "1"]?scthatsall:scplayagain)
(scthatsall),GotoIf($["x${IVR_CONTEXT}" = "x"]?app-blackhole,hangup,1:${IVR_CONTEXT},return,1)

3) Click Submit after entering the above.

4) Now, because we want multiple entry points, go to Misc. Applications, Add Misc. Application. Give it a description (such as "Speaking Clock-Eastern") and a feature code number (an unused one, or you can use *60 if you have disabled FreePBX's default speaking clock under Feature Codes). For the Destination, select Dialplan Injection and in the dropdown select "Speaking Clock-est". Submit.

5) Repeat step 4, except make the description different (e.g. "Speaking Clock-Central" and assign a different feature code. In the dropdown, select "Speaking Clock-cst". Submit.

6) Click the red bar. Now you can use one extension or feature code to get the time in one time zone, and the other extension or feature code to get the time in the other.

Alternately, if you have also installed the Custom Contexts module, you could use the same feature code number in steps 4 and 5, but then set up custom contexts in such a way that any particular extension only gets access to one time zone or the other.
 
 
Module Author: naftali5

ENUMPlus

ENUMPlus

ENUMPlus is a community effort whose goal is to simplify the use of ENUM. Major features include :

• Immediate Phone Verification
• SIP URI Testing
• Instantaneous record lookup.
• Open Source (GPL v.3)
• Nameserver redundancy
• Additional ENUM Lookup Sources

ENUMPlus project page: http://enumplus.org/

Blog post introducing the module with additional details: http://geekhut.org/enumplus/

Related thread in PBX in a Flash forum: http://pbxinaflash.com/forum/showthread.php?t=4375


Extended Routing

Currently this is an unofficial module that must be manually installed. It can be downloaded from this unofficial repository. See this FreePBX module tutorial if you need help understanding how to install it.

Alternately, here is how to get and install this file (version 0.0.1) using wget:
 

cd /var/www/html/admin/modules
wget http://www.zelie.com/~n3glv/asterisk/extendedrouting-0.0.1.tgz
tar -xzvf extendedrouting-0.0.1.tgz
rm -f extendedrouting-0.0.1.tgz
 
 

Description

This unofficial FreePBX module adds Extended Routing capabilities to FreePBX. It adds a failover destination to outbound routes, and also allows you to choose an outbound route as a destination from other parts of the dialplan.

Some possible uses for this module (just as examples, there are many others):

Use #1 - controlling costs.

Suppose that on a particular route, you have some free or low-cost trunks, and one trunk that costs (more) money to use, and you want to fall through to it only as a last resort, and you want to know when you are using that expensive trunk. You don't want to have a different route with a different dial pattern, since that would be a nuisance (i.e. dial... oops "all circuits are busy"... hang up and dial the expen$ive route). So you set the costly trunk as the last trunk in your standard route, but the problem is that up to now, you have had no way of knowing when you are talking on that trunk, other than by watching the CLI.

Enter extended routing.

You set up two routes, with the same dial patterns. The second is your high-cost route that includes the expen$ive trunk, and because of its priority it will normally never get hit (unless someone is in a custom context that only has access to the more expensive route). Add a failover destination on the first route that goes on to the second, and put a pin on the second. You now have a very simple method of trying multiple routes with the SAME dial pattern, and by requiring a pin the caller must affirmatively choose to use that route.

Alternatively you can fail the first route to a custom sound, and then continue to the second route without a pin. In this case it will simply warn you that you're on a more costly call, but are not required to input a pin. But, note that in version 0.0.1, you cannot use a dialplan injection as the sound source (see "Limitations" section below).

Use #2 - routes as a destination.

You have a few people in a restrictive custom context. But, you have another Asterisk box on which you don't mind them having unlimited access. You have an IAX2 trunk set up between the two. You can't set up an outbound route that allows "everything" (a dot as the pattern), or else all of your calls may start going out via that trunk. So instead, set up the route and give NO ONE access to it. Then you can fail over any custom context to that route, and anything they don't have permission for will try that route (this one can also be accomplished using priorities in a custom context, but this is probably safer.)

Use #3 - failover for routes.

You have DISA set up, and you don't want Allison to tell you that all circuits are busy and then hang up. You would rather have your outbound routes fail to the "all circuits busy" message, but then go to your IVR so you can reenter the DISA (thereby avoiding the need for you to hang up and call back).

Limitations in version 0.0.1: Dialplan Injections currently mess up the dialed number, and therefore should not send to an outbound route as a destination. For example, they cannot be used as a "middleman" to generate the sound mentioned in "Use #1" because they will lose the dialed number. This will be fixed soon. Also, when using outbound routing as a destination, it has the same rules as when using a custom context as a destination. You do NOT have the chance to dial another number (it is not DISA), it simply takes the dialed number and tries it out that route.
 
 

Installation of Beta version

Download the latest Beta version using the instructions in the first paragraph.

If you did not use the instructions for getting and installing the module using wget, then expand the .tgz file into the /var/www/html/admin/modules directory - it will create a new directory called extendedrouting. Make sure the group and owner of that directory are asterisk and that the permissions match that of the other module subdirectories.

Browse to FreePBX, Tools | Module Administration. You should see an entry for Extended Routing. Click on it, click install, then click process and the red bar as usual.
 
 

Module Author: naftali5

Extension Settings

Extension Settings

Allows the easy viewing and changing of the following settings for each extension:

DND (Do Not Disturb)
Call Waiting
Call Forward All
Call Forward Busy
Call Forward No Answer

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release
(Filename begins with extcfg)


External Audio (Paging Interface)

The "External Audio" Module for FreePBX

This module provides a public address interface for paging

Operation

This module provides a destination that can be selected from another module such as the miscellaneous application module. This destination connects to the audio line interfaces on the PBX hardware so allowing paging over a PA system.

The extaudio module also controls the audio mixer to set volume levels for interfacing to a public address system.

Normally an external audio input (such as from a radio) is passed through to the external audio output (the PA system). If there is a call to the extaudio destination then the audio input is muted and instead the caller's voice is output to the PA system. At the end of the call the normal audio (such as from a radio) is resumed.

Preconditions

This module expects the alsa mixer to exist on the local system with "Line", "PCM" and "Capture" audio interfaces. (The alsa mixer is available in the alsa-utils package.)

This module requires one of the asterisk console modules to be loaded - either chan_oss.so or preferably chan_alsa.so . (Remove corresponding noload command from /etc/asterisk/modules.conf)

Open Issues

This module is not compatible with some implementations of live/streaming music on hold (i.e. those implementations that cannot coexist with chan_oss.so/chan_alsa.so)

Author

nick.lewis[-at-]atltelecom.com

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Feature Panel

Currently this is an unofficial module that must be manually installed. It can be downloaded from this unofficial repository. See this FreePBX module tutorial if you need help understanding how to install it.

Alternately, here is how to get and install this file (version 0.0.2) using wget:

cd /var/www/html/admin/modules
wget http://www.zelie.com/~n3glv/asterisk/featurepanel-0.0.2.tgz
tar -xzvf featurepanel-0.0.2.tgz
rm -f featurepanel-0.0.2.tgz
 
 

Description

This unofficial FreePBX module allows you to see the status of certain features on extensions that are normally activated/deactivated using *xx feature codes. The status of those features can be modified from within this module's web page.

Features that can be checked or modified currently include:

  • Call Forward All
  • Call Forward Busy
  • Call Forward No Answer/Unavailable
  • Call Waiting
  • DND (Do Not Disturb)
  • User Intercom

Note: This module can only be used to view or change settings that are set within FreePBX/Asterisk. Some features may be activated at the device level (IP phone or VoIP adapter) and this module cannot interact with those settings. If you want to be able to control these settings from this module, you should turn off these features in the device configuration settings of phones and VoIP adapters, so that they will be controlled by Asterisk and FreePBX only.

 
 

Version history

Version 0.0.1: Initial version

Version 0.0.2: Allows selecting external or non-standard extensions for feature settings
 
 

Installation of Beta version

Download the latest Beta version using the instructions in the first paragraph.

If you did not use the instructions for getting and installing the module using wget, then expand the .tgz file into the /var/www/html/admin/modules directory - it will create a new directory called featurepanel. Make sure the group and owner of that directory are asterisk and that the permissions match that of the other module subdirectories.

Browse to FreePBX, Tools | Module Administration. You should see an entry for Feature Panel. Click on it, click install, then click process and the red bar as usual.

Module Author: naftali5

Gabcast

Gabcast

Gabcast is a social broadcasting platform that offers virtual communities, individuals, and organizations an easy way to create and distribute audio content.

Visit www.gabcast.com for more info.

This module allows you to:

• Link extensions to Gabcast channels. It creates a feature code, which defaults to *422 'gab' (you can change this in Feature Code Admin) which allows you to log directly into your Gabcast account. This is ideal for personal podcasting!

• Define a Gabcast channel as a Destination for other modules. For example, you can direct a DID or IVR menu option directly to Gabcast. This is ideal for group and public podcasting!

You must have a Gabcast account & channel to use this feature. Visit www.gabcast.com to sign up. It's a free service!

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Hotel Style WakeUp Calls

Hotel Style WakeUp Calls

Purpose:

This module installs the Hotel Style Wake Up Calls software as a FreePBX Module.

As a Module, the Feature Code may be managed by FreePBX Feature Code page.

Conditions/Prerequisites:

This Module requires php v 5.x on the platform, due to the use of db classes introduced in that version.

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBX In A Flash

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php?title=FreePBX_Module:_Hotel...

Additional/alternate instructions and download link (may have older version of the software):
http://nerdvittles.com/?p=589


Import Extensions

Import Extensions

This module provides a downloadable CSV which when filled out and uploaded via the form will create extensions according to the data provided. This allows for very fast batch extension creation.

Author: Paul paulc@mail4u.com.au

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Inventory Database

Inventory Database

Maintains an equipment inventory database.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


iSymphony

iSymphony

This module is only useful if you are using the i9technologies iSymphony software.

"The iSymphony module for FreePBX will replicate the configuration data for extensions, queues and conference rooms. It's simple, download the module from the downloads section. Then browse to the FreePBX module admin section and upload the iSymphony module package. Once installed and activated simply click on the iSymphony module on the left menu and follow the remaining setup instructions. Finally, ease your mind knowing you no longer have to manually update iSymphony to match the information within FreePBX."

The latest release can be found at the i9technologies site in the download section or at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Keylock

Keylock

This module allows the user to lock or unlock his or her extension by dialing the appropriate code and a pin. When the extension is locked, only calls destined to numbers specified in the module's configuration can be made.

The module generates the appropriate hints to have ip phones show the keylock state by subscribing to the <toggle code><ext number> extension.

The first time the user tries to lock his or her extension the module will ask for a new password, which will be used thereafter to lock or unlock the extension.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/modules


LDAP Caller ID Lookup

LDAP Caller ID Lookup

Allows Caller ID Lookup of incoming calls against different sources (MySQL, HTTP, ENUM, Phonebook Module and LDAP)

Significant updates to cidlookup module to support LDAP, including ldap lookup AGI script.

Please note, this is a replacement for CIDLOOKUP which lives in the same name space. Do not install both at the same time.

(This is excerpted from http://www.freepbx.org/forum/freepbx/users/ldap-support-for-caller-id-lo...):

I've modified the cidlookup module significantly to provide support for LDAP lookup.

I now use it extensively to perform caller id lookups against active directory.

You can find it in ticket #2389. It supports an area-code prefix and a number format option.
If you set prefix to 417, and format to (XXX) XXX-XXXX
then a caller by the number of 4173161234 will be searched as
4173161234
3161234
and
(417) 316-1234

This should cover most number formats, though if you need more (like '316-1234' to match a formatted local number) I'll have a look.

Note that its called 'ldapcidlookup' until the changes are (if ever) integrated into the real cidlookup module.

Please don't enable cidlookup and ldapcidlookup at the same time. They use the same database and naming convention.

Blacky

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


OSSEC Module for FreePBX

OSSEC Module for FreePBX

Purpose:

This module installs the OSSEC client interface as a FreePBX Module. According to the OSSEC web site, "OSSEC is an Open Source Host-based Intrusion Detection System. It performs log analysis, file integrity checking, policy monitoring, rootkit detection, real-time alerting and active response."

Conditions/Prerequisites:

This Module is a helper module for use with the OSSEC software installed by default on the following distributions:

Fonicatec PABX
Foncordiax

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_OSSEC

Also see the "Install OSSEC" section on the FonicaPABX-Install page.


Outbound Route Permissions

Outbound Route Permissions

This module allows you to block access to certain routes from specified extensions. You can do bulk changes (for a range of extensions) on the module's main page, or you can individually change access to routes on each extension's page.

You can also pick a Default Destination if a call is denied (so you can send the caller to a recording, etc.). If you wish to use a different destination for denied calls in a particular situation, see the usage tip below.

Note that Asterisk is incapable of having two identical routes and trying to force calls to use the other route if one of them is banned by this module. It will not work. You must have unique outbound routes for the proper selection to work. N.B. Just having different trunk selections does NOT make the routes non-identical!

If you wish to emulate this functionality, you can use the 'Redirect' function. Any number you type in the 'Redirect' range will be PREPENDED to the number dialed, and the call will then be sent through the dialplan again (specifically, it will be sent back to the from-internal context). For example:

• Route 1: Zap/1 matches 0|.
• Route 2: Sip/Foo matches 1|.

If you wanted to stop extension 100 from using Zap/1 at all, and send all his calls through Sip/Foo, you would need to DENY 100 access to Route1, and create a NEW route, Route3:

• Route 3: Sip/Foo matches 9990|.

In the 'Redirect' field, type '999'. When extension 100 dials 0123456, they match Route 1. Route 1 FAILS, and then system invisibly changes the number dialed to be 9990123456 (note the '0' he dialled originally is preserved, and you then strip 9990 from the front in Route 3), which matches Route 3 and the call is then sent via Sip/Foo.

Redirect rules are only checked if the route is DENIED.

You can set a Default Destination if calls are denied. If you wish to use something other than the default in a specific instance, you can use a Redirect prefix and a Misc. Application. Example: set the redirect prefix to 000123, then create a Misc. Application and set the Feature Code to _000123. (note the underscore at the start and the period at the end of the Feature Code - both are necessary), then make the destination of the Misc. Application whatever you wish.

Caveats: If you already have a large dialplan, see How to increase the execution time and/or memory allowed for "orange bar" reloads - you may need to increase one or both of those values. Also, you probably should be running the SVN version of FreePBX (however, it appears to work with FreePBX 2.5.1.2).

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release
(the filename is routepermissions-version.tgz)

Usage tips:

Apparently some users seem to be having problems because they don't understand that you need to have one route where the number called by the user is matched exactly. For example, if you want different groups of users to access different trunks whenever 1NXXNXXXXXX is called, you must have a route that has the pattern 1NXXNXXXXXX (or some acceptable variation - see next paragraph) in the Dial Patterns textbox, and that should be set to use the trunks that you want the majority of your users to be accessing. You allow access to that route for those users, then for the "exceptions" you disallow access to that route and (optionally) use a Redirect Prefix to redirect the call to another outbound route. What you cannot do is use is use a Redirect Prefix in front of the pattern on ALL your outbound routes. One route should contain a pattern that exactly matches whatever the caller dials. Then you can have other routes that include the same pattern, but with a Redirect Prefix.

Note that saying that the pattern must be matched exactly does not mean that you cannot add or strip digits in your primary route - it just means that one route must have a pattern that exactly matches what the user actually dials. So if your users dial 1NXXNXXXXXX but all of your providers only want to see the last ten digits, you could use 1|NXXNXXXXXX in your primary route, and then if you want to use a Redirect Prefix of 00009 with some extensions, you'd have another route with the pattern 000091|NXXNXXXXXX (note that in real-world use, it's probably better to strip the leading "1" at the trunk level, because different providers have different requirements. But this is just an example to clarify what is permissible).

Another point: When a call is denied and a prefix is prepended, the call is then sent back to the from-internal context, as if the user had dialed the call with the prefix prepended. While it's normally expected that the system will try to match the modified number using a route, so that the call will be sent out on a different trunk (or group of trunks) for that particular user, that doesn't necessarily have to be the case. Here's a trivial example:

Let's say you have to pay a charge for directory assistance calls. You have a route set up that handles nothing but directory assistance calls (matching 411, 1NXX5551212, and perhaps other patterns associated with the service). You have one user that refuses to look numbers up online or in the telephone directory, and has run up hundreds of dollars in directory assistance changes. You want to block his calls to directory assistance, but you also want to play a recording of the boss telling him that if he runs up one more cent in directory assistance charges he's fired!

So you block the calls and use a redirect prefix (I always suggest using redirect prefixes that start with several zeroes because generally speaking, no "normal" dialing pattern would ever start with more than about two zeroes). So let's say you make the redirect prefix 0000034733 (34733=FIRED on a phone keypad, it's just an example here). Now you create a Misc. Application and set the Feature Code to _0000034733. (note the underscore at the start and the period at the end - the underscore specifies that this is a pattern and the period that there will be additional digits after the prefix). Make the destination of the Misc. Application the Announcement that corresponds to the boss's recording.

Now, whenever he makes a call to directory assistance, the number he called will have the prefix prepened, and then the call will be sent back to from-internal where the Misc. Application will catch it. And note that you can use a Misc. Application in this way to send the call to almost any system destination. Coupled with a Misc. Destination, you could even reroute calls from a particular user to a particular number, to go to a different particular number. This potentially makes this module a very powerful tool in routing calls from a particular extension.

Here's another example: You can have speed dial codes that are specific to a group of extensions. For example, let's say you want to make 222 a universal speed dial on your system for the home telephone number of the department manager, but you have several departments, each with their own manager. You could make a Misc. Destination for each manager's home phone (with the manager's number in the "Dial" field), then make a Misc. Application for each (making the destination the Misc. Destination you just created), but in the Feature Code textbox use a unique prefix in front of the 222 (first manager would be 00001222, second would be 00002222, third would be 00003222, etc.).

Also create a "catch all" Misc. Application that goes to Terminate Call: Congestion, or to a "Sorry, you call cannot be completed" recording or something of that nature, and assign the Feature Code 0000000000 to it (this will only be used if a caller dials 222 from a phone that is not part of a department with a manager).

Then make a CUSTOM trunk with the following Custom Dial String (this is the only field you need to fill in): Local/0000000000@from-internal

After creating the trunk, create a new Outbound Route with 222 as the only entry in the Dial Patterns textbox, and select the Local/0000000000@from-internal trunk (created in the previous paragraph) as the only trunk choice for that route.

Finally, in the Outbound Route Permissions section of each extension's configuration page (for every extension that is part of a group with a manager that should be reachable by dialing 222), check "No" for the 222 Outbound Route, then enter the appropriate prefix of the correct manager in the Redirect Prefix text box (00001, 00002, 00003, etc.). Alternately, you can make bulk changes to entire groups of extensions at once from the Outbound Route Permissions page. Now, when a user in a department dials 222, the call to the "222" route will be disallowed, but the correct prefix will be prepended and then the call will flow through the Misc. Application/Misc. Destination pair and call out to the appropriate manager. Should someone dial 222 from a phone not part of a department, use of the Outbound Route will be allowed (unless you simply disallow it and don't specify a redirect prefix), but it will go to the Custom Trunk which will send it to the "catch all" Misc Application.

Why it doesn't work when you try to use the same dial pattern in two different routes:

Some people try to make two routes that contain identical dial patterns and wonder why the second route in never used, even when access to the first is denied.

Perhaps it will help if I explain it this way. When you place a call, irregardless of what you may or may not have done in routepermissions, Asterisk goes through your routes one by one and tries to match the number called to the patterns in your routes. It stops searching on the FIRST match it finds, and that's it - under no circumstances will it look at any other route once it's found a match. Only AFTER it has found a match (actually, only after it's already sent the call to a trunk) does it check to see if the user has permission to use that route. If yes, the call goes through, but if no, the call stops dead in its tracks (and if you haven't supplied a redirect prefix, it goes to the default destination).

Let's say you have a second route with identical dial patterns as the first. Your outbound calls will never use it, no matter what you do. Remember: Asterisk stops searching on the FIRST match, and it doesn't check to see if the user is allowed to use the route until AFTER it's made that match.

So that's the point of the redirect prefix. Let's say your first route has the pattern 1NXXNXXXXXX (not something I'd recommend unless you want to allow some really high-cost calls to the Caribbean, but it's just an example here). If in your second route you also put 1NXXNXXXXXX, that pattern will never be matched. It HAS to be unique. So what I might do is instead use something like 0001|1NXXNXXXXXX for the second route. Then when you deny access to that first route, you put the 0001 prefix in the "redirect" text entry box. Now let's say you make a call to 1-800-555-1212 from an "alternate route" extension:

● User dials 1-800-555-1212

● 18005551212 is sent to from-internal context which begins looking for a match on the number in the route dial patterns.

● A match for 18005551212 is found in a route, the one and only route that will ever be used for the number 18005551212.

● The call is then sent to the first trunk in the list associated with that route.

● One of the first things the trunk does is to determine if the user (identified by Caller ID number) is allowed to place calls via the route that the call just came from (which is still available in a variable). In this case it finds that no, the user is NOT allowed to place a call on this route, BUT that a redirect prefix of 0001 has been supplied

● The called number is then modified to be 000118005551212

● 000118005551212 is sent back to the from-internal context which begins looking for a match on that number in the route dial patterns.

● A match for 000118005551212 is found in a route (hopefully NOT the same one that would match 18005551212), the one and only route that will ever be used for the number 000118005551212.

● Because of the bar character in the dial pattern, the digits 0001 are removed from the called number - note that at this point the route has already been selected - so the number again becomes 18005551212 before being passed to the trunk.

● The call is then sent to the first trunk in the list associated with that route.

● One of the first things the trunk does is to determine if the user (identified by Caller ID number) is allowed to place calls via the route that the call just came from (which is still available in a variable). In this case it finds that yes, the user IS allowed to place a call on this route.

● The call then goes out the selected trunk - or if that trunk is busy, it will try any other trunks associated with that route.

I hope that helps you understand why you can't use the same pattern in two different routes and expect it to work. You must use a redirect prefix on at least one of the patterns so that it will be recognized as unique.


Panel (Operator Panel Layout)

The "Operator Panel Layout" Module for FreePBX

This module provides layout control of the Flash Operator Panel (FOP)

Operation

This module populates a 'panel' database table with layout information relating to FOP.

Some versions of retrieve_op_conf_from_mysql.pl will detect the existence of the 'panel' database table and use the layout information to generate the FOP

Preconditions

This module requires support for the 'panel' database table in retrieve_op_conf_from_mysql.pl . Please see Ticket #2989 for details.

Open Issues

The layout preview is crude. It gives an indication of the positioning of the layout areas but it does not attempt to simulate the FOP appearance

Author

nick.lewis[-at-]atltelecom.com

The latest release can be found at:

http://www.freepbx.org/trac/browser/contributed_modules/release


phpMyAdmin

phpMyAdmin

Purpose:

This module installs phpMyAdmin as a FreePBX Module.

Conditions/Prerequisites:

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBXIAF

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_phpMyAdmin


Set CallerID

Set CallerID

Adds the ability to change the CallerID within a call flow.

Set CallerID allows you to change the caller id of the call and then continue on to the desired destination. For example, you may want to change the caller id from "John Doe" to "Sales: John Doe". Please note, the text you enter is what the callerid is changed to. To append to the current callerid, use the proper asterisk variables, such as "${CALLERID(name)}" for the currently set callerid name and "${CALLERID(num)}" for the currently set callerid number.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Silent Monitor with Whisper

Silent Monitor with Whisper

This module adds feature codes to allow supervisors or administrators to spy on a user. Includes additional feature codes for whisper and private whisper modes if running Asterisk 1.4 or higher.

See Ticket 2441 for more information.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Sys Info

Sys Info

Purpose:

This module installs Sys Info as a FreePBX Module.

Conditions/Prerequisites:

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBXIAF

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_Sys_Info


Teletorture

Teletorture

An endless IVR that you can send telemarketers to. Based on the work of Steve Murphy.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Temporary Extensions

Temporary Extensions

Author's description:

I was looking around for a particular use case where

* employee visits abroad and carries a cell/mobile phone. * employee wants an extension forwarded to that phone while he is out of office. * Admin can allocate an extension and set the destination number as his call/mobile. * Admin can also set an expiry date on the extension.

Once the extension is created, calling in to the system or calling internally to that extension will forward the call using specified international routes (that are used when calling from an internal phone). When you dial the extension past the expiry date, "The extension you dialed, has expired!" message is played back to the caller (this is to stop people abusing the system).

In this case the trunk cannot be set for this particular extension alone. All calls will go through the trunks/outbound routes that are defined for calling from an internal phone. If this module proves useful for folks around, I can spend some more time and improve it as per suggestions/feedback.

Module is presently available at Ticket #3624 module submission page:
http://freepbx.org/trac/ticket/3624


Tweet2Call

Tweet2Call

Polls a specified twitter account for direct messages that contain a valid department like sales, support, billing and a 10-11 digit phone number. When such a message is found it then generates a call via Asterisk (tm) call files to the requested number from the requested queue.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release

Project page: http://dontcallmyboss.com/projects/


U.S. Weather by Zip Code

U.S. Weather by Zip Code

Purpose:

This module installs the U.S. Weather by Zip Code program by Ward Mundy.

Conditions/Prerequisites:

This module is compatible with the security models used in the following distributions:

Fonicatec PABX
Foncordiax
PBXIAF

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/FreePBX_Module:_U.S._Weathe...


Usersets

The "Usersets" Module for FreePBX

This module provides user based access control for outbound routes

Operation

If the use of a userset is specified by an outbound route then the route will not be accessible unless the caller is listed in the userset.

If not listed the caller will hear the audible prompt "Cancelled" and the call will terminate

Within a userset there are two types of users:

(i) Users that are trusted - These users need to provide no authentication. The fact that they are calling from a trusted extension number gives them access to the outbound route.

(ii) Users that need authentication - These users need to provide authentication to demonstrate that they are who they claim to be. These users are prompted for their voicemail password before being given access to the outbound route.

If this module is enabled then it hooks into the outbound routes page (in the same way as the pinsets module). All existing usersets are displayed in a list box on the page.

Preconditions

This module expects the ext_vmauthenticate class to be in extensions.class.php as per FreePBX Ticket #2777.
If not the modules functions.inc.php will need to be modified to generate the VMAuthenticate dialplan command itself e.g.
$command = "VMAuthenticate(" .($mailbox ? $mailbox : ) .($context ? '@'.$context : ) .($options ? '|'.$options : ) .")"

Open Issues

A caller's number is tested in turn against each entry in the userset. For large usersets this can be a slow process. More time sensitive users should be put near the top of a userset list.

Author

nick.lewis[-at-]atltelecom.com

The latest release can be found at:

http://www.freepbx.org/trac/browser/contributed_modules/release


Voicemail Admin

Voicemail Admin

Allows voicemail administration independent of user administration.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release


Wakeup

Wakeup

Provides a feature code for users to place wakeup calls.

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release

See also:
Hotel Style WakeUp Calls


Weather

Weather

Provides a Feature Code that users can dial to get a Weather Report, which is spoken using the flite speech synthesis engine.

This Module requires flite 1.0.3 to be installed. yum -y install flite .

The latest release can be found at:
http://www.freepbx.org/trac/browser/contributed_modules/release

NOTE: This module may be similar to the Nerd Vittles Asterisk Weather Station by Zip Code. Also, see additional comments in this message thread.


Web MeetMe Support

Web MeetMe Support

Purpose:

This module creates the Feature Code for the Web MeetMe function in FreePBX, and provides for access to the Web MeetMe user interface from inside FreePBX.

Prerequisites:

Before this module can be used, Web MeetMe must be installed on your PBX. As of this writing, there are scripts to install Web MeetMe in three distributions:

Fonicatec PABX (Pre Installed)

Foncordiax (Pre Installed)

PBX In A Flash

Full installation instructions and a link to download the latest release can be found at:

http://www.fonicaprojects.com/wiki/index.php/WebMeetMe_Support_Module