Paul Traue, Jr.
2005-Mar-04 14:00 UTC
[Asterisk-Users] Monitor Application with Queued calls
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@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@default-8c5a,1' -- Called Agent/8137 -- Executing Macro("Local/8137@default-8c5a,2", "stdexten|8137|SIP/8137") in new stack -- Executing Monitor("Local/8137@default-8c5a,2", "WAV|1109969569.15844|m") in new stack -- Executing Dial("Local/8137@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@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