#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"
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:
{
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;
}
}
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);
}
}
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);
}
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);
}
}
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);
}
}
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))) {