Summary:ASTERISK-16378: call recording in attended transfer
Reporter:sparksupport (sparksupport)Labels:
Date Opened:2010-07-16 00:22:15Date Closed:2011-06-07 14:05:20
Versions:Frequency of

Call recordings for my attended transfer are stored in two seperate files.
A calls B and then B transfer the call to C using *2 feature, then B and C talk. After that B hangups and then A and C talk.  
In this scenario first recording file contains talk between A & B and A & C
and second file contains talk between B & C and then A & C . Is there a way to merge these recordings into a single file (atleast avoid the multiple recording of the same face i.e between A & C)

Following is the way mixmonitor have been setup in dialplan.


include => macro-record-enable-custom
exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR(w)
exten => s,n,StopMixMonitor()
exten => s,n(check),ExecIf($["${ARG1}"=""],MacroExit,)
exten => s,n,GotoIf($["${ARG2}"="Group"]?Group:OUT)
exten => s,n(Group),Set(LOOPCNT=${FIELDQTY(ARG1,-)})
exten => s,n,Set(ITER=1)
exten => s,n(begin),Set(RECSET="${DB(AMPUSER/${CUT(ARG1,-,${ITER})}/recording)}")
exten => s,n,GotoIf($["${RECSET}"="" | "${CUT(RECSET,\\\|,2):3}" != "Always"]?continue)
exten => s,n,Set(TEXTEN=${CUT(ARG1,-,${ITER}))
exten => s,n,Noop(Recording enable for ${TEXTEN})
exten => s,n,Set(CALLFILENAME=g${TEXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n,Goto(record)
exten => s,n(continue),Set(ITER=$[${ITER}+1])
exten => s,n,GotoIf($[${ITER}<=${LOOPCNT}]?begin)
exten => s,n(OUT),GotoIf($["${ARG2}"="IN"]?IN)
exten => s,n,ExecIf($["${CUT(DB(AMPUSER/${ARG1}/recording),\\\|,1):4}" != "Always"],MacroExit,)
exten => s,n,Noop(Recording enable for ${ARG1})
exten => s,n,Set(CALLFILENAME=OUT${ARG1}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n,Goto(record)
exten => s,n(IN),ExecIf($["${CUT(DB(AMPUSER/${ARG1}/recording),\\\|,2):3}" != "Always"],MacroExit,)
exten => s,n,Noop(Recording enable for ${ARG1})
exten => s,n,Set(CALLFILENAME=IN${ARG1}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n(record),System(/bin/mkdir -p /var/spool/asterisk/monitor/freepbx/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%m)}/${STRFTIME(${EPOCH},,%d)}/${ARG1}/${UNIQUEID})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/freepbx/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%m)}/${STRFTIME(${EPOCH},,%d)}/${ARG1}/${UNIQUEID}/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,MacroExit()

Please help.
Comments:By: Leif Madsen (lmadsen) 2010-07-16 10:34:44

This is not a bug -- it is the way that call recording works in Asterisk.

The first recording is setup and associated with channel A and any channels that it speaks with.

The second recording is setup and associated with channel B and any channels that it speaks with.

You may be able to get creative and use some applications to automatically split the calls based on time and patch them together, but from the viewpoint of Asterisk this is not a bug.