FS-11265 #resolve add detectSpeech and playAndDetectSpeech
This commit is contained in:
parent
3f51f3b4e4
commit
ae4e48fa15
|
@ -316,6 +316,10 @@ SWITCH_DECLARE(bool) email(char *to, char *from, char *headers = NULL, char *bod
|
||||||
SWITCH_DECLARE(char *) read(int min_digits, int max_digits,
|
SWITCH_DECLARE(char *) read(int min_digits, int max_digits,
|
||||||
const char *prompt_audio_file, int timeout, const char *valid_terminators, int digit_timeout = 0);
|
const char *prompt_audio_file, int timeout, const char *valid_terminators, int digit_timeout = 0);
|
||||||
|
|
||||||
|
|
||||||
|
SWITCH_DECLARE(void) detectSpeech(char *arg0, char *arg1 = NULL, char *arg2 = NULL, char *arg3 = NULL);
|
||||||
|
|
||||||
|
|
||||||
/** \brief Play a file into channel and collect dtmfs
|
/** \brief Play a file into channel and collect dtmfs
|
||||||
*
|
*
|
||||||
* See API docs in switch_ivr.h: switch_play_and_get_digits(..)
|
* See API docs in switch_ivr.h: switch_play_and_get_digits(..)
|
||||||
|
@ -331,6 +335,14 @@ SWITCH_DECLARE(bool) email(char *to, char *from, char *headers = NULL, char *bod
|
||||||
char *digits_regex, const char *var_name = NULL, int digit_timeout = 0,
|
char *digits_regex, const char *var_name = NULL, int digit_timeout = 0,
|
||||||
const char *transfer_on_failure = NULL);
|
const char *transfer_on_failure = NULL);
|
||||||
|
|
||||||
|
|
||||||
|
/** \brief Play a file and detect speech
|
||||||
|
* See API docs switch_ivr_play_and_detect_speech(...)
|
||||||
|
*/
|
||||||
|
|
||||||
|
SWITCH_DECLARE(char *) playAndDetectSpeech(char *file, char *engine, char *grammar);
|
||||||
|
|
||||||
|
|
||||||
/** \brief Play a file that resides on disk into the channel
|
/** \brief Play a file that resides on disk into the channel
|
||||||
*
|
*
|
||||||
* \param file - the path to the .wav/.mp3 to be played
|
* \param file - the path to the .wav/.mp3 to be played
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
%newobject CoreSession;
|
%newobject CoreSession;
|
||||||
%newobject Event;
|
%newobject Event;
|
||||||
%newobject Stream;
|
%newobject Stream;
|
||||||
|
%newobject API::execute;
|
||||||
|
%newobject API::executeString;
|
||||||
|
%newobject CoreSession::playAndDetectSpeech;
|
||||||
|
|
||||||
|
|
||||||
// I thought we were using swig because it's easier than the alternatives :-)
|
// I thought we were using swig because it's easier than the alternatives :-)
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
%newobject Dbh;
|
%newobject Dbh;
|
||||||
%newobject API::execute;
|
%newobject API::execute;
|
||||||
%newobject API::executeString;
|
%newobject API::executeString;
|
||||||
|
%newobject CoreSession::playAndDetectSpeech;
|
||||||
|
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%apply int *OUTPUT { int *len };
|
%apply int *OUTPUT { int *len };
|
||||||
|
|
|
@ -128,6 +128,10 @@ class CoreSession {
|
||||||
int max_digits,
|
int max_digits,
|
||||||
int max_tries,
|
int max_tries,
|
||||||
int timeout, char *terminators, char *audio_files, char *bad_input_audio_files, char *dtmf_buf, char *digits_regex);
|
int timeout, char *terminators, char *audio_files, char *bad_input_audio_files, char *dtmf_buf, char *digits_regex);
|
||||||
|
|
||||||
|
int playAndDetectSpeech(char *file, char *engine, char *grammar);
|
||||||
|
void detectSpeech(char *arg0, char * = NULL, char *arg2 = NULL, char *arg3 = NULL);
|
||||||
|
|
||||||
int streamFile(char *file, int starting_sample_count = 0);
|
int streamFile(char *file, int starting_sample_count = 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,7 @@ char * SWIG_csharp_string_callback(const char * str) {
|
||||||
%newobject Stream;
|
%newobject Stream;
|
||||||
%newobject API::execute;
|
%newobject API::execute;
|
||||||
%newobject API::executeString;
|
%newobject API::executeString;
|
||||||
|
%newobject CoreSession::playAndDetectSpeech;
|
||||||
|
|
||||||
// Allow bitwise compare on flag fields
|
// Allow bitwise compare on flag fields
|
||||||
%typemap(csclassmodifiers) session_flag_t "[System.Flags] public enum"
|
%typemap(csclassmodifiers) session_flag_t "[System.Flags] public enum"
|
||||||
|
|
|
@ -45,6 +45,9 @@ typedef unsigned long in_addr_t;
|
||||||
%newobject CoreSession;
|
%newobject CoreSession;
|
||||||
%newobject Event;
|
%newobject Event;
|
||||||
%newobject Stream;
|
%newobject Stream;
|
||||||
|
%newobject API::execute;
|
||||||
|
%newobject API::executeString;
|
||||||
|
%newobject CoreSession::playAndDetectSpeech;
|
||||||
|
|
||||||
#define SWITCH_DECLARE(type) type
|
#define SWITCH_DECLARE(type) type
|
||||||
#define SWITCH_DECLARE_NONSTD(type) type
|
#define SWITCH_DECLARE_NONSTD(type) type
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
%newobject Stream;
|
%newobject Stream;
|
||||||
%newobject API::execute;
|
%newobject API::execute;
|
||||||
%newobject API::executeString;
|
%newobject API::executeString;
|
||||||
|
%newobject CoreSession::playAndDetectSpeech;
|
||||||
|
|
||||||
/** insert the following includes into generated code so it compiles */
|
/** insert the following includes into generated code so it compiles */
|
||||||
%{
|
%{
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
%newobject CoreSession;
|
%newobject CoreSession;
|
||||||
%newobject Event;
|
%newobject Event;
|
||||||
%newobject Stream;
|
%newobject Stream;
|
||||||
|
%newobject API::execute;
|
||||||
|
%newobject API::executeString;
|
||||||
|
%newobject CoreSession::playAndDetectSpeech;
|
||||||
|
|
||||||
/** insert the following includes into generated code so it compiles */
|
/** insert the following includes into generated code so it compiles */
|
||||||
%{
|
%{
|
||||||
|
|
|
@ -984,6 +984,71 @@ SWITCH_DECLARE(char *) CoreSession::playAndGetDigits(int min_digits,
|
||||||
return dtmf_buf;
|
return dtmf_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SWITCH_DECLARE(void) CoreSession::detectSpeech(char *arg0, char *arg1, char *arg2, char *arg3)
|
||||||
|
{
|
||||||
|
this_check_void();
|
||||||
|
sanity_check_noreturn;
|
||||||
|
|
||||||
|
begin_allow_threads();
|
||||||
|
|
||||||
|
if (!arg0) return;
|
||||||
|
|
||||||
|
if (!strcasecmp(arg0, "grammar") && arg1 && arg2) {
|
||||||
|
switch_ivr_detect_speech_load_grammar(session, arg1, arg2);
|
||||||
|
} else if (!strcasecmp(arg0, "nogrammar") && arg1) {
|
||||||
|
switch_ivr_detect_speech_unload_grammar(session, arg1);
|
||||||
|
} else if (!strcasecmp(arg0, "grammaron") && arg1) {
|
||||||
|
switch_ivr_detect_speech_enable_grammar(session, arg1);
|
||||||
|
} else if (!strcasecmp(arg0, "grammaroff") && arg1) {
|
||||||
|
switch_ivr_detect_speech_disable_grammar(session, arg1);
|
||||||
|
} else if (!strcasecmp(arg0, "grammarsalloff")) {
|
||||||
|
switch_ivr_detect_speech_disable_all_grammars(session);
|
||||||
|
} else if (!strcasecmp(arg0, "init") && arg1 && arg2) {
|
||||||
|
switch_ivr_detect_speech_init(session, arg1, arg2, NULL);
|
||||||
|
} else if (!strcasecmp(arg0, "pause")) {
|
||||||
|
switch_ivr_pause_detect_speech(session);
|
||||||
|
} else if (!strcasecmp(arg0, "resume")) {
|
||||||
|
switch_ivr_resume_detect_speech(session);
|
||||||
|
} else if (!strcasecmp(arg0, "stop")) {
|
||||||
|
switch_ivr_stop_detect_speech(session);
|
||||||
|
} else if (!strcasecmp(arg0, "param") && arg1 && arg2) {
|
||||||
|
switch_ivr_set_param_detect_speech(session, arg1, arg2);
|
||||||
|
} else if (!strcasecmp(arg0, "start-input-timers")) {
|
||||||
|
switch_ivr_detect_speech_start_input_timers(session);
|
||||||
|
} else if (!strcasecmp(arg0, "start_input_timers")) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "start_input_timers is deprecated, please use start-input-timers instead!\n");
|
||||||
|
switch_ivr_detect_speech_start_input_timers(session);
|
||||||
|
} else if (arg1 && arg2 && arg3) {
|
||||||
|
switch_ivr_detect_speech(session, arg0, arg1, arg2, arg3, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
end_allow_threads();
|
||||||
|
}
|
||||||
|
|
||||||
|
SWITCH_DECLARE(char *) CoreSession::playAndDetectSpeech(char *file, char *engine, char *grammar)
|
||||||
|
{
|
||||||
|
sanity_check((char *)"");
|
||||||
|
this_check((char *)"");
|
||||||
|
begin_allow_threads();
|
||||||
|
|
||||||
|
char *result = NULL;
|
||||||
|
|
||||||
|
switch_status_t status = switch_ivr_play_and_detect_speech(session, file, engine, grammar, &result, 0, NULL);
|
||||||
|
if (status == SWITCH_STATUS_SUCCESS) {
|
||||||
|
// good
|
||||||
|
} else if (status == SWITCH_STATUS_GENERR) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "GRAMMAR ERROR\n");
|
||||||
|
} else if (status == SWITCH_STATUS_NOT_INITALIZED) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "ASR INIT ERROR\n");
|
||||||
|
} else {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "ERROR\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
end_allow_threads();
|
||||||
|
|
||||||
|
return result; // remeber to free me
|
||||||
|
}
|
||||||
|
|
||||||
SWITCH_DECLARE(void) CoreSession::say(const char *tosay, const char *module_name, const char *say_type, const char *say_method, const char *say_gender)
|
SWITCH_DECLARE(void) CoreSession::say(const char *tosay, const char *module_name, const char *say_type, const char *say_method, const char *say_gender)
|
||||||
{
|
{
|
||||||
this_check_void();
|
this_check_void();
|
||||||
|
|
Loading…
Reference in New Issue