extensions.ael:
context default {
300 => {
Answer();
Wait(1);
Read(agent,agent-user);
&queue-add(Helpdesk,${agent},${CALLERID(num)});
};
301 => {
Answer();
Wait(1);
Read(agent,agent-user);
&queue-remove(Helpdesk,${agent},${CALLERID(num)});
};
};
macro queue-add(queuename, username, clid) {
AddQueueMember(${queuename},Local/${username}@agents,,,);
Set(DB(Location/${username})=SIP/${clid});
switch(${AQMSTATUS}) {
case ADDED:
Playback(agent-loginok);
Hangup();
break;
case MEMBERALREADY:
Hangup();
break;
default:
Hangup();
};
};
macro queue-remove(queuename, username, clid) {
RemoveQueueMember(${queuename},Local/${username}@agents);
Noop(${DB_DELETE(Location/${username})});
switch(${RQMSTATUS}) {
case REMOVED:
Playback(agent-loggedoff);
Hangup();
break;
case NOTINQUEUE:
Hangup();
break;
default:
Hangup();
};
};
context agents {
705 => &delivercall();
707 => &delivercall();
668 => &delivercall();
709 => &delivercall();
710 => &delivercall();
713 => &delivercall();
715 => &delivercall();
716 => &delivercall();
729 => &delivercall();
720 => &delivercall();
721 => &delivercall();
724 => &delivercall();
678 => &delivercall();
};
macro delivercall() {
Noop(User: ${MACRO_EXTEN} @ Device: ${DB(Location/${MACRO_EXTEN})} currently ${DEVSTATE(${DB(Location/${MACRO_EXTEN})})});
if ("${DEVSTATE(${DB(Location/${MACRO_EXTEN})})}" = "INUSE") {
Busy();
} else {
Dial(${DB(Location/${MACRO_EXTEN})});
}
};
sip.conf:
genera
limitonpeer=yes
703
type=friend
username=703
secret=1234
host=dynamic
context=maxnet-default
callerid="AJ" <703>
amaflags=default
mailbox=703@default
qualify=no
port=5060
nat=never
dtmfmode=inband
record_out=Adhoc
record_in=Adhoc
call-limit=4
queues.conf:
Helpdesk
strategy=fewestcalls
timeout=20
retry=5
music=default
wrapuptime=30
joinempty=yes
timeoutrestart=yes
ringinuse=no
autofill=yes
context=queue_breakout