]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Allow loading grammars without sending RECOGNIZE with start-recognize=false parameter
authorLuke Dashjr <luke@openmethods.com>
Sat, 21 Aug 2010 22:44:42 +0000 (17:44 -0500)
committerLuke Dashjr <luke@openmethods.com>
Mon, 23 Aug 2010 01:20:26 +0000 (20:20 -0500)
src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c

index 41c0ccdaa466ac4b42304622bfb547c45e2d3f38..a27ddf01a22e2a524d987fcf45a2adf0cfb4a38b 100644 (file)
@@ -26,6 +26,7 @@
  *
  * Brian West <brian@freeswitch.org>
  * Christopher M. Rienzo <chris@rienzo.net>
+ * Luke Dashjr <luke@openmethods.com> (OpenMethods, LLC)
  *
  * mod_unimrcp.c -- UniMRCP module (MRCP client)
  *
@@ -2451,6 +2452,8 @@ static switch_status_t recog_channel_set_params(speech_channel_t *schannel, mrcp
                        if (id) {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) \"%s\": \"%s\"\n", schannel->name, param_name, param_val);
                                recog_channel_set_header(schannel, id->id, param_val, msg, recog_hdr);
+                       } else if (!strcasecmp(param_name, "start-recognize")) {
+                               // This parameter is used internally only, not in MRCP headers
                        } else {
                                /* this is probably a vendor-specific MRCP param */
                                apt_str_t apt_param_name = { 0 };
@@ -2782,6 +2785,7 @@ static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const cha
        speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
        const char *grammar_data = NULL;
        char *grammar_file_data = NULL;
+       char *start_recognize;
        switch_file_t *grammar_file = NULL;
        switch_size_t grammar_file_size = 0, to_read = 0;
        grammar_type_t type = GRAMMAR_TYPE_UNKNOWN;
@@ -2886,7 +2890,9 @@ static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const cha
                goto done;
        }
 
-       status = recog_channel_start(schannel, name);
+       start_recognize = (char *) switch_core_hash_find(schannel->params, "start-recognize");
+       if (zstr(start_recognize) || strcasecmp(start_recognize, "false"))
+               status = recog_channel_start(schannel, name);
 
   done: