[Home]

Summary:ASTERISK-14403: MixMonitor stops recording when call is transferred
Reporter:Darrin Henshaw (ayth)Labels:
Date Opened:2009-06-30 10:28:36Date Closed:2011-06-07 14:00:17
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Applications/app_mixmonitor
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:We recently upgraded from 1.2.31 to 1.4.25, and have noticed an issue. Outside caller makes a call to our helpdesk. The dialplan for it is below:

[main-line]
exten => s,1,NoOp()
exten => s,n,NoOp(CallerID-dnid ${CALLERID(dnid)}))
exten => s,n,NoOp(CallerID-number ${CALLERID(number)}))
exten => s,n,NoOp(CallerID-name ${CALLERID(name)}))
exten => s,n,Wait(2)
exten => s,n,Answer
exten => s,n,Playback(/var/lib/asterisk/sounds/custom/queue_greeting)
exten => s,n,MixMonitor(/var/www/monitor/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(number)}_${UNIQUEID}.WAV||)
exten => s,n,GotoIfTime(20:00-7:45|mon-fri|*|*?Afterhours)
exten => s,n,GotoIfTime(*|sat-sun|*|*?Afterhours)
exten => s,n,GotoIfTime(*|*|25-26|dec?Afterhours)
exten => s,n,GotoIfTime(*|*|1|jan?Afterhours)
exten => s,n,GotoIfTime(*|*|1|sep?Afterhours)
exten => s,n,GotoIfTime(*|*|21|mar?Afterhours)
exten => s,n,GotoIfTime(17:30-20:00|*|10|apr?Afterhours)
exten => s,n,GotoIfTime(*|*|11|nov?Afterhours)
exten => s,n(Businesshours),Queue(MainQueue|t|||3600)
exten => s,n,Hangup
exten => s,n(Afterhours),Queue(AFTERHOURS|t|||3600)
exten => s,n,Hangup

If that one call solves the issue, that's fine. However, if the tech who answered the call needs to transfer it to another party, MixMonitor stops recording. Happens regardless of whether it comes in via our DAHDI(through our PRI) or through our IAX trunks to other offices.

****** ADDITIONAL INFORMATION ******

Console output of call:

   -- Executing [1100@iax-trunk:1] Goto("IAX2/Company-BM-3636", "extensions|1100|1") in new stack
   -- Goto (extensions,1100,1)
   -- Executing [1100@extensions:1] Goto("IAX2/Company-BM-3636", "main-line|s|1") in new stack
   -- Goto (main-line,s,1)
   -- Executing [s@main-line:1] NoOp("IAX2/Company-BM-3636", "Debug Output") in new stack
   -- Executing [s@main-line:2] NoOp("IAX2/Company-BM-3636", "CallerID-dnid )") in new stack
   -- Executing [s@main-line:3] NoOp("IAX2/Company-BM-3636", "CallerID-number 9025551212)") in new stack
   -- Executing [s@main-line:4] NoOp("IAX2/Company-BM-3636", "CallerID-name )") in new stack
   -- Executing [s@main-line:5] Wait("IAX2/Company-BM-3636", "2") in new stack
   -- Executing [s@main-line:6] Answer("IAX2/Company-BM-3636", "") in new stack
   -- Executing [s@main-line:41] Playback("IAX2/Company-BM-3636", "/var/lib/asterisk/sounds/custom/queue_greeting") in new stack
   -- <IAX2/Company-BM-3636> Playing '/var/lib/asterisk/sounds/custom/queue_greeting' (language 'en')
   -- Executing [s@main-line:42] MixMonitor("IAX2/Company-BM-3636", "/var/www/monitor/20090630-120514_9025551212_1246374303.9735.WAV||") in new stack
   -- Executing [s@main-line:44] GotoIfTime("IAX2/Company-BM-3636", "20:00-7:45|mon-fri|*|*?Afterhours") in new stack
   -- Executing [s@main-line:45] GotoIfTime("IAX2/Company-BM-3636", "*|sat-sun|*|*?Afterhours") in new stack
   -- Executing [s@main-line:46] GotoIfTime("IAX2/Company-BM-3636", "*|*|25-26|dec?Afterhours") in new stack
   -- Executing [s@main-line:47] GotoIfTime("IAX2/Company-BM-3636", "*|*|1|jan?Afterhours") in new stack
   -- Executing [s@main-line:48] GotoIfTime("IAX2/Company-BM-3636", "*|*|1|sep?Afterhours") in new stack
   -- Executing [s@main-line:49] GotoIfTime("IAX2/Company-BM-3636", "*|*|21|mar?Afterhours") in new stack
   -- Executing [s@main-line:50] GotoIfTime("IAX2/Company-BM-3636", "17:30-20:00|*|10|apr?Afterhours") in new stack
   -- Executing [s@main-line:51] GotoIfTime("IAX2/Company-BM-3636", "*|*|11|nov?Afterhours") in new stack
   -- Executing [s@main-line:52] Queue("IAX2/Company-BM-3636", "MainQueue|t|||3600") in new stack
   -- Started music on hold, class 'default', on channel 'IAX2/Company-BM-3636'
   -- outgoing agentcall, to agent '513', on 'Local/6055@extensions-817f,1'
 == Begin MixMonitor Recording IAX2/Company-BM-3636
   -- Executing [6055@extensions:1] Dial("Local/6055@extensions-817f,2", "SIP/6055|30|j") in new stack
   -- Called 6055
   -- SIP/6055-0a1b2a58 is ringing
   -- Agent/513 is ringing
   -- Remote UNIX connection
   -- Remote UNIX connection disconnected
   -- SIP/6055-0a1b2a58 answered Local/6055@extensions-817f,2
   -- Agent/513 answered IAX2/Company-BM-3636
   -- Stopped music on hold on IAX2/Company-BM-3636
 == Spawn extension (extensions, 6055, 1) exited non-zero on 'Local/6055@extensions-817f,2'
   -- Started music on hold, class 'default', on channel 'IAX2/Company-BM-3636'
   -- Executing [6118@outgoing-extensions:1] Goto("SIP/6055-b7b40d08", "extensions|6118|1") in new stack
   -- Goto (extensions,6118,1)
   -- Executing [6118@extensions:1] NoOp("SIP/6055-b7b40d08", "") in new stack
   -- Executing [6118@extensions:2] Dial("SIP/6055-b7b40d08", "SIP/6118|20|j") in new stack
   -- Called 6118
   -- SIP/6118-0a0d8518 is ringing
   -- Stopped music on hold on IAX2/Company-BM-3636
 == Spawn extension (main-line, s, 52) exited non-zero on 'SIP/6055-b7b40d08<ZOMBIE>'
 == End MixMonitor Recording IAX2/Company-BM-3636
   -- IAX2/Company-BM-3636 requested special control 20, passing it to SIP/6118-0a0d8518
   -- IAX2/Company-BM-3636 requested special control 20, passing it to SIP/6118-0a0d8518
   -- SIP/6118-0a0d8518 answered IAX2/Company-BM-3636
   -- Hungup 'DAHDI/2-1'
 == Spawn extension (outgoing, 714414964319, 3) exited non-zero on 'SIP/2027-b7b42330'
 == End MixMonitor Recording SIP/2027-b7b42330
 == Spawn extension (extensions, 6118, 2) exited non-zero on 'IAX2/Company-BM-3636'
   -- Hungup 'IAX2/Company-BM-3636'
Comments:By: Darrin Henshaw (ayth) 2009-06-30 11:03:17

In addition we tried using the variable AUDIOHOOK_INHERIT within the dialplan but the issue still occurs.

By: Leif Madsen (lmadsen) 2009-09-18 07:45:05

This is expected behaviour. I ran into the same issue and thought it was a bug, but it's not. It's been far too many months since a developer explained why that was the case, so I can't elaborate here.

However, you can use the Monitor() application, and use the 'm' option (mix) in order to do basically the same thing as MixMonitor(), but it should continue recording after the transfer.