[Asterisk-Users] Monitor Application with Queued calls

Paul Traue, Jr. ptraue at neospire.net
Fri Mar 4 14:00:34 MST 2005


Due to management concerns our asterisk system has been setup to record 
all phone calls for some time now (before the 1.0 release).  Everything 
was working fine until we upgraded 1.0.5 where all calls are recorded 
except those that pass through a queue (we are not using the queue 
record functionality because there are some minor issues with using it 
in our scenario).  Specifically, the Monitor app is run, the recording 
begins, the Dial command is called, and as soon as the agent picks up 
the phone the recording ends.  Console logging of it occurring:

Asterisk 1.0.5, Copyright (C) 1999-2004 Digium.
Written by Mark Spencer <markster at digium.com>
=========================================================================
Connected to Asterisk 1.0.5 currently running on cm02 (pid = 24466)
Verbosity is at least 17
     -- Accepting call from 'XXXXXXXXXX' to 'YYYYYYYYYY' on channel 0/2, 
span 1
     -- Executing Goto("Zap/2-1", "neospire|s|1") in new stack
     -- Goto (neospire,s,1)
     -- Executing Wait("Zap/2-1", "1") in new stack
     -- Executing Answer("Zap/2-1", "") in new stack
     -- Executing Wait("Zap/2-1", "1") in new stack
     -- Executing DigitTimeout("Zap/2-1", "5") in new stack
     -- Set Digit Timeout to 5
     -- Executing ResponseTimeout("Zap/2-1", "10") in new stack
     -- Set Response Timeout to 10
     -- Executing BackGround("Zap/2-1", "neo-welcome-options") in new stack
     -- Playing 'neo-welcome-options' (language 'en')
   == CDR updated on Zap/2-1
     -- Executing SetCIDName("Zap/2-1", "NeoSpire Tech") in new stack
     -- Executing Queue("Zap/2-1", "tech-support|tT|||") in new stack
     -- Started music on hold, class 'default', on Zap/2-1
     -- Stopped music on hold on Zap/2-1
     -- Playing 'queue-youarenext' (language 'en')
     -- Told Zap/2-1 in tech-support their queue position (which was 1)
     -- Playing 'neo-queue-thankyou' (language 'en')
     -- Started music on hold, class 'default', on Zap/2-1
     -- outgoing agentcall, to agent '8137', on 'Local/8137 at default-8c5a,1'
     -- Called Agent/8137
     -- Executing Macro("Local/8137 at default-8c5a,2", 
"stdexten|8137|SIP/8137") in new stack
     -- Executing Monitor("Local/8137 at default-8c5a,2", 
"WAV|1109969569.15844|m") in new stack
     -- Executing Dial("Local/8137 at default-8c5a,2", "SIP/8137|18|tT|") 
in new stack
     -- Called 8137
     -- SIP/8137-92b5 is ringing
     -- Agent/8137 is ringing
     -- SIP/8137-92b5 answered Local/8137 at default-8c5a,2
     -- Agent/8137 answered Zap/2-1
     -- Stopped music on hold on Zap/2-1
monitor executing ( nice -n 19 soxmix 
"/var/spool/asterisk/monitor/1109969569.15844-in.WAV" 
"/var/spool/asterisk/monitor/1109969569.15844-out.WAV" 
"/var/spool/asterisk/monitor/1109969569.15844.WAV"  && rm -f 
"/var/spool/asterisk/monitor"/1109969569.15844-* ) &
     -- Channel 0/2, span 1 got hangup
     -- Hungup 'Zap/2-1'

While it may not be completely obvious by the above, the soxmix is 
getting run as soon as the agent answers the phone.

Dialing rules to get to this point:

[incoming]
;
; Context the zap channels are on
;

; Local Number
exten => YYYYYYYYYY,1,Goto(neospire,s,1)

[neospire]
;
; Main NeoSpire Greeting Menu
;
exten => s,1,Wait(1)
exten => s,2,Answer
exten => s,3,Wait(1)
exten => s,4,DigitTimeout(5)
exten => s,5,ResponseTimeout(10)
exten => s,6,Background(neo-welcome-options)

; Menu choices
; 1 - sales
; 2 - tech support
; 3 - billing
; 9 - company directory (have to write this)
; 0 - operator
; extension

; Replay menu if they don't respond in time
exten => t,1,Goto,s,6

; Menu prompts

; Tech support goes to the queue
exten => 2,1,SetCIDName(NeoSpire Tech);
exten => 2,2,Queue(tech-support|tT|||)

; Play invalid selection message
exten => i,1,Playback,invalid
exten => i,2,Goto,s,6

Whene Queue actually dials an agents it actually calls a macro (stdext):

[macro-stdexten];
;
; Standard extension macro:
;   ${ARG1} - Extension  (we could have used ${MACRO_EXTEN} here as well
;   ${ARG2} - Device(s) to ring
;
; Ring the interface, 18 seconds maximum
: Note:  This timeout must be greater than the queue timeout otherwise queue
;        calls roll to voicemail!!!!!!!!!!!!
exten => s,1,Monitor(WAV,${UNIQUEID},m)
exten => s,2,Dial(${ARG2},18,tT,)

; Send to voicemail
exten => s,3,StopMonitor()
exten => s,4,Voicemail(u${ARG1})

exten => s,5,Hangup

; If unavailable, send to voicemail w/ unavail announce
exten => s,103,StopMonitor()
exten => s,104,Voicemail(b${ARG1})
exten => s,105,Hangup

; If they press *, send the user into VoicemailMain
exten => a,1,VoicemailMain(${ARG1})



It should also be noted, that this all worked correctly until we 
upgraded to 1.0.5.  Downgrading back down to 1.0.2 (the last release we 
were on) isn't really an option because 1.0.2 crashed for us regularly, 
1.0.5 while stable, doesn't record going to our agents.  All other calls 
are recorded just fine.

Anybody have any ideas, or is it time for me to post this on 
bugs.digium.com?

Paul



More information about the asterisk-users mailing list