[asterisk-users] Newbie Queue: greetings when first joiningqueue

Rob Hillis rob at hillis.dyndns.org
Tue Apr 29 08:51:41 CDT 2008



Lee, John (Sydney) wrote:
>> Check the number of calls waiting in the queue, then play the message
>>     
> if
>   
>> more than 0
>>
>> example code (written in the TBird IDE)
>>
>> Exten => 100,1,Answer()
>> Exten => 100,n,Set(NumWaiting=${QUEUE_WAITING_COUNT(${QUEUENAME})})
>> Exten => 100,n,GotoIf($[${NumWaiting} = 0]?JoinQueue)
>> Exten => 100,n,PlayBack(MyMessage)
>> Exten => 100,n(JoinQueue),Queue(MyQueueName)
>> Exten => 100,n,Hangup()
>>
>> So, if there are no members in the queue, jump directly to the queue
>> application, otherwise play the message first.
>>     
>
> Thanks Julian and it certainly works.
> I have got another question if I may.
> If there is just one agent in the queue and he put on Do-Not-Disturb,
> certainly in this case the queue count will be zero but I would still
> like Asterisk to play back "Welcome to XYZ, your call is important to us
> ... please stay on the line", the logic above would fail to play back
> the intro message.
> I thought about trapping DIALSTATUS but if there is actually no dial
> cmd, how can I trap the DND then and play back the message again?
> Any thoughts?
>   

The only possibility I can see would be the QUEUE_MEMBER_COUNT function, 
however if the agent is using the "DND" feature of their phone, this is 
very unlikely to work.  The only other method I can think of would be to 
call the queue using the "n" option to enter the queue and when the 
Queue application returns (which it will do if the call hasn't been 
answered on the first try - either due to a timeout or because the agent 
is in DND mode) to play the announcement to the caller.

Try something like...

exten => 100,1,Answer()
exten => 100,n,Set(NumWaiting=${QUEUE_WAITING_COUNT(${QUEUENAME})})
exten => 100,n,GotoIf($[${NumWaiting} = 0]?firstcaller)
exten => 100,n,Goto(announce)
exten => 100,n(firstcaller),Queue(MyQueueName,nr)
exten => 100,n(announce),PlayBack(MyMessage)
exten => 100,n,Queue(MyQueueName)
exten => 100,n,Hangup()

Calling the queue with the options "nr" means the queue will play the 
ring tone (omit the "r" if this isn't the desired behaviour) and drop 
through to the next statement if the call times out to all available 
agents... which would then play the announcement and put them back in 
the queue.

Theoretically, anyway.  :)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20080429/f9d58144/attachment.htm 


More information about the asterisk-users mailing list