This is possible, my approach isn’t perfect, and not ideal for large contact centers, there are better solutions for those situations.
This approach you can easily test and requires no custom dialplan and really should work for smaller centers that probably don’t care about metrics as much. You can do it with FreePBX settings right out of the box.
EXAMPLE
PBX01 has Queue#9000 and local extensions 1000-1999 and an IP of 10.1.1.10
PBX02 is the remote PBX with extensions 2000-2999 and an IP of 10.2.2.10
We want to have extension 2501 on PBX02 register to the queue 9000 on PBX01
We’ll start at PBX02 and move forward to PBX01.
STEP 1
Deactivate call waiting on the extension(s) on PBX02 that are going to be part of the queue.
PBX01 can deliver the queue call to PBX02, but it doesn’t know the offical state of that extension for subsequent queue calls. This means that if PBX02 extensions are on queue calls already, they are still a target for subsequent queue calls.
With call waiting active, they will keep getting beeps in their handsets for calls over and over. Would be annoying.
Increase the time for calls to go to voicemail on PBX02 (if applicable) by a couple of seconds more than the agent timeout value in the queue. If the queue agent time out (the duration of time the agent has to answer a call) is the same as voicemail, the vm MIGHT answer the queue call. So if agent timeout is 15 seconds, make voicemail 17 seconds. (or just disable voicemail on the extension completely).
(Or better, create a separate line on the phone just for queue calls if possible)
STEP 2
ON PBX02 FREEPBX-> FEATURE CODES, disable QUEUES *45, *46 and *47. (de-select ENABLE).
We want to use those built in feature codes on PBX01, and not have PBX02 respond to them.
Assumption is that PBX02 has no queues on it. (If it does, we can do some other work around)
STEP 3
You have 3 general ways you can logon to the queue (built in with FreePBX).
ON PBX02 create an OUTBOUND route for PBX02 to PBX01 (assuming trunk exists already) and use these 3 dialpattern matches
*45XXXX*XXXX
*45XXXX
*45
(Login explanation)
*45
will take log you into any/all queue(s) that you are a dynamic agent of based on a CID match of your phone with the number programmed in DYNAMIC AGENTS in the queue.
*45XXXX
, where the XXXX is the queue number will log you into a specific queue. So if you are a member of 4 different queues, you can log into the ones you want specifically. Again CID match is performed
*45XXXX*XXXX
will let you logon any extension to to any queue. *45extension*queuenumber
This method will force the extension you dial into the queue you want without requiring a CID check.
So if you dial *452501*9000
this would send the exact sequence to PBX01 and log extension 2501 into queue 9000.
STEP 4
If you are going to have PBX02 agents use the *45XXXX*XXXX
sequence then you just need to do step
"A" ,
however if you plan or think they’ll use *45XXXX
or *45
then follow step “B”.
Both can be programmed in to cover all bases if you desire.
A>
ON PBX01 create a SIP extension that matches the extension on PBX02 in the manner they are logging in. Yes. So 2501 would be on PBX01 and PBX02.
B>
ON PBX01 create a SIP extension that matches the CID extension on PBX02 in the manner they are logging in. So if it the CID is 707-555-2501, then put in an extension with that full 10 digit number in PBX01
STEP 5
On this 2501 extension you created in PBX01, (and the CID option B based one too) under the ADVANCED TAB, change the HOST entry from DYNAMIC and replace it with any valid IP.
In my example I’ll replace it with PBX02’s ip of 10.2.2.10.
Doesn’t matter to much what the IP is, just as long as it is (for arguments sake) an IP that PBX01 can ping.
This will trick PBX01 thinking that 2501 has a valid IP that it could deliver calls to (but we aren’t going to use that iP for that delivery) and more importantly allow it to be a legit target for the queue.
6> Under the advanced tab of 2501 (AND the CID length version too!). Replace the DIAL entry (will have something like SIP/XXXX in it) and replace it with the sequence to dial PBX02 via the trunk between the two systems.
For example, if you have an IAX trunk in FreePBX between these two PBX’s named "PBX01-PBX02 , the sequence would look liek this: iax/pbx01-pbx02/2501
So now if the queue (or even an extension native to PBX01) calls 2501, PBX01 will see its a local extensions, but when it goes to dial it, will just push the call right to PBX02 across the trunk as it normal would.
Save your changes and test! It really should work!
From PBX02 dial *45, and provided that your CID (AMPUSER in livelog) matches the number in the DYNAMIC AGENTS in the queue, you should hear “Agent logged in”
Place a test call, should get the queue call delivered!
Conveniently, the backout form this is just delete the extension from PBX01.
We did this with a customer not long ago as a stop gap and they didn’t report any problems. Maybe it will work for you! Or at the very least you learn some tricks to solve other problems in the future.
If having problems i’ll try and help, post some logs of fails and i’ll see if i can help.
Post questions and i’ll try and clarify where i can!