[asterisk-users] Wait in Queue for 120 seconds for agent A to become free, THEN ring next agent

Atis Lezdins atis at iq-labs.net
Mon Feb 4 03:23:04 CST 2008


On 2/4/08, Kev S <kev at mailcall.com.au> wrote:
> Hi all
>
> Just trying to set up a queue and wondering if this is possible.
>
> We have 3 agents, One of them is sort of the first point of contact
>
> What i am looking to do is
>
> 1. Someone rings the queue.
>
> 2. It rings Agent A.. If Agent A is on the phone then put them on hold
> for 120 seconds, and if Agent A gets off the phone within those 120
> seconds, put the call to them.
>
> 3. If 120 seconds expires, then call agent B, if B rings out, Call agent C
>
> So all i need is for the call to wait 120 seconds for agent A to get off
> the phone. Then progress the call if they dont.
>
> Is this possible? If so, any pointers?

I think you should have penalty for agent B, and dial to them trough
local channels - so that busy status gets sent to queue by your own
dialplan. In 1.6 this would mean that you shouldn't use
state_interface - so app_queue can't automatically check that A is
busy.

Then it would go something like this:

Set(started=${EPOCH});
Set(remaining_time=${EPOCH}-started+120);
while(${remaining_time}>0) {
  Dial(SIP/a,${remaining_time});
  If ("${DIALSTATUS}"="ANSWERED") {
    break;
  }
  Wait(1); // wait so that this loop doesn't eat much CPU.
  Set(remaining_time=${EPOCH}-started+120);
}

if ("${DIALSTATUS}"!="ANSWERED") {
  Busy();
}


Regards,
Atis

-- 
Atis Lezdins
VoIP Developer,
IQ Labs Inc.
atis at iq-labs.net
Skype: atis.lezdins
Cell Phone: +371 28806004
Work phone: +1 800 7502835



More information about the asterisk-users mailing list