[asterisk-users] Queue Status

Lee Jenkins lee at datatrakpos.com
Wed Jan 31 13:43:04 MST 2007


Lee Jenkins wrote:
> Rob Schall wrote:
>> Hello all,
>>
>> Lee recommended QUEUESTATUS, but that seems to return if anyone is in a
>> specific queue, and not if the current call came from a queue. I
>> probably just misunderstand how it all works. :)
>>
>> Thanks all!
>> Rob
>>
> 
> Hi Rob,
> 
> Remember that I am pretty new to Asterisk myself. ;)
> 
> I'm not sure how you have setup your queues, but with mine, the caller 
> doesn't go to the agent's voicemail (is it even supposed to?) if the 
> queue times out.  If the queue times out for me, it will go to the next 
> line in the dialplan (or to the context specified if you allow them to 
> exit out).
> 
> So my suggestion was to see if QUEUESTATUS was set when the call kicks 
> out of the queue or into whatever context/extension in question, in a 
> way that could tell you if the call was coming out of a queue.
> 
> For my dialplans, I dedicate a single context for entering a queue like 
> this snippet from my dialplan:
> 
> [support_afterhours]
> exten=>s,1,Answer()
> exten=>s,2,Set(LAST_MENU_REACHED=support_afterhours)
> exten=>s,3,Playback(custom/support_reminder)
> exten=>s,4,Background(custom/support_afterhours)
> exten=>1,1,Queue(support,t|||60)
> exten=>1,2,Macro(DialExtenNoVM,112|60|tm)
> 
> Because this I already know that extension 1,1 is for entering the 
> queue, we can assume that if the call gets to 1,2 then there was a timeout.
> 
> If the context or extension is not setup so that you can assume a 
> timeout, then I was suggesting that you checkout the QUEUESTATUS variable:
> 
>  From the wiki:
> http://www.voip-info.org/wiki/view/Asterisk+cmd+Queue
> 
> "The application sets the following channel variable upon completion: 
> QUEUESTATUS. The status of the call as a text string, one of TIMEOUT | 
> FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL"
> 
> I just wasn't sure (haven't tested it) if the QUEUESTATUS var is 
> initially set as a null string if Queue() has not been called yet for 
> that channel.  This would allow you to determine if the call was coming 
> out of a queue fairly easily:
> 
> exten=>s,1,GotoIf($["${QUEUESTATUS}" != ""],?2:3)
> exten=>s,2,Macro(MyMacroToHandleQueueTimeouts)
> exten=>s,3,Macro(MyNormalDialplanLogicMacro)
> 
> Of course, it could be that I completely misunderstood what you are 
> trying to do ;)
> 

I forgot that you could also just set a channel variable before sending 
the caller to a queue.  Then check for that variable in other parts of 
the script.

-- 

Warm Regards,

Lee



More information about the asterisk-users mailing list