[commit] r3943 - in freeswitch/trunk: conf src/include src/mod/applications/mod_conference
Author: anthm Date: Thu Jan 11 13:14:02 2007 New Revision: 3943 Modified: freeswitch/trunk/conf/freeswitch.xml freeswitch/trunk/src/include/switch_utils.h freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Log: update conference to add lock sounds, sound prefix, and use say: syntax Modified: freeswitch/trunk/conf/freeswitch.xml ============================================================================== --- freeswitch/trunk/conf/freeswitch.xml (original) +++ freeswitch/trunk/conf/freeswitch.xml Thu Jan 11 13:14:02 2007 @@ -397,6 +397,7 @@ <!-- Profiles are collections of settings you can reference by name. --> <profiles> + <!--If no profile is specified it will default to "default"--> <profile name="default"> <!-- Domain (for presence) --> <param name="domain" value="sub.mydomain.com"/> @@ -406,38 +407,43 @@ <param name="interval" value="20"/> <!-- Energy level required for audio to be sent to the other users --> <param name="energy-level" value="300"/> - <!-- Name of the caller control group to use for this profile --> - <!-- <param name="caller-controls" value="some name"/> --> + <!-- Name of the caller control group to use for this profile --> + <!-- <param name="caller-controls" value="some name"/> --> <!-- TTS Engine to use --> <!--<param name="tts-engine" value="cepstral"/>--> <!-- TTS Voice to use --> <!--<param name="tts-voice" value="david"/>--> - <!-- If TTS is enabled all audio-file params not beginning with --> - <!-- '/' or with drive: (i.e. c:) will be considered text to say with TTS --> - + <!-- If TTS is enabled all audio-file params beginning with --> + <!-- 'say:' will be considered text to say with TTS --> + <!-- Set a default path here so you can use relative paths in the other sound params--> + <!--<param name="sound-prefix" value="/soundfiles"/>--> <!-- File to play to acknowledge succees --> - <!--<param name="ack-sound" value="/soundfiles/beep.wav"/>--> + <!--<param name="ack-sound" value="beep.wav"/>--> <!-- File to play to acknowledge failure --> - <!--<param name="nack-sound" value="/soundfiles/beeperr.wav"/>--> + <!--<param name="nack-sound" value="beeperr.wav"/>--> <!-- File to play to acknowledge muted --> - <!--<param name="muted-sound" value="/soundfiles/muted.wav"/>--> + <!--<param name="muted-sound" value="muted.wav"/>--> <!-- File to play to acknowledge unmuted --> - <!--<param name="unmuted-sound" value="/soundfiles/unmuted.wav"/>--> + <!--<param name="unmuted-sound" value="unmuted.wav"/>--> <!-- File to play if you are alone in the conference --> - <!--<param name="alone-sound" value="/soundfiles/yactopitc.wav"/>--> + <!--<param name="alone-sound" value="yactopitc.wav"/>--> <!-- File to play when you join the conference --> - <!--<param name="enter-sound" value="/soundfiles/welcome.wav"/>--> + <!--<param name="enter-sound" value="welcome.wav"/>--> <!-- File to play when you leave the conference --> - <!--<param name="exit-sound" value="/soundfiles/exit.wav"/>--> + <!--<param name="exit-sound" value="exit.wav"/>--> <!-- File to play when you ae ejected from the conference --> - <!--<param name="kicked-sound" value="/soundfiles/kicked.wav"/>--> + <!--<param name="kicked-sound" value="kicked.wav"/>--> <!-- File to play when the conference is locked --> - <!--<param name="locked-sound" value="/soundfiles/locked.wav"/>--> + <!--<param name="locked-sound" value="locked.wav"/>--> + <!-- File to play when the conference is locked during the call--> + <!--<param name="is-locked-sound" value="is-locked.wav"/>--> + <!-- File to play when the conference is unlocked during the call--> + <!--<param name="is-unlocked-sound" value="is-unlocked.wav"/>--> <!-- File to play to prompt for a pin --> - <!--<param name="pin-sound" value="/soundfiles/pin.wav"/>--> + <!--<param name="pin-sound" value="pin.wav"/>--> <!-- File to play to when the pin is invalid --> - <!--<param name="bad-pin-sound" value="/soundfiles/invalid-pin.wav"/>--> + <!--<param name="bad-pin-sound" value="invalid-pin.wav"/>--> <!-- Conference pin --> <!--<param name="pin" value="12345"/>--> <!-- Default Caller ID Name for outbound calls --> Modified: freeswitch/trunk/src/include/switch_utils.h ============================================================================== --- freeswitch/trunk/src/include/switch_utils.h (original) +++ freeswitch/trunk/src/include/switch_utils.h Thu Jan 11 13:14:02 2007 @@ -62,6 +62,12 @@ apr_size_t *len); +#ifdef WIN32 +#define switch_is_file_path(file) (*(file +1) == ':' || *file == '/') +#else +#define switch_is_file_path(file) (*file == '/') +#endif + /*! \brief Evaluate the truthfullness of a string expression \param expr a string expression Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Thu Jan 11 13:14:02 2007 @@ -170,9 +170,12 @@ char *muted_sound; char *unmuted_sound; char *locked_sound; + char *is_locked_sound; + char *is_unlocked_sound; char *kicked_sound; char *caller_id_name; char *caller_id_number; + char *sound_prefix; switch_ivr_digit_stream_parser_t *dtmf_parser; char *pin; char *pin_sound; @@ -1805,7 +1808,7 @@ conference_file_node_t *fnode, *nptr; switch_memory_pool_t *pool; uint32_t count; - char *expanded = NULL; + char *dfile = NULL, *expanded = NULL; assert(conference != NULL); @@ -1828,16 +1831,22 @@ } } - if -#ifdef WIN32 - (*(file +1) != ':' && *file != '/') -#else - (*file != '/') -#endif - { - status = conference_say(conference, file, leadin); + if (!strncasecmp(file, "say:", 4)) { + status = conference_say(conference, file + 4, leadin); + goto done; + } + + if (!switch_is_file_path(file)) { + if (conference->sound_prefix) { + if (!(dfile = switch_mprintf("%s/%s", conference->sound_prefix, file))) { goto done; } + file = dfile; + } else { + status = conference_say(conference, file + 4, leadin); + goto done; + } + } /* Setup a memory pool to use. */ if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) { @@ -1884,6 +1893,7 @@ switch_safe_free(expanded); + switch_safe_free(dfile); @@ -2831,6 +2841,10 @@ assert(conference != NULL); assert(stream != NULL); + if (conference->is_locked_sound) { + conference_play_file(conference, conference->is_locked_sound, CONF_DEFAULT_LEADIN, NULL); + } + switch_set_flag_locked(conference, CFLAG_LOCKED); stream->write_function(stream, "OK %s locked\n", argv[0]); if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) { @@ -2849,6 +2863,10 @@ assert(conference != NULL); assert(stream != NULL); + if (conference->is_unlocked_sound) { + conference_play_file(conference, conference->is_unlocked_sound, CONF_DEFAULT_LEADIN, NULL); + } + switch_clear_flag_locked(conference, CFLAG_LOCKED); stream->write_function(stream, "OK %s unlocked\n", argv[0]); if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) { @@ -4187,6 +4205,7 @@ char *tts_engine = NULL; char *tts_voice = NULL; char *enter_sound = NULL; + char *sound_prefix = NULL; char *exit_sound = NULL; char *alone_sound = NULL; char *ack_sound = NULL; @@ -4194,6 +4213,8 @@ char *muted_sound = NULL; char *unmuted_sound = NULL; char *locked_sound = NULL; + char *is_locked_sound = NULL; + char *is_unlocked_sound = NULL; char *kicked_sound = NULL; char *pin = NULL; char *pin_sound = NULL; @@ -4256,6 +4277,10 @@ unmuted_sound = val; } else if (!strcasecmp(var, "locked-sound")) { locked_sound = val; + } else if (!strcasecmp(var, "is-locked-sound")) { + is_locked_sound = val; + } else if (!strcasecmp(var, "is-unlocked-sound")) { + is_unlocked_sound = val; } else if (!strcasecmp(var, "kicked-sound")) { kicked_sound = val; } else if (!strcasecmp(var, "pin")) { @@ -4272,6 +4297,8 @@ caller_id_number = val; } else if (!strcasecmp(var, "caller-controls")) { caller_controls = val; + } else if (!strcasecmp(var, "sound-prefix")) { + sound_prefix = val; } } @@ -4333,6 +4360,11 @@ conference->caller_id_name = switch_core_strdup(conference->pool, caller_id_name); conference->caller_id_number = switch_core_strdup(conference->pool, caller_id_number); + + if (sound_prefix) { + conference->sound_prefix = switch_core_strdup(conference->pool, sound_prefix); + } + if (!switch_strlen_zero(enter_sound)) { conference->enter_sound = switch_core_strdup(conference->pool, enter_sound); } @@ -4381,6 +4413,14 @@ conference->locked_sound = switch_core_strdup(conference->pool, locked_sound); } + if (!switch_strlen_zero(is_locked_sound)) { + conference->is_locked_sound = switch_core_strdup(conference->pool, is_locked_sound); + } + + if (!switch_strlen_zero(is_unlocked_sound)) { + conference->is_unlocked_sound = switch_core_strdup(conference->pool, is_unlocked_sound); + } + if (!switch_strlen_zero(energy_level)) { conference->energy_level = atoi(energy_level); }
participants (1)
-
Freeswitch SVN