<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
This patch is the equivalent of automatically running the following
command every time a new conference starts.<br>
<br>
conference &lt;conference name&gt; record &lt;my auto record
location&gt;/&lt;conference name&gt;<br>
<br>
<br>
<div class="moz-signature"><b>Chris Danielson</b>
<br>
Software Consultant and Co-Founder
<br>
Web: <a href="http://www.maxpowersoft.com/">MaxPowerSoft, LLC</a>
<br>
</div>
<br>
<br>
e schmidbauer wrote:
<blockquote
 cite="mid:2cef777b0807071442p1deb9c8u39cebbddd8c0eb9e@mail.gmail.com"
 type="cite">can the auto-record send the conference to an icecast
stream using mod_shout?<br>
  <br>
  <div class="gmail_quote">On Mon, Jul 7, 2008 at 5:36 PM, Chris
Danielson &lt;<a moz-do-not-send="true"
 href="mailto:chris@maxpowersoft.com">chris@maxpowersoft.com</a>&gt;
wrote:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000">FreeSWITCH may or may not
need this but I added an auto-record feature
into the mod_conference module.&nbsp; Essentially, one can specify within
the "conf/autoload_configs/conference.conf.xml" the following attribute:<br>
&lt;param name="auto-record" value="/var/myNFSshare/audio/" /&gt;<br>
When this is specified the conference will automatically record the
conference-&gt;name with an appended ".wav" into that folder.&nbsp; I built
this out of necessity for my current implementation.&nbsp; I thought since
it is able to be toggled off and on based on specifying the
"auto-record" parameter that it might be worthy of inclusion.&nbsp; <br>
    <br>
Attached is my svn diff.<br>
    <br>
Kind Regards,<br>
Chris<br>
    <br>
    <div>-- <br>
    <b>Chris Danielson</b>
    <br>
Software Consultant and Co-Founder
    <br>
Web: <a moz-do-not-send="true" href="http://www.maxpowersoft.com/"
 target="_blank">MaxPowerSoft, LLC</a>
    <br>
Email: <a moz-do-not-send="true" href="mailto:chris@maxpowersoft.com"
 target="_blank">chris@maxpowersoft.com</a>
    <br>
    </div>
    </div>
    <br>
Index: mod_conference.c<br>
===================================================================<br>
--- mod_conference.c &nbsp; &nbsp;(revision 8910)<br>
+++ mod_conference.c &nbsp; &nbsp;(working copy)<br>
@@ -27,8 +27,8 @@<br>
&nbsp;* Neal Horman &lt;neal at wanlink dot com&gt;<br>
&nbsp;* Bret McDanel &lt;trixter at 0xdecafbad dot com&gt;<br>
&nbsp;* Dale Thatcher &lt;freeswitch at dalethatcher dot com&gt;<br>
+ * Chris Danielson &lt;chris at maxpowersoft dot com&gt;<br>
&nbsp;*<br>
- *<br>
&nbsp;* mod_conference.c -- Software Conference Bridge<br>
&nbsp;*<br>
&nbsp;*/<br>
@@ -230,6 +230,7 @@<br>
&nbsp; &nbsp; &nbsp; &nbsp;char *caller_id_number;<br>
&nbsp; &nbsp; &nbsp; &nbsp;char *sound_prefix;<br>
&nbsp; &nbsp; &nbsp; &nbsp;char *special_announce;<br>
+ &nbsp; &nbsp; &nbsp; char *auto_record;<br>
&nbsp; &nbsp; &nbsp; &nbsp;uint32_t max_members;<br>
&nbsp; &nbsp; &nbsp; &nbsp;char *maxmember_sound;<br>
&nbsp; &nbsp; &nbsp; &nbsp;uint32_t anounce_count;<br>
@@ -880,6 +881,14 @@<br>
&nbsp; &nbsp; &nbsp; &nbsp;switch_mutex_lock(globals.hash_mutex);<br>
&nbsp; &nbsp; &nbsp; &nbsp;globals.threads++;<br>
&nbsp; &nbsp; &nbsp; &nbsp;switch_mutex_unlock(globals.hash_mutex);<br>
+<br>
+ &nbsp; &nbsp; &nbsp; if (conference-&gt;auto_record) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; char *rfile = switch_mprintf("%s%s%s",
conference-&gt;auto_record, conference-&gt;name, ".wav");<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_assert(rfile);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
"Auto recording file: %s\n", rfile);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; launch_conference_record_thread(conference, rfile);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_safe_free(rfile);<br>
+ &nbsp; &nbsp; &nbsp; }<br>
    <br>
&nbsp; &nbsp; &nbsp; &nbsp;while (globals.running &amp;&amp; !switch_test_flag(conference,
CFLAG_DESTRUCT)) {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch_size_t file_sample_len = samples;<br>
@@ -4806,6 +4815,7 @@<br>
&nbsp; &nbsp; &nbsp; &nbsp;switch_status_t status;<br>
&nbsp; &nbsp; &nbsp; &nbsp;int comfort_noise_level = 0;<br>
&nbsp; &nbsp; &nbsp; &nbsp;char *suppress_events = NULL;<br>
+ &nbsp; &nbsp; &nbsp; char *auto_record = NULL;<br>
    <br>
&nbsp; &nbsp; &nbsp; &nbsp;/* Validate the conference name */<br>
&nbsp; &nbsp; &nbsp; &nbsp;if (switch_strlen_zero(name)) {<br>
@@ -4923,6 +4933,8 @@<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (!strcasecmp(var, "suppress-events")
&amp;&amp; !switch_strlen_zero(val)) {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;suppress_events = val;<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if (!strcasecmp(var, "auto-record") &amp;&amp;
!switch_strlen_zero(val)) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; auto_record = val;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&nbsp; &nbsp; &nbsp; &nbsp;}<br>
    <br>
@@ -5078,6 +5090,10 @@<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;clear_eflags(suppress_events,
&amp;conference-&gt;eflags);<br>
&nbsp; &nbsp; &nbsp; &nbsp;}<br>
    <br>
+ &nbsp; &nbsp; &nbsp; if (!switch_strlen_zero(auto_record)) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; conference-&gt;auto_record =
switch_core_strdup(conference-&gt;pool, auto_record);<br>
+ &nbsp; &nbsp; &nbsp; }<br>
+<br>
&nbsp; &nbsp; &nbsp; &nbsp;/* caller control configuration chores */<br>
&nbsp; &nbsp; &nbsp; &nbsp;if (switch_ivr_digit_stream_parser_new(conference-&gt;pool,
&amp;conference-&gt;dtmf_parser) == SWITCH_STATUS_SUCCESS) {<br>
    <br>
    <br>
_______________________________________________<br>
Freeswitch-users mailing list<br>
    <a moz-do-not-send="true"
 href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
    <a moz-do-not-send="true"
 href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users"
 target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a moz-do-not-send="true"
 href="http://lists.freeswitch.org/mailman/options/freeswitch-users"
 target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
    <a moz-do-not-send="true" href="http://www.freeswitch.org"
 target="_blank">http://www.freeswitch.org</a><br>
    <br>
  </blockquote>
  </div>
  <br>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
Freeswitch-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a class="moz-txt-link-freetext" href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a class="moz-txt-link-freetext" href="http://www.freeswitch.org">http://www.freeswitch.org</a>
  </pre>
</blockquote>
</body>
</html>