[Asterisk-Users] help - recording both sides of a conversation

John Baker johnb at listbrokers.com
Tue Jan 20 21:44:23 MST 2004


Joelson -

No application 'System(/usr/scripts/mix_monitor_files.pl ${MONITORDIR}

Ok, where is it?

Or, are you missing a ')' maybe at the end of your System call?

John Baker

----- Original Message ----- 
From: "Joelson S. Apon" <joelsa at ph.cylynx.com>
To: <asterisk-users at lists.digium.com>
Sent: Tuesday, January 20, 2004 12:55 PM
Subject: RE: [Asterisk-Users] help - recording both sides of a conversation


> Hello Sirs..
>
> I'm setting up a call-recording with my asterisk here and I do follow
> program which was post in this mailing list last Jan. 4 (program is also
> shown below), and I'm very much thankful for that..
>
> However, I do have some errors, here is my output..Hope that someone could
> lighten me up for this..Thank you very much for the help..
>
> Regards
>
> Joel
>
> *CLI>     -- Starting simple switch on 'Zap/49-1'
>     -- Executing Answer("Zap/49-1", "") in new stack
>     -- Executing Macro("Zap/49-1", "record-enable") in new stack
>     -- Executing AGI("Zap/49-1", "set-timestamp.agi") in new stack
>     -- Launched AGI Script /var/lib/asterisk/agi-bin/set-timestamp.agi
>     -- AGI Script set-timestamp.agi completed, returning 0
>     -- Executing Dial("Zap/49-1", "Zap/51|15") in new stack
>     -- Called 51
>     -- Zap/51-1 is ringing
>     -- Zap/51-1 answered Zap/49-1
>     -- Attempting native bridge of Zap/49-1 and Zap/51-1
>     -- Hungup 'Zap/51-1'
>   == Spawn extension (test3, 2103, 3) exited non-zero on 'Zap/49-1'
>     -- Executing Macro("Zap/49-1", "record-cleanup") in new stack
>     -- Executing SetVar("Zap/49-1",
> "MONITORDIR=/var/spool/asterisk/conversations/") in new stack
>     -- Executing GotoIf("Zap/49-1", " = ?6:3") in new stack
>     -- Goto (macro-record-cleanup,s,3)
> Jan 20 13:43:37 WARNING[1256444864]: pbx.c:1173 pbx_extension_helper: No
> application 'System(/usr/scripts/mix_monitor_files.pl ${MONITORDIR}
> ${CALLFILENAME}-in.wav' for extension (macro-record-cleanup, s, 3)
>   == Spawn extension (macro-record-cleanup, s, 3) exited non-zero on
> 'Zap/49-1'
> in macro 'record-cleanup'
>   == Spawn extension (test3, h, 1) exited non-zero on 'Zap/49-1'
>     -- Hungup 'Zap/49-1'
>
>
>
>
> -----Original Message-----
> From: asterisk-users-admin at lists.digium.com
> [mailto:asterisk-users-admin at lists.digium.com]On Behalf Of zoa
> Sent: Tuesday, January 06, 2004 1:05 PM
> To: asterisk-users at lists.digium.com
> Subject: Re: [Asterisk-Users] help - recording both sides of a
> conversation
>
>
>
> You also don't need such a complicated perl script, just muxing them
> without cutting them is enough.
> (Timing was fixed)
>
> zoa.
>
> At 14:41 4/01/2004 -0600, you wrote:
> >you nolonger need set-timestamp.agi as we have ${TIMESTAMP} in that
format
> >by default now.
> >
> >bkw
> >
> >On Sun, 4 Jan 2004, John Baker wrote:
> >
> > > Iain -
> > >
> > > First off, all of this is heavily borrowed from others.  For those who
> see
> > > their code embedded here, I thank you and give you full credit.
> > >
> > > Here's how I do it.  It's a bit convoluted, but I didn't want to
record
> > > everything.  So, if a call comes in and I want to record it, I send it
> > here:
> > >
> > > [ext-surrept]
> > > exten => _57XXX,1,Answer
> > > exten => _57XXX,2,Macro(record-enable)
> > > exten => _57XXX,3,BackGround(for-quality-purposes)
> > > exten => _57XXX,4,BackGround(this-call-may-be)
> > > exten => _57XXX,5,BackGround(recorded)
> > > exten => _57XXX,6,Dial(SIP/${EXTEN:1},120,tm)
> > > exten => _57XXX,7,Macro(rg-inbound,10,tr)
> > > exten => _57XXX,8,Goto(aa-nooneavail,s,1)
> > >
> > > By transferring a call to 5 + the extension I'm at, I enable the call
> > > recording, let the caller know he might be recorded and then send the
> call
> > > right back to myself.
> > >
> > > Here's the Macro:
> > >
> > > [macro-record-enable]
> > > exten => s,1,AGI(set-timestamp.agi)
> > > exten =>
> > s,2,SetVar(CALLFILENAME=${timestamp}-${CALLERIDNUM}-${MACRO_EXTEN})
> > > exten => s,3,Monitor(wav,${CALLFILENAME})
> > >
> > > It starts the recording and calls set-timestamp.agi
> > >
> > > Here's the agi file:
> > >
> > > #!/bin/sh
> > > longtime=`date +%Y%m%d-%H%M%S`
> > > echo SET VARIABLE timestamp $longtime
> > >
> > > It sets a timestamp, which if you scour the asterisk list, you'll see
> that
> > > it is necessary for mixing the in and out audio later.
> > >
> > > I have one hangup extension set for my internal phones; it looks like
> this:
> > >
> > > exten => h,1,Macro(record-cleanup)
> > >
> > > And the record-cleanup macro looks like this:
> > >
> > > [macro-record-cleanup]
> > > exten => s,1,SetVar(MONITORDIR=/var/spool/asterisk/monitor)
> > > exten => s,2,GotoIf($[${CALLFILENAME} = ${FOO}]?6:3)
> > > exten => s,3,System(/usr/scripts/mix_monitor_files.pl ${MONITORDIR}
> > > ${CALLFILENAME}-in.wav ${CALLFILENAME}-out.wav ${CALLFILENAME}.wav)
> > > exten => s,6,NoOp
> > >
> > > Don't forget to make the /var/spool/asterisk/monitor directory!
> > >
> > > Finally, mix_monitor_files.pl does the mixing job and combines the in
> and
> > > out files:
> > >
> > > #!/usr/bin/perl
> > >
> > > $monitordir = shift;
> > > $infile = shift;
> > > $outfile = shift;
> > > $finishfile = shift;
> > >
> > > chdir($monitordir);
> > >
> > >
> > > $infile_output = `sox $infile -e stat 2>&1`;
> > > $outfile_output = `sox $outfile -e stat 2>&1`;
> > >
> > > $infile_output =~ /Samples read:\s+(\d+)/;
> > > $infile_samples = $1;
> > >
> > > $outfile_output =~ /Samples read:\s+(\d+)/;
> > > $outfile_samples = $1;
> > >
> > >
> > > if($outfile_samples > $infile_samples)
> > >  {
> > >          $diff_samples = $outfile_samples - $infile_samples;
> > >          system("sox -v 3 $outfile temp${outfile} trim
> ${diff_samples}s");
> > >          system("wmix $infile temp${outfile} > $finishfile");
> > >          system("rm -f $infile temp${outfile} $outfile");
> > >  }
> > > elsif($infile_samples > $outfile_samples)
> > >  {
> > >          $diff_samples = $infile_samples - $outfile_samples;
> > >          system("sox -v 3 $infile temp${infile} trim
> ${diff_samples}s");
> > >          system("wmix temp${infile} $outfile > $finishfile");
> > >          system("rm -f temp${infile} $outfile $infile");
> > >  }
> > > else
> > >  {
> > >          system("wmix $infile $outfile > $finishfile");
> > >          system("rm -f $infile $outfile");
> > >  }
> > >
> > >
> > > You'll need wmix from http://tph.tuwien.ac.at/~oemer/wavetools.html
and
> > > sox, which was already on my system and is pretty standard.
> > >
> > > The only problem I've found is that my in channel is a bit low, with
> > respect
> > > to volume.  It's probably a sox issue, but I haven't had time to mess
> with
> > > the settings yet.  It's only an annoyance; you can definitely hear
both
> > > sides of the conversation.
> > >
> > > John
> > >
> > > P.S. I record my outbound calls by prefixing my outbound calls with a
5,
> > > which similiarly call record-enable.  In that case, the other party
> doesn't
> > > know they're being recorded.  IANAL.  Check your state laws first!  In
> some
> > > states both parties must know about calls being recorded.  In mine,
TX,
> > only
> > > the calling party must know, but it must be first person.  For this
> reason,
> > > I do not let asterisk record everything, because my employees must
> > > themselves determine what they're going to record.
> > >
> > >
> > > ----- Original Message -----
> > > From: "Iain Stevenson" <iain at iainstevenson.com>
> > > To: <asterisk-users at lists.digium.com>
> > > Sent: Sunday, January 04, 2004 12:51 PM
> > > Subject: Re: [Asterisk-Users] help - recording both sides of a
> conversation
> > >
> > >
> > > >
> > > > *  always records both sides of the conversation - but stores them
in
> > > > separate files in
> > > > /var/spool/asterisk/monitor/.  You need to combine the "in" and
"out"
> > > parts
> > > > using soxmix.
> > > >
> > > >   Iain
> > > >
> > > >
> > > >
> > > > --On Sunday, January 4, 2004 9:59 am -0800 Paul Mahler
> > > > <pmahler at signate.com> wrote:
> > > >
> > > > > Does some kind Asterisk soul have an example from extensions.conf
> that
> > > > > shows how to record both sides of a conversation?
> > > > >
> > > > > Thanks!
> > > > >
> > > > >
> > > > > Paul Mahler
> > > > > mail:pmahler at signate.com
> > > > > phone: 650.207.9855
> > > > > fax: 877.408.0105
> > > > >
> > > > > -----Original Message-----
> > > > > From: asterisk-users-admin at lists.digium.com
> > > > > [mailto:asterisk-users-admin at lists.digium.com] On Behalf Of
Philipp
> von
> > > > > Klitzing
> > > > > Sent: Sunday, January 04, 2004 9:23 AM
> > > > > To: asterisk-users at lists.digium.com
> > > > > Subject: Re: [Asterisk-Users] CAPI, transfering thru a 2nd PBX -
> keep
> > > > > original CallerID
> > > > >
> > > > > Hi!
> > > > >
> > > > >> I want to have Asterisk as my gateway to the outside world and
use
> > > > >> another PBX to connect my existing phones.
> > > > >>
> > > > >> exten => ${OUTSIDEMSN},1,Dial,CAPI/${MSN2NDPBX}:${EXTEN}
> > > > >>
> > > > >> How do I transfer the caller Id information initially coming in?
> > > > >
> > > > > I have strong doubts that this can be done at all. One way would
be
> to
> > > > > set your ${MSN2ndPBX} to ${CALLERIDNUM}, but that would require
that
> > > > > capi.conf has that CALLERIDNUM listed as one of the valid outgoing
> > MSNs.
> > > > > Since you won't know in advance who'll call that'll be a problem -
> also
> > > I
> > > > > don't think you can reconfigure capi.conf in the midst of
processing
> a
> > > > > call...
> > > > >
> > > > > Besides: I suppose your ISDN PBX (which brand exactly?) supports
> CLIP
> > > (or
> > > > > comes with an internal S0 bus) and you have an analog CLIP phone
(or
> > > ISDN
> > > > > phone) connected?
> > > > >
> > > > > Workaround: See my last posting and other very recent discussions
> > > > > concerning a simple tool that shows the current caller ID and name
> on
> > > > > your PC using either Flash, HTML or Java. Or use astman/ gastman.
> > > > > As of now I am storing the caller data through AGI in mySQL and
> display
> > > > > that on a web page that the user needs to re-load manually when
> > desired.
> > > > >
> > > > > Cheers, Philipp
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Asterisk-Users mailing list
> > > > > Asterisk-Users at lists.digium.com
> > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > >
> > > > > _______________________________________________
> > > > > Asterisk-Users mailing list
> > > > > Asterisk-Users at lists.digium.com
> > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Asterisk-Users mailing list
> > > > Asterisk-Users at lists.digium.com
> > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > >
> > >
> > > _______________________________________________
> > > Asterisk-Users mailing list
> > > Asterisk-Users at lists.digium.com
> > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > >
> >_______________________________________________
> >Asterisk-Users mailing list
> >Asterisk-Users at lists.digium.com
> >http://lists.digium.com/mailman/listinfo/asterisk-users
>
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
>
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
>




More information about the asterisk-users mailing list