[asterisk-users] toggling recordings on / off using MeetMe()

David Backeberg dbackeberg at gmail.com
Sat May 3 10:18:01 CDT 2008


Hi there:

I'm using Asterisk to run a call center in a way that probably wasn't
intended. Due to restrictions imposed by our proprietary Intertel
phone system, our call center only runs partly on Asterisk. We have
agents sit in a MeetMe() conference room, as the only members,
listening to hold music. When an inbound customer call arrives, that
call gets patched over the Intertel, onto a Zaptel channel, and we
route them to an open conference room. Agent hears the chime noise
indicating a customer has arrived, hold music stops, and then we want
recording to begin.

This worked great in Asterisk 1.2 using MixMonitor(). We would do the
typical record each side of the call, and when customer hangs up,
soxmix the sides into a single sound file. We're migrating to Asterisk
1.4.19.1. I first tried using our same dialplan and scripts, but we
get nasty echo in the conference rooms if we're recording using
MixMonitor(). Comment out the MixMonitor(), and call sounds great,
with no echo. Weird. I don't know whether this is a known bug with
MixMonitor() or some quirk of the way we're using it.

What I do know is that if I record using MeetMe(), the recording
starts and records just fine, with no echo problems. The problem then
comes with the way we're using MeetMe(), in a way that probably wasn't
ever intended.

You can invoke MeetMe() without the 'r' argument, to not start
recordings, while the agent sits on hold awaiting the first customer.
Then, on your extension.conf pertaining to the customer side of the
conference, you can add the 'r' flag to begin recording when the
customer joins the conference. When the customer hangs up, there's no
built-in flag to MeetMe() or MeetMeAdmin() to toggle-off the
recording. In our usage, the recording happily continues, recording
silence, and will resume recording the next conversation, etc into one
giant file. Not at all what we're looking for.

So then I reviewed app_meetme.c, looking at the best way to add a flag
I could invoke, perhaps from MeetMeAdmin() that would toggle off the
recording. I saw there's already a flag called
MEETME_RECORD_TERMINATE, which when set, will be processed by
recordthread(), and will stop the recording. I could add a flag, like
'Q' to admin_exec() which could call a small function that would set
the MEETME_RECORD_TERMINATE flag and clear the recording file and
format variables.

It doesn't look difficult to modify app_meetme.c to meet the usage I
was hoping for, but I thought I'd do a brain dump to the list, and let
people who know the code better tell me how boneheaded, innovative,
misinformed, or creative this approach would be. Should I instead
pursue a fix for whatever is creating echo when using MixMonitor(), is
there a better way to do recording considering my particular usage?
Should I try old versions of 1.4, and see if the echo is some recent
regression in the MixMonitor() code?

Thanks for any suggestions, (and of course thanks for an incredible
open-source product)
David Backeberg



More information about the asterisk-users mailing list