Multiple extensions barging / call pickup without dialing feature code?

I’m new to FreePBX, a former programmer but certainly not a phone geek and definitely confused by all the terminology.

Situation/desired functionality:

  • OBI202 in Utah home (connected to a Panasonic PBX)
  • Multiple OBI1062s in California home
  • All phones/extensions, in both locations, to ring at once
  • Any extension to pick up an incoming call or join an active call with someone on another extension simply by lifting the handset and pressing one button

I am not talking about 3-way calling or conference calls. It’s one call (incoming or outgoing), with multiple participants (in the same or different locations) on my end. An incoming caller would not select or be routed to a particular extension (except rollover from line 1 to line 2 if line 1 is busy).

This may be “Call Barging” … but instead of dialing a feature code and an extension to participate, the person joining the call would press the BLF corresponding to the busy extension, and be able to hear and talk with the outside party.

I don’t know if this is possible with the OBI gear and FreePBX, but it was simple/automatic with analog phones and POTS (at least in one location). I don’t need to know the specific steps to follow now, but I do want to know with some confidence whether what I want to do can be accomplished.

Thanks in advance for your help!

What you are referring to seems a lot like SLA or shared line appearance. That functionality is not easy to achieve if at all possible. Some embedded PBXs, like the SPA9000 together with the SPA942 phones, can do it, but probably due to a proprietary implementation. Certainly you can google about asterisk+sla.

Hello @kenjacobs,

Yes, you can barge into a call and speak with both sides with the ChanSpy aplication.
You need to enter a special code (999 for example) to activate the application in the from-internal-custom context:

[from-internal-custom]
exten => _999X.,1,ChanSpy(SIP/${EXTEN:3},BE) 

Insert this code to the extensions_custom.conf file and reload the dialplan after that in the ssh console:
rasterisk -x'dialplan reload'

Then, you need to program your BLF buttons on the ip phones to send that code (9992020 - 999 the prefix; 2020 the extension) when they want to barge in a call with that extension.

Thank you,

Daniel Friedman
Trixton LTD.

1 Like

Wow, @danielf this sound like exactaly what we have been looking for!

A few questions:

  • Do you know if the BLF light will work in this scenario? (You can see that the other extension is on a call because the BLF is red, then you push it and it connects?)

  • If you barge in on another local extensions call, and are talking to the local extension and the customer/caller, if the original extension that received that call hangs up, will you stay connected with the caller/customer you barged in on?

Thanks for your insight here!

Also, in testing I noticed that if either party in the call drops, we lose the call. Have you figured out a way to have the call stay up with one party + the call barger?

Thanks for any insights.

I know this is a couple months old, but thought I’d add my two cents. Asternic FOP2 can help with this if you aren’t opposed to using a web interface to do this instead of using blf keys.

Hello @comtech,

If you want to use my dial plan you will need to dial a prefix before barging a channel. This is not a BLF feature. It is only a dialing feature code. So, insert my code to the extensions_custom.conf like this:

[from-internal-custom]
 exten => _999X.,1,ChanSpy(SIP/${EXTEN:3},BE) 

do not forget to reload the dial plan like this (from the SSH console):

rasterisk -x'dialplan reload'

If you want to barge into extension 500 for example, you will have to dial 999500. You can change the prefix if you like.

Thank you,

Daniel Friedman

1 Like

That’s the current strategy. We are looking for opportunities to streamline the end user experience (one place for everything). Thanks!

Thanks for the insight.

Is there any way to modify your dialplan in such a way that the barging party can stay connected with a party if one of the original two parties hangs up?

I doubt it, since ChanSpy isn’t designed to be one of the parties in the call. It’s not a conference. When one side of the call is torn down, the rest of the call is torn down, so there’s nothing left to spy on.

Dave,

Do you think there is a similar way to do something like this with a conference then? my end state goal is being able to swap a call between phones without having to start from the from near end. Very similar to a shared line appearance.

This sounds alarmingly like “Attended Transfer”, which will allow you to start a call, add a third person, stay on the call until you are finished, and leave the call with the other person still on the line.

I believe this sounds more and more like SLA again.

Hello @comtech,

If you want to stay on the channel with the other side if one of them hangs up, you will need a more sophisticated dial plan. One of the features that you can use is to redirect the desired channel to a conference room and then enter to this conference room as well.
You can use the ChannelRedirect to achieve that. Take a look at this:

pbx01*CLI> core show application ChannelRedirect 

  -= Info about application 'ChannelRedirect' =- 

[Synopsis]
Redirects given channel to a dialplan target 

[Description]
Sends the specified channel to the specified extension priority
This application sets the following channel variables upon completion
${CHANNELREDIRECT_STATUS}: 
    NOCHANNEL
    SUCCESS
    Are set to the result of the redirection

[Syntax]
ChannelRedirect(channel,[[context,]extension,]priority)

[Arguments]
Not available

[See Also]
Not available  

Thank you,

Daniel Friedman

Which is largely a non-starter, since SIP doesn’t really support SLA very well. Chan-SCCP-B supports a subset of SLA, but that doesn’t get the OP any closer to solving the problem than suggesting SLA. The suggestion @danielf made is a good one - the trick there is getting enough conference rooms set up to make is work.

Note that this is not “whisper” - everyone on the conference will hear everything on the conversation. The thing about barging is that is implies either not being obvious that your listening in (since you inject yourself into the call).

It would be really nice if the OP could tell us what he’s actually trying to accomplish so we can make recommendations that will work, instead of trying to guess about what he actually wants, only to be told “Nope, that’s not it - try again.”

Hello @comtech, @cynjut,

You can create MeetMe rooms on the fly and with no tones or required pins:

[Syntax]
MeetMe([confno][,options[,pin]])

[Arguments]
confno
    The conference number
options

d: Dynamically add conference.
q: Quiet mode (don't play enter/leave sounds).

Thank you,

Daniel Friedman

If you’ll use this for listening in, i would add mute on join.

I’m attempting to get as close to SLA as possible. One user 8449, two endpoints (8449-1 & 8449-2). With the push of one button, the user at 8449-2 could pick up on a call answered at 8449-1. 8449-1 could be hung up at that point and the other parties 8449-2 and the original caller would stay connected.

The only way I know of to do this is to change your extensions to DAHDI and use real SLA.

If the person on the phone wants to bring someone into the call, that’s possible through a dozen ways. The problem is someone ‘dropping into’ the call without invitation and forcing the call into a conference without bothering the other two people in the call.

Instead of the channel redirecting to a conference room, could I just have it redirect to the other extension (the one I would be barging from in the earlier example)?

How would I know what channel to redirect? Is there a function/application to help with that?

Dave might be right maybe this is closer to a transfer, but just started in reverse. I want to pull the caller and the answering extension to my phone rather than the answering extension transferring/conferencing to me. Once all three parties are together (Barging party, original caller and original extension), if one of the parties left, the call would remain up for the other two.