提交 4e0f9cc8 authored 作者: Anthony Minessale's avatar Anthony Minessale

add patch from MODAPP-132

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9655 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 7f7d0e93
...@@ -127,6 +127,7 @@ SWITCH_BEGIN_EXTERN_C ...@@ -127,6 +127,7 @@ SWITCH_BEGIN_EXTERN_C
#define SWITCH_BRIDGE_UUID_VARIABLE "bridge_uuid" #define SWITCH_BRIDGE_UUID_VARIABLE "bridge_uuid"
#define SWITCH_CONTINUE_ON_FAILURE_VARIABLE "continue_on_fail" #define SWITCH_CONTINUE_ON_FAILURE_VARIABLE "continue_on_fail"
#define SWITCH_PLAYBACK_TERMINATORS_VARIABLE "playback_terminators" #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_VARIABLE "cache_speech_handles"
#define SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME "__cache_speech_handles_obj__" #define SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME "__cache_speech_handles_obj__"
#define SWITCH_BYPASS_MEDIA_VARIABLE "bypass_media" #define SWITCH_BYPASS_MEDIA_VARIABLE "bypass_media"
......
...@@ -1274,6 +1274,8 @@ static switch_status_t bridge_on_dtmf(switch_core_session_t *session, void *inpu ...@@ -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) 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) { switch (itype) {
case SWITCH_INPUT_TYPE_DTMF: case SWITCH_INPUT_TYPE_DTMF:
{ {
...@@ -1292,6 +1294,8 @@ static switch_status_t on_dtmf(switch_core_session_t *session, void *input, swit ...@@ -1292,6 +1294,8 @@ static switch_status_t on_dtmf(switch_core_session_t *session, void *input, swit
for (p = terminators; p && *p; p++) { for (p = terminators; p && *p; p++) {
if (*p == dtmf->digit) { 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; return SWITCH_STATUS_BREAK;
} }
} }
...@@ -1318,6 +1322,9 @@ SWITCH_STANDARD_APP(sleep_function) ...@@ -1318,6 +1322,9 @@ SWITCH_STANDARD_APP(sleep_function)
args.buf = buf; args.buf = buf;
args.buflen = sizeof(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); switch_ivr_sleep(session, ms, &args);
} }
} }
...@@ -1389,6 +1396,9 @@ SWITCH_STANDARD_APP(speak_function) ...@@ -1389,6 +1396,9 @@ SWITCH_STANDARD_APP(speak_function)
args.input_callback = on_dtmf; args.input_callback = on_dtmf;
args.buf = buf; args.buf = buf;
args.buflen = sizeof(buf); args.buflen = sizeof(buf);
switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
switch_ivr_speak_text(session, engine, voice, text, &args); switch_ivr_speak_text(session, engine, voice, text, &args);
} }
...@@ -1613,6 +1623,10 @@ SWITCH_STANDARD_APP(playback_function) ...@@ -1613,6 +1623,10 @@ SWITCH_STANDARD_APP(playback_function)
switch_channel_pre_answer(switch_core_session_get_channel(session)); switch_channel_pre_answer(switch_core_session_get_channel(session));
args.input_callback = on_dtmf; 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); switch_ivr_play_file(session, NULL, data, &args);
} }
...@@ -1640,6 +1654,10 @@ SWITCH_STANDARD_APP(gentones_function) ...@@ -1640,6 +1654,10 @@ SWITCH_STANDARD_APP(gentones_function)
} }
args.input_callback = on_dtmf; 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); switch_ivr_gentones(session, tone_script, loops, &args);
} }
...@@ -1729,6 +1747,9 @@ SWITCH_STANDARD_APP(record_function) ...@@ -1729,6 +1747,9 @@ SWITCH_STANDARD_APP(record_function)
} }
args.input_callback = on_dtmf; args.input_callback = on_dtmf;
switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
status = switch_ivr_record_file(session, &fh, path, &args, limit); status = switch_ivr_record_file(session, &fh, path, &args, limit);
if (!switch_channel_ready(channel) || (status != SWITCH_STATUS_SUCCESS && !SWITCH_STATUS_IS_BREAK(status))) { if (!switch_channel_ready(channel) || (status != SWITCH_STATUS_SUCCESS && !SWITCH_STATUS_IS_BREAK(status))) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论