diff --git a/apps/app_speech_utils.c b/apps/app_speech_utils.c
index fa4a75a148..51975407bf 100644
--- a/apps/app_speech_utils.c
+++ b/apps/app_speech_utils.c
@@ -105,6 +105,9 @@
+
@@ -700,10 +703,12 @@ static int speech_streamfile(struct ast_channel *chan, const char *filename, con
enum {
SB_OPT_NOANSWER = (1 << 0),
+ SB_OPT_PARTIALRESULTS = (1 << 1),
};
AST_APP_OPTIONS(speech_background_options, BEGIN_OPTIONS
AST_APP_OPTION('n', SB_OPT_NOANSWER),
+ AST_APP_OPTION('p', SB_OPT_PARTIALRESULTS),
END_OPTIONS );
/*! \brief SpeechBackground(Sound File,Timeout) Dialplan Application */
@@ -933,7 +938,10 @@ static int speech_background(struct ast_channel *chan, const char *data)
}
}
- if (!ast_strlen_zero(dtmf)) {
+ if (ast_strlen_zero(dtmf) && speech->state == AST_SPEECH_STATE_READY && ast_test_flag(&options, SB_OPT_PARTIALRESULTS)) {
+ /* Copy to speech structure the results, even partial ones, if desired and available */
+ speech->results = ast_speech_results_get(speech);
+ } else if (!ast_strlen_zero(dtmf)) {
/* We sort of make a results entry */
speech->results = ast_calloc(1, sizeof(*speech->results));
if (speech->results != NULL) {