context queues-loginout {
s => Set(queue-announce-success=0);
// the extensions to dial to log in and out of the support queue.
// hands off to the queues-manip context, which does the actual work.
8001 => {
// This uses the caller id to set the agent number
// for the speed dial buttons on cisco phones
Answer();
Set(AGENT_NUMBER=${CALLERID(num)});
Set(AGENT_EXT=${CALLERID(num)});
Set(queue-announce-success=1);
goto queues-manip,I${AGENT_NUMBER},1;
}
8002 => {
// logs in, prompts for an agent number
Answer();
Read(AGENT_NUMBER,agent-user);
Read(AGENT_EXT,agent-newlocation);
Set(queue-announce-success=1);
goto queues-manip,I${AGENT_NUMBER},1;
}
8003 => {
// Logs out using caller id as agent number
// for speed dial on cisco phones
Answer();
Set(AGENT_NUMBER=${CALLERID(num)});
Set(AGENT_EXT=${CALLERID(num)});
Set(queue-announce-success=1);
goto queues-manip,O${AGENT_NUMBER},1;
}
8004 => {
// Logs out prompting for agent number
Answer();
Read(AGENT_NUMBER,agent-user);
Set(queue-announce-success=1);
goto queues-manip,O${AGENT_NUMBER},1;
}
};
context queues-manip {
// determines which agent is doing what.
_[IO]100 => {
&queue-addremove(supportq,10);
&queue-success();
}
_[IO]102 => {
&queue-addremove(supportq,10);
&queue-success();
}
_[IO]103 => {
&queue-addremove(supportq,10);
&queue-success();
}
_[IO]104 => {
&queue-addremove(supportq,10);
&queue-success();
}
_[IO]105 => {
&queue-addremove(supportq,10);
&queue-success();
}
_[IO]106 => {
&queue-addremove(supportq,10);
&queue-success();
}
};
macro queue-success() {
if(${queue-announce-success} > 0) {
switch(${MACRO_EXTEN:0:1}) {
case I:
Playback(agent-loginok);
Playback(vm-goodbye);
Hangup();
case O:
Playback(agent-loggedoff);
Playback(vm-goodbye);
Hangup();
}
}
};
macro queue-addremove(queuename,penalty) {
switch(${MACRO_EXTEN:0:1}) {
case I: {
// AddQueueMember(${queuename},Local/${MACRO_EXTEN:1}@staff,${penalty});
AddQueueMember(${queuename},Local/${AGENT_EXT}@staff,${penalty});
break;
}
case O: {
// RemoveQueueMember(${queuename},Local/${MACRO_EXTEN:1}@staff);
RemoveQueueMember(${queuename},Local/${AGENT_EXT}@staff,${penalty});
break;
}
default: {
Playback(invalid);
break;
}
}
};