]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add patch from MODAPP-132
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 26 Sep 2008 16:04:16 +0000 (16:04 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 26 Sep 2008 16:04:16 +0000 (16:04 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9655 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_types.h
src/mod/applications/mod_dptools/mod_dptools.c

index 488a64865fc88d0b873362d57ffdc11217fefc47..be681e82bd81ecb07031585b5b3bfd73d15b3c43 100644 (file)
@@ -127,6 +127,7 @@ SWITCH_BEGIN_EXTERN_C
 #define SWITCH_BRIDGE_UUID_VARIABLE "bridge_uuid"
 #define SWITCH_CONTINUE_ON_FAILURE_VARIABLE "continue_on_fail"
 #define SWITCH_PLAYBACK_TERMINATORS_VARIABLE "playback_terminators"
+#define SWITCH_PLAYBACK_TERMINATOR_USED "playback_terminator_used"
 #define SWITCH_CACHE_SPEECH_HANDLES_VARIABLE "cache_speech_handles"
 #define SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME "__cache_speech_handles_obj__"
 #define SWITCH_BYPASS_MEDIA_VARIABLE "bypass_media"
index 2cba22d22f107296344f44ea1a9d7d4ac9d3e54d..8a0eb799aba953a6980e0b211ef17e00c6bc5541 100644 (file)
@@ -1274,6 +1274,8 @@ static switch_status_t bridge_on_dtmf(switch_core_session_t *session, void *inpu
 
 static switch_status_t on_dtmf(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, unsigned int buflen)
 {
+       char sbuf[3];
+
        switch (itype) {
        case SWITCH_INPUT_TYPE_DTMF:
                {
@@ -1292,6 +1294,8 @@ static switch_status_t on_dtmf(switch_core_session_t *session, void *input, swit
 
                        for (p = terminators; p && *p; p++) {
                                if (*p == dtmf->digit) {
+                                       switch_snprintf(sbuf, sizeof(sbuf), "%c", *p);
+                                       switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, sbuf );
                                        return SWITCH_STATUS_BREAK;
                                }
                        }
@@ -1318,6 +1322,9 @@ SWITCH_STANDARD_APP(sleep_function)
                args.buf = buf;
                args.buflen = sizeof(buf);
                
+               switch_channel_t *channel = switch_core_session_get_channel(session);
+               switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
+
                switch_ivr_sleep(session, ms, &args);
        }
 }
@@ -1389,6 +1396,9 @@ SWITCH_STANDARD_APP(speak_function)
        args.input_callback = on_dtmf;
        args.buf = buf;
        args.buflen = sizeof(buf);
+
+       switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
+
        switch_ivr_speak_text(session, engine, voice, text, &args);
 }
 
@@ -1613,6 +1623,10 @@ SWITCH_STANDARD_APP(playback_function)
        switch_channel_pre_answer(switch_core_session_get_channel(session));
 
        args.input_callback = on_dtmf;
+
+       switch_channel_t *channel = switch_core_session_get_channel(session);
+       switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
+
        switch_ivr_play_file(session, NULL, data, &args);
 }
 
@@ -1640,6 +1654,10 @@ SWITCH_STANDARD_APP(gentones_function)
        }
 
        args.input_callback = on_dtmf;
+
+       switch_channel_t *channel = switch_core_session_get_channel(session);
+       switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
+
        switch_ivr_gentones(session, tone_script, loops, &args);
 }
 
@@ -1729,6 +1747,9 @@ SWITCH_STANDARD_APP(record_function)
        }
 
        args.input_callback = on_dtmf;
+
+       switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
+
        status = switch_ivr_record_file(session, &fh, path, &args, limit);
 
        if (!switch_channel_ready(channel) || (status != SWITCH_STATUS_SUCCESS && !SWITCH_STATUS_IS_BREAK(status))) {