From 4e0f9cc89646c22d98804bbb3f9020b92cdb5819 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 26 Sep 2008 16:04:16 +0000 Subject: [PATCH] add patch from MODAPP-132 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9655 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 1 + .../applications/mod_dptools/mod_dptools.c | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 488a64865f..be681e82bd 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -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" diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 2cba22d22f..8a0eb799ab 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -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))) {