Phones: Grandstream GXP-2160 with newest firmware.
Trunks: Sangoma A200 card with 4 POTS lines
I’ll start by saying this is my first FreePBX deployment, so I know just enough about linux and asterisk to be dangerous.
I have a really odd edge case I need help in finalizing for a client. I have set up a FreePBX based phone system for them to replace an old proprietary key/PBX ip/analog hybrid system for which they could no longer get replacement parts.
Their old system had a specific feature I’m trying to recreate. Their old phones had BLFs (or whatever the old system might have called them) that represented what I would call a Ring Group. They have eleven phones that are in ring groups that overlap like a Venn diagram, meaning they have a phone here or there that is in multiple ring groups. All the phones had the same BLFs so you could see all the ring group status from all the phones, regardless if your phone was in that ring group.
The old system’s BLFs did all of the following:
- You can press the BLF from an idle phone and make all the phones in that RG ring.
- You can see the BLF blink when a call hits the RG from the outside.
- If a call hits a particular RG to which a phone belongs and that phone happens to belong to other ring groups, only the BLF for the RG actually dialed will blink.
- You can pickup a ringing call on any RG from any phone by just pressing the BLF.
- You can transfer any call to any RG by using the BLF.
What I have done to recreate this function as closely as possible is this:
- I recreated the RGs as necessary.
- I put all the correct phones in the correct RGs.
- I programmed the phones MPKs to have BLFs that correspond to each RG’s “extension” number.
- I created custom hints that correspond to each RG’s “extension” number so they would a) light up and b) be useful as a transfer destination.
- My custom hints are basically in this format, added to extensions_custom.conf
- exten => [rgnumber],hint,SIP/[extension]&SIP/[extension]…
Unfortunately, this only gets me about 80% of the way there. This is the functionality I receive:
- Can you press the BLF from an idle phone and make all the phones in that RG ring? - YES
- Can you see the BLF blink when a call hits the RG from the outside? - YES
- If a call hits a particular RG to which a phone belongs and that phone happens to belong to other ring groups, only the BLF for the RG actually dialed will blink. - NO!
- Can you pickup a ringing call on any RG from any phone by just pressing the BLF? - YES
- Can you transfer any call to any RG by using the BLF? - YES
Now, as far as this goes, I know why this is happening - it’s the hints. The hints make any light blink for which a specific phone is assigned. If a phone is in more than one ring group, then it blinks all those lights. Therein lies the problem: This client needs to be able to know exactly which and only which ring group the call is hitting for multiple inflexible reasons too complex to explain.
Before you begin giving possible scenarios, let me inform you of what scenarios which have been deemed unacceptable by the client or my circumstances:
- Adding a sidecar. Of any kind. For any reason.
- Having any sort of status console/software on their computers.
- Retraining or changing their workflow to work around the problem.
- Using Asterisk 13 (Asterisk 13 has what I would consider a show stopping one-way audio problem with multiple phone vendors that I won’t get into at the moment).
Here’s one way I thought of handling the problem that might work:
- Put all the phones in all ring groups they need to monitor.
- Use the CID Name Prefix option in each RG to prepend the RG’s name so they see it on their screen.
This is not the best case, but the client was amenable to this as a last resort.
I usually deploy Grandstream UCM systems but had to deploy FreePBX here to get the option to use Asterisk 11 to resolve the one-way audio problem. The Grandstream UCM system does everything I want it to do with the BLFs. I have found that FreePBX is awesome-er than the Grandstream and I’m glad now I deployed it! But since the GS UCM and FreePBX are both Asterisk based, I would think I could make FreePBX do the same magic, somehow.
Does anyone have anything they can suggest to get me that other 20%? Is there conditional magic in the conf file I can write and I just don’t know how to do it? Is there a commercial module I can purchase that will just make this happen?