How to use callgroups and pickgroups

How to use callgroups and pickgroups

The question sometimes arises about how to pick up a call on an extension that is ringing in another part of the home or office, when you are closer to a different extension.

If you know the number of the extension that is ringing, you can simply pick up the nearest extension and dial ** + the extension number of the ringing extension. But what if you're in an office or a large home, you hear a phone ringing in the distance but have no idea which extension it is? That's when callgroups and pickupgroups come in handy. When implemented, if your pickupgroup list includes the ringing phone's callgroup, you can simply pick up your phone and press *8# and you'll get the call.

To get your feet wet, here's how to set up your first callgroup and pickupgroup. Decide on a group of extensions that should be able to pickup each other's calls (keep it small for test purposes - you can always expand it later). Go to the FreePBX configuration page for each of those extensions, and put the number 1 in both the callgroup and pickupgroup text boxes. Click "Submit" after adding those values, and go to the next extension in the group and do it again. When you've done enough to test it, click the bar to save the configuration changes.

Now place a call from any phone to one of the phones in the group. From any other phone in the group, pick up and dial *8#. The other phone should stop ringing and you should get the call. If it doesn't work, there are a couple possibilities - either you didn't enter the same number in both text areas on each extension configuration page, or your phone has a dial plan that doesn't recognize *8 as a valid number. On a Linksys/Sipura phone or VoIP adapter, you could add something like *8S4 to the dial plan (remember to separate it from other dial plan sections using the | character), which if you hit *8 without the # would wait four seconds to see if you might really be dialing a *8x format code. With other brands of phones or devices you just might need to do something similar if the phone refuses to pass *8 to your Asterisk server. Alternately, you could just change the *8 code to something else that your phones will allow you to dial, by going to the Feature Codes page and changing the code associated with "Asterisk General Call Pickup" (under the "Core" section).

Once you have this working, you can set up other callgroups and pickupgroups. Callgroups must have a number between 0 and 63. Any extension can only belong to one callgroup, but you can allow any extension to pick up calls from one or more callgroups by specifying multiple callgroup numbers for that extension's pickupgroup (separate callgroup numbers by commas). So, for example, if you had a few bosses and several employees, you could put all the employee extensions in callgroup 1 and the boss extensions in callgroup 2. Then you could specify 1 as the pickupgroup option for employee extensions, and 1,2 as the pickupgroup option for the boss extensions. That way, an employee could answer any other employee's phone, but not a boss phone, while a boss could pickup a call from an employee extension or a boss extension.

Note that an extension does not need to be part of a callgroup to be able to pickup calls (if there's only one boss, you don't need to put him in a callgroup so he can pickup employee extensions) and conversely, an extension can be part of a callgroup but not a pickupgroup (maybe you don't want employees picking up each other's calls, but you want the boss to be able to do so).

There are a couple caveats: First, callgroups and pickupgroups are an Asterisk feature, not a feature implemented in FreePBX (that is to say, the FreePBX developers probably can't do much about any bugs in the implementation). One thing I recall about this feature from a couple of years ago is that it would not let you pick up calls across technologies (that is, if a SIP extension was ringing it could not be picked up from an IAX2 extension). I have no idea if that's been fixed, but since most people only use SIP endpoints these days, that probably won't be an issue in most places where this feature might be useful.

Also, I've seen a report that someone with zap extensions is having a problem making this work. I don't have any zap extensions so am unable to test that, but curiously, I did find this section in the /etc/asterisk/zapata.conf that ships with FreePBX:

; Ring groups (a.k.a. call groups) and pickup groups.  If a phone is ringing
; and it is a member of a group which is one of your pickup groups, then
; you can answer it by picking up and dialling *8#.  For simple offices, just
; make these both the same.  Groups range from 0 to 63.

Note that the two lines are uncommented by default, but since this file is not associated with any particular zap extension I have no idea whether it applies to all zap extensions generally. Anyone with more information on how to implement this with zap extensions is invited to leave a comment.