FS-6083 --resolve SSML will pass through when renderer is specified

This commit is contained in:
Chris Rienzo 2014-01-07 14:07:49 -05:00
parent 5b2799284b
commit 7e71d85550
1 changed files with 17 additions and 2 deletions

View File

@ -47,6 +47,8 @@ struct output_component {
switch_bool_t start_paused; switch_bool_t start_paused;
/** true if stopped */ /** true if stopped */
int stop; int stop;
/** output renderer to use */
const char *renderer;
}; };
#define OUTPUT_FINISH "finish", RAYO_OUTPUT_COMPLETE_NS #define OUTPUT_FINISH "finish", RAYO_OUTPUT_COMPLETE_NS
@ -71,6 +73,7 @@ static struct rayo_component *create_output_component(struct rayo_actor *actor,
output_component->repeat_times = iks_find_int_attrib(output, "repeat-times"); output_component->repeat_times = iks_find_int_attrib(output, "repeat-times");
output_component->max_time = iks_find_int_attrib(output, "max-time"); output_component->max_time = iks_find_int_attrib(output, "max-time");
output_component->start_paused = iks_find_bool_attrib(output, "start-paused"); output_component->start_paused = iks_find_bool_attrib(output, "start-paused");
output_component->renderer = iks_find_attrib(output, "renderer");
return (struct rayo_component *)output_component; return (struct rayo_component *)output_component;
} }
@ -402,7 +405,13 @@ static switch_status_t next_file(switch_file_handle_t *handle)
if (speak) { if (speak) {
/* <speak> is child node */ /* <speak> is child node */
char *ssml_str = iks_string(NULL, speak); char *ssml_str = iks_string(NULL, speak);
context->ssml = switch_mprintf("ssml://%s", ssml_str); if (zstr(output->renderer)) {
/* FS must parse the SSML */
context->ssml = switch_mprintf("ssml://%s", ssml_str);
} else {
/* renderer will parse the SSML */
context->ssml = switch_mprintf("tts://%s||%s", output->renderer, ssml_str);
}
iks_free(ssml_str); iks_free(ssml_str);
} else if (iks_has_children(context->cur_doc)) { } else if (iks_has_children(context->cur_doc)) {
/* check if <speak> is in CDATA */ /* check if <speak> is in CDATA */
@ -415,7 +424,13 @@ static switch_status_t next_file(switch_file_handle_t *handle)
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Missing <document> CDATA\n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Missing <document> CDATA\n");
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
context->ssml = switch_mprintf("ssml://%s", ssml_str); if (zstr(output->renderer)) {
/* FS must parse the SSML */
context->ssml = switch_mprintf("ssml://%s", ssml_str);
} else {
/* renderer will parse the SSML */
context->ssml = switch_mprintf("tts://%s||%s", output->renderer, ssml_str);
}
} else { } else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Missing <speak>\n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Missing <speak>\n");
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;