Queues not working properly with Dundi Extensions

Hi Everyone,

I currently have a setup where we have two offices in separate locations with a pbx in each office where local extensions register to. We also have a central pbx (with freepbx installed) which is located in our Colo. On the central pbx, I have our IVRs, Queues defined. We use dundi to allow the central pbx to find the remote extensions and also use dundi to allow the extensions in each remote office to dial each other. Our setup is derived from this webpage with minor modifications to it:

The only problem I have at the moment is we have defined extensions in the queue that obviously are not registered on the central pbx (but found through dundi), when one of the extensions in the queue is not available/busy the caller is basically taken to that dundi extension voicemail as opposed to dialing the other extensions ( I suppose if the extensions were registered locally on the central freepbx, it would know how to recognise when a local extension is not available). So I guess my question is how do i let the queues know that a dundi extension (with voicemail enabled) shouldn’t be forwarded to that user’s voicemail but dial the other extensions listed in the Queue.
Would appreciate any help.


You have probably already done this, but do you have the Skip Busy Agents feature enabled in the queue setup?

Thanks for your reply, Actually looking further into the problem I realise its actually when one of the local extensions in the queue is not registered to the local pbx that, it goes to the unavailable message for that extension. Again I tested with an extension on the central pbx (where the queue is defined) and it does not do this. But adding a remote extension (dundi…) which is not currently registed…seems to automatically go to voicemail in the queue. And in between I have skip busy agents checked as well.


Hi everyone,

I finally figured a way around the problem. I realised there is a command in asterisk called ChanIsAvail, I can therefore pass the extensions to this command e.g ChanIsAvail(SIP/103) and what it does is to check the state of the channel and pass it to the channel variable AVAILSTATUS. I can then use that channel variable and the caller id name to determine if a call is inbound to an extension from a queue and then choose to end the call (if the channel is not available to answer the call) before I actually send the call to the ext-local context.

Thanks everyone.