System information

In short, agents who are not sitting at their desks and planning to be available to take
calls in the next few minutes should log out. Pause/unpause should only be used for
brief moments of unavailability (if at all). If you want to use your phone system as a
punch clock, there are lots of great ways to do that in Asterisk, but the queue member
applications are not the way we would recommend.
Let’s build some simple dialplan logic that will allow our agents to indicate their avail-
ability to the queue. We are going to use the CUT() dialplan function to extract the name
of our channel from our call to the system, so that the queue will know which channel
to log into the queue.
We have built this dialplan to show a simple process for logging into and out of a queue,
and changing the paused status of a member in a queue. We are doing this only for a
single queue that we previously defined in the queues.conf file. The status channel var-
iables that the AddQueueMember(), RemoveQueueMember(), PauseQueueMember(), and
UnpauseQueueMember() applications set might be used to Playback() announcements to
the queue members after they’ve performed certain functions to let them know whether
they have successfully logged in/out or paused/unpaused):
[QueueMemberFunctions]
exten => *54,1,Verbose(2,Logging In Queue Member)
same => n,Set(MemberChannel=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,AddQueueMember(support,${MemberChannel})
; ${AQMSTATUS}
; ADDED
; MEMBERALREADY
; NOSUCHQUEUE
exten => *56,1,Verbose(2,Logging Out Queue Member)
same => n,Set(MemberChannel=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,RemoveQueueMember(support,${MemberChannel})
; ${RQMSTATUS}:
; REMOVED
; NOTINQUEUE
; NOSUCHQUEUE
exten => *72,1,Verbose(2,Pause Queue Member)
same => n,Set(MemberChannel=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,PauseQueueMember(support,${MemberChannel})
; ${PQMSTATUS}:
; PAUSED
; NOTFOUND
exten => *87,1,Verbose(2,Unpause Queue Member)
same => n,Set(MemberChannel=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,UnpauseQueueMember(support,${MemberChannel})
Queue Members | 269