]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[core] support partial speech events
authorSeven Du <dujinfang@gmail.com>
Fri, 11 Oct 2019 07:32:09 +0000 (15:32 +0800)
committerAndrey Volk <andywolk@gmail.com>
Mon, 30 Dec 2019 22:14:48 +0000 (02:14 +0400)
src/switch_ivr_async.c

index bb629e9af2cc28e3dd2862ee4b55f47b63635389..ee23ccd79cc422b87d6595ffab3ea301b7fbdc73 100644 (file)
@@ -4673,9 +4673,9 @@ static void *SWITCH_THREAD_FUNC speech_thread(switch_thread_t *thread, void *obj
 
                        status = switch_core_asr_get_results(sth->ah, &xmlstr, &flags);
 
-                       if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) {
+                       if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK && status != SWITCH_STATUS_MORE_DATA) {
                                goto done;
-                       } else if (status == SWITCH_STATUS_SUCCESS) {
+                       } else {
                                /* Try to fetch extra information for this result, the return value doesn't really matter here - it's just optional data. */
                                switch_core_asr_get_result_headers(sth->ah, &headers, &flags);
                        }
@@ -4732,6 +4732,14 @@ static void *SWITCH_THREAD_FUNC speech_thread(switch_thread_t *thread, void *obj
                                                switch_event_merge(event, headers);
                                        }
 
+                                       switch_event_add_body(event, "%s", xmlstr);
+                               } else if (status == SWITCH_STATUS_MORE_DATA) {
+                                       switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Speech-Type", "detected-partial-speech");
+
+                                       if (headers) {
+                                               switch_event_merge(event, headers);
+                                       }
+
                                        switch_event_add_body(event, "%s", xmlstr);
                                } else {
                                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Speech-Type", "begin-speaking");