[Freeswitch-users] mod_conference "auto-record" enhancement

Chris Danielson chris at maxpowersoft.com
Mon Jul 7 14:46:54 PDT 2008


This patch is the equivalent of automatically running the following 
command every time a new conference starts.

conference <conference name> record <my auto record 
location>/<conference name>


*Chris Danielson*
Software Consultant and Co-Founder
Web: MaxPowerSoft, LLC <http://www.maxpowersoft.com/>


e schmidbauer wrote:
> can the auto-record send the conference to an icecast stream using 
> mod_shout?
>
> On Mon, Jul 7, 2008 at 5:36 PM, Chris Danielson 
> <chris at maxpowersoft.com <mailto:chris at maxpowersoft.com>> wrote:
>
>     FreeSWITCH may or may not need this but I added an auto-record
>     feature into the mod_conference module.  Essentially, one can
>     specify within the "conf/autoload_configs/conference.conf.xml" the
>     following attribute:
>     <param name="auto-record" value="/var/myNFSshare/audio/" />
>     When this is specified the conference will automatically record
>     the conference->name with an appended ".wav" into that folder.  I
>     built this out of necessity for my current implementation.  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. 
>
>     Attached is my svn diff.
>
>     Kind Regards,
>     Chris
>
>     -- 
>     *Chris Danielson*
>     Software Consultant and Co-Founder
>     Web: MaxPowerSoft, LLC <http://www.maxpowersoft.com/>
>     Email: chris at maxpowersoft.com <mailto:chris at maxpowersoft.com>
>
>     Index: mod_conference.c
>     ===================================================================
>     --- mod_conference.c    (revision 8910)
>     +++ mod_conference.c    (working copy)
>     @@ -27,8 +27,8 @@
>      * Neal Horman <neal at wanlink dot com>
>      * Bret McDanel <trixter at 0xdecafbad dot com>
>      * Dale Thatcher <freeswitch at dalethatcher dot com>
>     + * Chris Danielson <chris at maxpowersoft dot com>
>      *
>     - *
>      * mod_conference.c -- Software Conference Bridge
>      *
>      */
>     @@ -230,6 +230,7 @@
>            char *caller_id_number;
>            char *sound_prefix;
>            char *special_announce;
>     +       char *auto_record;
>            uint32_t max_members;
>            char *maxmember_sound;
>            uint32_t anounce_count;
>     @@ -880,6 +881,14 @@
>            switch_mutex_lock(globals.hash_mutex);
>            globals.threads++;
>            switch_mutex_unlock(globals.hash_mutex);
>     +
>     +       if (conference->auto_record) {
>     +               char *rfile = switch_mprintf("%s%s%s",
>     conference->auto_record, conference->name, ".wav");
>     +               switch_assert(rfile);
>     +               switch_log_printf(SWITCH_CHANNEL_LOG,
>     SWITCH_LOG_DEBUG, "Auto recording file: %s\n", rfile);
>     +               launch_conference_record_thread(conference, rfile);
>     +               switch_safe_free(rfile);
>     +       }
>
>            while (globals.running && !switch_test_flag(conference,
>     CFLAG_DESTRUCT)) {
>                    switch_size_t file_sample_len = samples;
>     @@ -4806,6 +4815,7 @@
>            switch_status_t status;
>            int comfort_noise_level = 0;
>            char *suppress_events = NULL;
>     +       char *auto_record = NULL;
>
>            /* Validate the conference name */
>            if (switch_strlen_zero(name)) {
>     @@ -4923,6 +4933,8 @@
>                            }
>                    } else if (!strcasecmp(var, "suppress-events") &&
>     !switch_strlen_zero(val)) {
>                            suppress_events = val;
>     +               } else if (!strcasecmp(var, "auto-record") &&
>     !switch_strlen_zero(val)) {
>     +                       auto_record = val;
>                    }
>            }
>
>     @@ -5078,6 +5090,10 @@
>                    clear_eflags(suppress_events, &conference->eflags);
>            }
>
>     +       if (!switch_strlen_zero(auto_record)) {
>     +               conference->auto_record =
>     switch_core_strdup(conference->pool, auto_record);
>     +       }
>     +
>            /* caller control configuration chores */
>            if (switch_ivr_digit_stream_parser_new(conference->pool,
>     &conference->dtmf_parser) == SWITCH_STATUS_SUCCESS) {
>
>
>     _______________________________________________
>     Freeswitch-users mailing list
>     Freeswitch-users at lists.freeswitch.org
>     <mailto:Freeswitch-users at lists.freeswitch.org>
>     http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>     UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>     http://www.freeswitch.org
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20080707/e7d3b995/attachment-0002.html 


More information about the FreeSWITCH-users mailing list