From b5eac70b554db561fedb352bdf02d72c4040c4bd Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 19 Mar 2008 15:34:43 +0000 Subject: [PATCH] update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7927 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_ivr_play_say.c | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index c4d940e7ac..65a2445ea9 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -682,6 +682,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess const char *prefix; const char *timer_name; const char *prebuf; + const char *alt = NULL; switch_zmalloc(abuf, FILE_STARTSAMPLES * sizeof(*abuf)); @@ -697,6 +698,49 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess goto end; } + if ((alt = strchr(file, ':'))) { + char *dup; + + if (!strncasecmp(file, "phrase:", 7)) { + char *arg; + char *lang = NULL; + alt = file + 7; + dup = switch_core_session_strdup(session, alt); + if ((arg = strchr(dup, ':'))) { + *arg++ = '\0'; + if ((lang = strchr(arg, ':'))) { + *lang++ = '\0'; + } + } + if (dup) { + return switch_ivr_phrase_macro(session, dup, arg, lang, args); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Args\n"); + return SWITCH_STATUS_FALSE; + } + } else if (!strncasecmp(file, "say:", 4)) { + char *engine = NULL, *voice = NULL, *text = NULL; + alt = file + 4; + dup = switch_core_session_strdup(session, alt); + engine = dup; + + if ((voice = strchr(engine, ':'))) { + *voice++ = '\0'; + if ((text = strchr(voice, ':'))) { + *text++ = '\0'; + } + } + if (engine && voice && text) { + return switch_ivr_speak_text(session, engine, voice, dup, args); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Args\n"); + return SWITCH_STATUS_FALSE; + } + } + + } + + if (!prefix) { prefix = SWITCH_GLOBAL_dirs.base_dir; }