Tracking external queue members

We put work cell phones in our tech queue to answer calls after hours until midnight. Basically we stick something like Zap/g1/15555555555 into the queue.

While this does give problems when the cellphone goes out or range or the tech forgets to log out and the battery dies, things general work pretty well. The techs are happy they don’t have to drag a laptop with a software sip phone around, and IT is happy not to have laptops left in cars. I’m happy not to have an old system internet route-able.

What HR wants to is add tracking to see how answers how many calls each person is taking each night.

This information is not available in the queue_log, it merely shows the interface. (In this case Zap/4-1)

1264984149|1264984136.46291|techsupport|NONE|ENTERQUEUE||5554445555 1264984196|1264984136.46291|techsupport|Zap/4-1|CONNECT|47 1264984460|1264984136.46291|techsupport|Zap/4-1|COMPLETEAGENT|47|264
Or the CDR database.

The only way I can think of doing this is to use an AGI script to control the queue members by tieing each cell number to a specific upper channels in g1
phone 1 would be Zap/21-1/15555555555 in the queue
phone 2 Zap/22-1/15555555556
phone 3 Zap/23-1/15555555557
Then I could awk over the queue_log and make a daily report.

Our PRI isn’t likely to ever be saturated (especially at night), however hard coding channels doesn’t fell like the most elegant solution to this problem.
I poked around in logger.c a little bit and looked at the ast_queue_log function but nothing jumped out at me.

Any other thoughts on how to do this.


Linux foobar-pxb 2.6.18-1.2849.fc6 #1 SMP Fri Nov 10 12:45:28 EST 2006 i686 i686 i386 GNU/Linux
Asterisk 1.2.14 built by root @ foobar-pxb on a i686 running Linux on 2009-07-09 15:55:57 UTC
TE410P Quad-Span togglable E1/T1/J1 card 3.3v
Verzion PRI on span 1 (group 1 zap 1 to 23)
Rino channel bank on span 2

The Asterisk build has a few hacks to fix a weird frame relay issue, however this should not be relevant.

zaptel.conf

span=1,1,0,esf,b8zs
bchan=1-23
dchan=24

span=2,2,0,esf,b8zs,yellow
fxoks=25-48

loadzone = us
defaultzone=us

zapata.conf

[channels]
context=default
switchtype=national
signalling=pri_cpe
rxwink=300
usecallerid=yes
hidecallerid=no

callwaiting=no
callwaitingcallerid=no

threewaycalling=yes
transfer=yes
cancallforward=yes
echocancel=yes
; echocancelwhenbridged=yes
rxgain=0.0
txgain=0.0
immediate=no
overlapdial=yes

group = 1
callgroup=1
pickupgroup=1

context=default
signalling=pri_cpe
channel =>1-23

group = 2
immediate=no
usecallerid=no
signalling = fxo_ks
context=default
echocancel=no
echocancelwhenbridged=no
channel => 25-48

queues.conf

updatecdr = yes

[techsupport]
strategy = ringall
context = reception
timeout = 15
retry = 5
wrapuptime=15
maxlen = 0
announce-frequency = 90
announce-holdtime = once
announce-round-seconds = 10
leavewhenempty = yes
context = qout3
queue-thankyou = alphacard_queue.vm

Hi

create them as local members

for example

exten => 2222,1,Dial(Zap/g1/15555555555)
exten => 2223,1,Dial(Zap/g1/15555555556)
then in the queue.conf put
member = Local/2222/n
member = Local/2223/n

etc

We use this for remote worker call centers with great sucess, we also add the option for the remote user to accept the the call, so it doesnt matter if its oit of area or tuned off. But thats another question :smile:

Perfect. I’ll have to look at the agent options again, but this will work for what we need.

extensions.conf

;remote queue stuff exten => 5301,1,AddQueueMember(techsupport|Local/1${CALLERIDNUM}/n) exten => 5301,2,Hangup exten => 5302,1,RemoveQueueMember(techsupport|Local/1${CALLERIDNUM}/n) exten => 5302,2,Hangup
queue_logs

1265119959|1265119957.47897|techsupport|NONE|ENTERQUEUE||18 1265119969|1265119957.47897|techsupport|Local/15555555555@default-fa85,1|CONNECT|10 1265119971|1265119957.47897|techsupport|Local/15555555555@default-fa85,1|COMPLETEAGENT|10|5554445555It is stored in the Channel column of the CDR too

Our remote users can log themselves in and out at will. The issue I mentioned before is when the queue goes directly to the cellphone’s voicemail because they are out or range or the phone is off.
But that has mostly been negated with car chargers and training to check voicemail. :slight_smile:

Thanks

To stop the cellphone voicemail , use the M option and creat a macro to accept the call

Ian

Hmm you mean some sort of follow me like functionality for a queue

When the member picks up asterisk will ask "if you are a human and want to accept this call press 1"
If they don’t, assume it is voicemail and kick that member out of the queue, and send the customer call back to the queue.

Sounds quite handy. I’ll have to implement and try it out when I get some time.