Pickup group Call Notifications to all member extensions

Hi there, we came up onto a problem as we are now moving from a Siemens F650 to the FreePBX Distro.
There is a standard inside the HFA protocoll of the F650 which allows all pickup group members to see on their phone display, who is calling one of the other pickup group members without any sound. Just a display notification. I was trying to build something like that with entries inside the extensions_custom.conf, but without success.
It’s very pity that this feature is not implemented into the FreePBX as standard.

What we exactly need is the following:

Extension 1,6,8 and 36 are in the same pickup group.
If Extension 6 is getting a call from PSTN, or an internal extension, the Phone-displays from 1,8 and 36 should have a message like this: “call to 6 from XXXXYYX” so that you can decide to pickup the call via *8 or not.

we are using yealink phones. We know, there is the option to switch on the BLF notification, but there we can’t see the CID from incoming call. And you are able with this funcion to use the directed call pickup (*22 in our case) to pickup any incoming call from any extension you have as BLF Button. which includes CEO etc. This is definitely NOT what we want!

So I finally came up here and now asking you, if you know a way to finish this task with success.

Please help!

For sure, the message should be displayed only as long as the extension is ringing. Afterwards, the message should disappear from the group members displays.


Coming from another system often presents some interesting questions for us.

It’s a cool idea, but I don’t know if it could be done for “all phones”. As a REST app, I suppose it’s doable and any phone that has an XML browser might be able to do this. Lots of phones aren’t going to be able to handle the “out of band” interaction. I could write it for Chan-SCCP-B, I don’t know how I’d do it for a generic SIP phone.

On the Sangoma Phones you can set visual notifications per BLf to show you the caller ID anytime they get a call. Yealink has a sale feature buts it’s global for all BLFs as you discovered where ours is per BLF and the Caller ID of whom is calling that BLF is displayed.

Well, the yealink can do that for BLF also. but I don’t want to give the users the option to pick up any call, they want. So we deactivated the directive call pickup.

otherwise it works, without the correct display of the caller ID… it only shows “unkown” as caller.
but this is not the topic.

to be a bit more specific, we’re using Yealink T4x series phones T41/46/48.
All have almost the same featureset (except the display itself) so it should be possible to show these kind of messages.

They can show up popup messages. maybe this is a way to give this information to them. But sadly I don’t have any idea, how to implement this within the SIP protocoll, because I never get into this protocoll except using it for telephony.


Just want to ask here, before I would create it (or not).
Is it possible to create an “improvement” Ticket in the issue Tracker for this kind of Feature Suggestion?
Or is there another channel, where I can place this kind of Request?

What I mean is, as i wrote above earlier: There should be a way to get a display notification on the SIP phones which are in the same Call group, or better saied: to those extensions who are able to pickup the actual call to an extension of a callgroup they are allowed to pickup.

A message like: 123 is called by 555
then just pick up the call with *8 as usual, just with the difference, that I know whom I will have on the other side then.

This notification should not create any sound, just a visual information.

It would be a phone feature meaning we could do it in FreePBX but phone manufacturers would have to support it.

1 Like

to be honest,

there should be a way to send the “ringing” packages to the phones, without the “switch” to let them ring. just show the rest of Data.
Like: follow me - function. There you can set a CID Prefix. This, with the incoming CID to to original called extension as message without the ringing-command should be enough. ins’t this possible somehow?

And: of course, and here I think is the hard part of this task, if i then pickup the phone I should not have automatically answered the call. The phone should behave like there’s no call and give me the opportunity to group-pickup or dial my own call.

Their is nothing in the SIP Stack that defines what you want so no phone or soft switch would support it. Seems easy in your mind but reality is not that easy.

Forget how to get the message to the phone and for it to display the info. How do u handle when 5 people in the group are all getting calls. What do you display to the phones and which one do you display

We have actually a Siemens Octopus F650. This System has a similar System to the call/pickup Groups in FreePBX. With the difference, that there all members in the call-group have the display if another user in the callgroup receiving a call. you can decide to pick it up, or not. One Extension is only able to be in one call group.
there is no way to be in multiple pickup groups. (in the F650)
And that is, what our useres are used to have.

We thought that this is a kind of standard feature in almost all PBX Systems. But obviously we were wrong in this case.

But again what happens if 4 phones in that same pickup group are all receiving a inbound call. What do you display on the other phones?

I’m having a pedantic moment here, so please let me interject a couple of things:

  1. What we call pickup groups are a permissive feature - if you are in the same pickup group as another phone (and you can be in as many as you care to), you can pickup a call on any phone in your group, even though it isn’t for you.

  2. On the Siemens, a pickup group isn’t really a pickup group - it’s a ring group. All of the phones ring and they are all set up as if they are the destination of that call. Also, unlike the Siemens, we can put as many instruments into a ring group as we want and they can be in as many ring groups as we want. You can really hurt yourself bad if you decided you wanted to.

Mixing the terminology isn’t going to help us get to the crux of the issue at all.

So, a phone rings. If you are in the pickup group, you can hit the call pickup button (assuming you have one programmed) and blind pick up the call. Since the call isn’t actually for you, there’s no reason why you have any notification on who is calling. If you want to know who is on the call, you need to be in the ring-group.

Now, another feature that Asterisk implements is a queue. This is like a ring-group, but has a lot more functionality built in.

Regardless, let me see if I can describe what you want:

  • Call comes in on extension 100. It is part of a pickup group that has all of the 100-series phones in it.
  • Extension 100 rings, but none of the rest of the phones in the group ring. Instead, the caller ID for the ringing phone shows up on the rest of the phones in the group.
  • If noone answers the call after a given number of rings (say 5), the call drops to voicemail for the single extension that the call was for.

The next question, of course, is “what happens when a call for 101 comes in at the same time?” How do you display the caller ID for the second call? Do you replace call1 with call2? Do two BLFs light up so you can pick which call you want to grab? Does the second one overtake the first? Does the call automatically go to voicemail, since the pickup group is already busy watching the first call?

This is the problem with your request - while it seems obvious to you, we don’t have a lot of experience with this very specialized and unusual feature. No PBX I’ve ever worked with had such a thing. In my experience, if a call comes in for a specific extension, that extension is the only one that rings and no one else is “notified” about the callers information.

What we have available is one of the following:

  • Ring groups - when a call comes in for the group, all the phones ring. CID information about the incoming call gets displayed on the phone.
  • Queues - when a call comes in, it is put into a line of waiting calls to be handled by one or more extensions. Once again, caller ID information shows up.
  • Pickup Groups - when a call come in, it is sent to a specific phone where the caller ID is displayed. If someone wants to answer it, they roll the dice that it’s a business call that they can handle.
  • Forwarding - a call comes in for a specific extension, but the extension is DND/Busy. The call goes to another destination (a ring group or queue, for example) where it can be acted upon by a recipient.
  • Caller ID modification - the SetCallerID modules or a queue can modify the callers CID to show that a call was originally sent to an extension and now has been sent to another destination.

Another important thing to remember is that the phones you used on the Siemens were specific to the Siemens PBX - they aren’t generic phones. I’m not sure that this “feature” would work anywhere but a few specific phone models. With SIP, there are literally dozens (if not hundreds) of different phones that all have to work “more or less” the same.

Now, I’m pretty sure no one is going to say “No, you can’t do this”, but it is a very specialized option and may not be totally easy to replicate in a generic way, especially with SIP. Like I said earlier, if you have a smart phone that could be interacted with on an “out of band” basis, you can probably manage the display of this kind of information.

Hey Dave,

In one thing, you’re right. It is a special protocol, called HFA, for the Siemens PBX.

And I have to decline that all phones are ringing, if one get’s a call. they just display the newest incoming call into the call group. nothing more, nothing less. the name in the configuration panel is “CALL GROUP” not ring group.

I definitely do know, that the SIP protocol is not made for such behaviour.
I just asked, if anybody may see a way to implement this kind of feature somehow.
maybe by using and expanding the BLF feature. so not just offer “idle”, “busy”, “calling”, “ringing” aso. but also display at ringing the incoming CID.

To be honest, I’m not a programmer. but I have some experience. So I think it should be possible somehow to expand the BLF feature.
For sure, the phoe manufacturers have to accept this changes and implement this behaviour into their phone firmware.

the question is: why not?

But when this is too dificult and everybody here thinks this is a worthless and useles feature, just say it. So we need to find another way to keep this information alive.


I already said early on Sangoma Phones have a feature that would do what you want or pretty close. Enable a BLf to the user or users you want to manage and on a per BLF basis enable Visual Notification and you will get a pop-up whoing this info and a pickup button.

but we decided to buy yealink. We can’t change anymore and have to live with that. So the only solution seems to be a software that overwatches the LInes via the Manager Port. And then give it to a client on PC/Mac screen.

So we are back at the point I was trying to make - for some specific phones, a feature like what you are looking for is possible, but it would require some “phone specific” programming.

Having said that, the path forward needs to be plotted from a Asterisk/SIP-centric (not phone centric) perspective.

SO, approaches that might work would include:

  • Modify/augment the “incoming route” acceptor context to put caller ID information on a hint and program the phones in the “group” to use that hint through a button. Program the button as a “group pickup” feature and you are most of the way there. There are still a few things that need to be worked out, but that would get the info on the hint. Turning the hint off would be the next hurdle.

  • Implement a cascading ring group strategy. This way, when a call comes in for a specific extension, the “no answer” destination would be the ring group. Set up each extension so that the failover goes to the ring group. Set the extension timeout to (for example) 10 seconds. That should be about 2 rings before the group rings.

  • Implement a queue for each extension. Have that number ring first and, on not answer, include the rest of the phones in the queue.

  • Write a context that works like a ring group, but uses “no ring” as the ring type for all of the phones that aren’t the extension being called. This would probably replace the incoming context, so you’d start with the “from-pstn” context and work your way out from there.

You can implement this using the PushXML features. It is possible to push XML content to yealink phones using HTTP post or SIP Notify. This feature will have to be tailored to each telephone maker and requires a bit of ‘under the hood’ fiddling.

Having said that you can modify the ‘macro-dial’ (using override_freepbx) and have the AGI app to execute a script with CID and DID as arguments.

  1. The script is able to get the group, or groups, that the called person belongs to by querying the mysql database.
  2. The script can create a XML file using the CID and DID arguments and other parameter (beep sound, timeout etc)
  3. The script then reads a file that contains the IP address to every peer. The file can be populated by another script parsing the ‘sip show peers’ output, for example, executed when FreePBX is reloaded using the POST_RELOAD.
  4. The XML can then be pushed to everyone in the group, or groups, using http POST os SIP Notify.

Yealink_SIP-T2_Series_T19§ E2_T4_Series_CP860 IP Phones XML Browser Developer’s Guide (available in the support session of the supported models).