[Freeswitch-trunk] [commit] r13694 - in freeswitch/trunk: libs/speex patches src src/include src/mod/applications/mod_limit src/mod/applications/mod_voicemail src/mod/asr_tts/mod_pocketsphinx
FreeSWITCH SVN
anthm at freeswitch.org
Mon Jun 8 14:52:51 PDT 2009
Author: anthm
Date: Mon Jun 8 16:52:50 2009
New Revision: 13694
Log:
patch
Added:
freeswitch/trunk/patches/asr.diff
Modified:
freeswitch/trunk/libs/speex/config.h.in
freeswitch/trunk/src/include/switch_core.h
freeswitch/trunk/src/include/switch_ivr.h
freeswitch/trunk/src/include/switch_module_interfaces.h
freeswitch/trunk/src/mod/applications/mod_limit/Makefile
freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c
freeswitch/trunk/src/switch_core_asr.c
freeswitch/trunk/src/switch_core_speech.c
freeswitch/trunk/src/switch_ivr_async.c
Modified: freeswitch/trunk/libs/speex/config.h.in
==============================================================================
--- freeswitch/trunk/libs/speex/config.h.in (original)
+++ freeswitch/trunk/libs/speex/config.h.in Mon Jun 8 16:52:50 2009
@@ -96,13 +96,13 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
-/* The size of a `int', as computed by sizeof. */
+/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT
-/* The size of a `long', as computed by sizeof. */
+/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG
-/* The size of a `short', as computed by sizeof. */
+/* The size of `short', as computed by sizeof. */
#undef SIZEOF_SHORT
/* Version extra */
Added: freeswitch/trunk/patches/asr.diff
==============================================================================
--- (empty file)
+++ freeswitch/trunk/patches/asr.diff Mon Jun 8 16:52:50 2009
@@ -0,0 +1,562 @@
+Index: src/switch_ivr_async.c
+===================================================================
+--- src/switch_ivr_async.c (revision 13692)
++++ src/switch_ivr_async.c (working copy)
+@@ -2027,14 +2027,14 @@
+ return SWITCH_STATUS_FALSE;
+ }
+
+-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *path)
++SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *name)
+ {
+ switch_channel_t *channel = switch_core_session_get_channel(session);
+ switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE;
+ struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY);
+
+ if (sth) {
+- if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) {
++ if (switch_core_asr_load_grammar(sth->ah, grammar, name) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n");
+ switch_core_asr_close(sth->ah, &flags);
+ switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+@@ -2045,14 +2045,14 @@
+ return SWITCH_STATUS_FALSE;
+ }
+
+-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *grammar)
++SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name)
+ {
+ switch_channel_t *channel = switch_core_session_get_channel(session);
+ switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE;
+ struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY);
+
+ if (sth) {
+- if (switch_core_asr_unload_grammar(sth->ah, grammar) != SWITCH_STATUS_SUCCESS) {
++ if (switch_core_asr_unload_grammar(sth->ah, name) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error unloading Grammar\n");
+ switch_core_asr_close(sth->ah, &flags);
+ switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+@@ -2065,7 +2065,7 @@
+
+ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session,
+ const char *mod_name,
+- const char *grammar, const char *path, const char *dest, switch_asr_handle_t *ah)
++ const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah)
+ {
+ switch_channel_t *channel = switch_core_session_get_channel(session);
+ switch_status_t status;
+@@ -2085,7 +2085,7 @@
+ }
+
+ if (sth) {
+- if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) {
++ if (switch_core_asr_load_grammar(sth->ah, grammar, name) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n");
+ switch_core_asr_close(sth->ah, &flags);
+ return SWITCH_STATUS_FALSE;
+@@ -2100,7 +2100,7 @@
+ read_impl.actual_samples_per_second, dest, &flags,
+ switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
+
+- if (switch_core_asr_load_grammar(ah, grammar, path) != SWITCH_STATUS_SUCCESS) {
++ if (switch_core_asr_load_grammar(ah, grammar, name) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n");
+ switch_core_asr_close(ah, &flags);
+ switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+Index: src/switch_core_asr.c
+===================================================================
+--- src/switch_core_asr.c (revision 13692)
++++ src/switch_core_asr.c (working copy)
+@@ -26,6 +26,7 @@
+ * Anthony Minessale II <anthm at freeswitch.org>
+ * Michael Jerris <mike at jerris.com>
+ * Paul D. Tinsley <pdt at jackhammer.org>
++ * Christopher M. Rienzo <chris at rienzo.net>
+ *
+ *
+ * switch_core_asr.c -- Main Core Library (Speech Detection Interface)
+@@ -79,30 +80,74 @@
+ return ah->asr_interface->asr_open(ah, codec, rate, dest, flags);
+ }
+
+-SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path)
++SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name)
+ {
+- char *epath = NULL;
+- switch_status_t status;
++ switch_status_t status = SWITCH_STATUS_SUCCESS;
++ char *param_string = NULL;
++ char *data = NULL;
++ char *lgrammar = NULL;
+
+ switch_assert(ah != NULL);
+
+- if (!switch_is_file_path(path)) {
+- epath = switch_mprintf("%s%s%s", SWITCH_GLOBAL_dirs.grammar_dir, SWITCH_PATH_SEPARATOR, path);
+- path = epath;
++ if (switch_strlen_zero(grammar)) {
++ status = SWITCH_STATUS_FALSE;
++ goto done;
+ }
+
+- status = ah->asr_interface->asr_load_grammar(ah, grammar, path);
+- switch_safe_free(epath);
++ /* Set ASR parameters from params in the grammar string
++ * Params are defined as follows {name1=val1,name2=val2,name3=val3}grammar text
++ */
++ lgrammar = strdup(grammar);
++ data = lgrammar;
+
++ /* strip leading spaces */
++ while (data && *data == ' ') {
++ data++;
++ }
++ if (switch_strlen_zero(data)) {
++ status = SWITCH_STATUS_FALSE;
++ goto done;
++ }
++
++ /* extract params */
++ if (*data == '{') {
++ param_string = data + 1;
++ data = switch_find_end_paren(data, '{', '}');
++ if (switch_strlen_zero(data)) {
++ status = SWITCH_STATUS_FALSE;
++ goto done;
++ } else {
++ *data = '\0';
++ data++;
++ }
++ }
++
++ /* set ASR params */
++ if (!switch_strlen_zero(param_string)) {
++ char *param[256] = { 0 };
++ switch_separate_string(param_string, ',', param, (sizeof(param) / sizeof(param[0])));
++ for (int i = 0; param[i]; ++i) {
++ char *param_pair[2] = { 0 };
++ if(switch_separate_string(param[i], '=', param_pair, (sizeof(param_pair) / sizeof(param_pair[0]))) == 2) {
++ switch_core_asr_text_param(ah, param_pair[0], param_pair[1]);
++ }
++ }
++ }
++
++ status = ah->asr_interface->asr_load_grammar(ah, data, name);
++
++ done:
++
++ switch_safe_free(lgrammar);
+ return status;
+ }
+
+-SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar)
++SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name)
+ {
+ switch_status_t status;
+
+ switch_assert(ah != NULL);
+- status = ah->asr_interface->asr_unload_grammar(ah, grammar);
++ status = ah->asr_interface->asr_unload_grammar(ah, name);
+
+ return status;
+ }
+@@ -158,6 +203,46 @@
+ return ah->asr_interface->asr_get_results(ah, xmlstr, flags);
+ }
+
++SWITCH_DECLARE(switch_status_t) switch_core_asr_start_input_timers(switch_asr_handle_t *ah)
++{
++ switch_status_t status = SWITCH_STATUS_SUCCESS;
++
++ switch_assert(ah != NULL);
++
++ if (ah->asr_interface->asr_start_input_timers) {
++ status = ah->asr_interface->asr_start_input_timers(ah);
++ }
++
++ return status;
++}
++
++SWITCH_DECLARE(void) switch_core_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val)
++{
++ switch_assert(ah != NULL);
++
++ if (ah->asr_interface->asr_text_param) {
++ ah->asr_interface->asr_text_param(ah, param, val);
++ }
++}
++
++SWITCH_DECLARE(void) switch_core_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val)
++{
++ switch_assert(ah != NULL);
++
++ if (ah->asr_interface->asr_numeric_param) {
++ ah->asr_interface->asr_numeric_param(ah, param, val);
++ }
++}
++
++SWITCH_DECLARE(void) switch_core_asr_float_param(switch_asr_handle_t *ah, char *param, double val)
++{
++ switch_assert(ah != NULL);
++
++ if (ah->asr_interface->asr_float_param) {
++ ah->asr_interface->asr_float_param(ah, param, val);
++ }
++}
++
+ /* For Emacs:
+ * Local Variables:
+ * mode:c
+Index: src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c
+===================================================================
+--- src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c (revision 13692)
++++ src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c (working copy)
+@@ -111,7 +111,7 @@
+ }
+
+ /*! function to load a grammar to the asr interface */
+-static switch_status_t pocketsphinx_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path)
++static switch_status_t pocketsphinx_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name)
+ {
+ char *jsgf, *dic, *model, *rate = NULL;
+ pocketsphinx_t *ps = (pocketsphinx_t *) ah->private_info;
+@@ -199,7 +199,7 @@
+ }
+
+ /*! function to unload a grammar to the asr interface */
+-static switch_status_t pocketsphinx_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar)
++static switch_status_t pocketsphinx_asr_unload_grammar(switch_asr_handle_t *ah, const char *name)
+ {
+ return SWITCH_STATUS_SUCCESS;
+ }
+@@ -506,6 +506,10 @@
+ asr_interface->asr_pause = pocketsphinx_asr_pause;
+ asr_interface->asr_check_results = pocketsphinx_asr_check_results;
+ asr_interface->asr_get_results = pocketsphinx_asr_get_results;
++ asr_interface->asr_start_input_timers = NULL;
++ asr_interface->asr_text_param = NULL;
++ asr_interface->asr_numeric_param = NULL;
++ asr_interface->asr_float_param = NULL;
+
+ err_set_logfp(NULL);
+
+Index: src/mod/applications/mod_voicemail/Makefile
+===================================================================
+--- src/mod/applications/mod_voicemail/Makefile (revision 13692)
++++ src/mod/applications/mod_voicemail/Makefile (working copy)
+@@ -1,3 +1,4 @@
+ BASE=../../../..
+ include $(BASE)/build/modmake.rules
+ LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;`
++LOCAL_LIBADD += -liodbc
+Index: src/mod/applications/mod_limit/Makefile
+===================================================================
+--- src/mod/applications/mod_limit/Makefile (revision 13692)
++++ src/mod/applications/mod_limit/Makefile (working copy)
+@@ -1,3 +1,4 @@
+ BASE=../../../..
+ include $(BASE)/build/modmake.rules
+ LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;`
++LOCAL_LIBADD += -liodbc
+Index: src/switch_core_speech.c
+===================================================================
+--- src/switch_core_speech.c (revision 13692)
++++ src/switch_core_speech.c (working copy)
+@@ -22,10 +22,11 @@
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+- *
++ *
+ * Anthony Minessale II <anthm at freeswitch.org>
+ * Michael Jerris <mike at jerris.com>
+ * Paul D. Tinsley <pdt at jackhammer.org>
++ * Christopher M. Rienzo <chris at rienzo.net>
+ *
+ *
+ * switch_core_speech.c -- Main Core Library (speech functions)
+@@ -92,9 +93,64 @@
+
+ SWITCH_DECLARE(switch_status_t) switch_core_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags)
+ {
++ switch_status_t status = SWITCH_STATUS_SUCCESS;
++ char *param_string = NULL;
++ char *data = NULL;
++ char *ltext = NULL;
++
+ switch_assert(sh != NULL);
+
+- return sh->speech_interface->speech_feed_tts(sh, text, flags);
++ if (switch_strlen_zero(text)) {
++ status = SWITCH_STATUS_FALSE;
++ goto done;
++ }
++
++ /* Set TTS parameters from params in the text string
++ * Params are defined as follows {name1=val1,name2=val2,name3=val3}text to speak
++ */
++ ltext = strdup(text);
++ data = ltext;
++
++ /* strip leading spaces */
++ while (data && *data == ' ') {
++ data++;
++ }
++ if (switch_strlen_zero(data)) {
++ status = SWITCH_STATUS_FALSE;
++ goto done;
++ }
++
++ /* extract params */
++ if (*data == '{') {
++ param_string = data + 1;
++ data = switch_find_end_paren(data, '{', '}');
++ if (switch_strlen_zero(data)) {
++ status = SWITCH_STATUS_FALSE;
++ goto done;
++ } else {
++ *data = '\0';
++ data++;
++ }
++ }
++
++ /* set TTS params */
++ if (!switch_strlen_zero(param_string)) {
++ char *param[256] = { 0 };
++ switch_separate_string(param_string, ',', param, (sizeof(param) / sizeof(param[0])));
++ for (int i = 0; param[i]; ++i) {
++ char *param_pair[2] = { 0 };
++ if(switch_separate_string(param[i], '=', param_pair, (sizeof(param_pair) / sizeof(param_pair[0]))) == 2) {
++ switch_core_speech_text_param_tts(sh, param_pair[0], param_pair[1]);
++ }
++ }
++ }
++
++ status = sh->speech_interface->speech_feed_tts(sh, data, flags);
++
++ done:
++
++ switch_safe_free(ltext);
++ return status;
+ }
+
+ SWITCH_DECLARE(void) switch_core_speech_flush_tts(switch_speech_handle_t *sh)
+Index: src/include/switch_module_interfaces.h
+===================================================================
+--- src/include/switch_module_interfaces.h (revision 13692)
++++ src/include/switch_module_interfaces.h (working copy)
+@@ -342,9 +342,9 @@
+ /*! function to open the asr interface */
+ switch_status_t (*asr_open) (switch_asr_handle_t *ah, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags);
+ /*! function to load a grammar to the asr interface */
+- switch_status_t (*asr_load_grammar) (switch_asr_handle_t *ah, const char *grammar, const char *path);
++ switch_status_t (*asr_load_grammar) (switch_asr_handle_t *ah, const char *grammar, const char *name);
+ /*! function to unload a grammar to the asr interface */
+- switch_status_t (*asr_unload_grammar) (switch_asr_handle_t *ah, const char *grammar);
++ switch_status_t (*asr_unload_grammar) (switch_asr_handle_t *ah, const char *name);
+ /*! function to close the asr interface */
+ switch_status_t (*asr_close) (switch_asr_handle_t *ah, switch_asr_flag_t *flags);
+ /*! function to feed audio to the ASR */
+@@ -357,6 +357,11 @@
+ switch_status_t (*asr_check_results) (switch_asr_handle_t *ah, switch_asr_flag_t *flags);
+ /*! function to read results from the ASR */
+ switch_status_t (*asr_get_results) (switch_asr_handle_t *ah, char **xmlstr, switch_asr_flag_t *flags);
++ /*! function to start ASR input timers */
++ switch_status_t (*asr_start_input_timers) (switch_asr_handle_t *ah);
++ void (*asr_text_param) (switch_asr_handle_t *ah, char *param, const char *val);
++ void (*asr_numeric_param) (switch_asr_handle_t *ah, char *param, int val);
++ void (*asr_float_param) (switch_asr_handle_t *ah, char *param, double val);
+ switch_thread_rwlock_t *rwlock;
+ int refs;
+ switch_mutex_t *reflock;
+@@ -409,7 +414,7 @@
+ };
+
+
+-/*! an abstract representation of a asr/tts speech interface. */
++/*! an abstract representation of a tts speech interface. */
+ struct switch_speech_handle {
+ /*! the interface of the module that implemented the current speech interface */
+ switch_speech_interface_t *speech_interface;
+Index: src/include/switch_ivr.h
+===================================================================
+--- src/include/switch_ivr.h (revision 13692)
++++ src/include/switch_ivr.h (working copy)
+@@ -148,15 +148,15 @@
+ \brief Engage background Speech detection on a session
+ \param session the session to attach
+ \param mod_name the module name of the ASR library
+- \param grammar the grammar name
+- \param path the path to the grammar file
++ \param grammar the grammar text, URI, or local file name
++ \param name the grammar name
+ \param dest the destination address
+ \param ah an ASR handle to use (NULL to create one)
+ \return SWITCH_STATUS_SUCCESS if all is well
+ */
+ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session,
+ const char *mod_name,
+- const char *grammar, const char *path, const char *dest, switch_asr_handle_t *ah);
++ const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah);
+
+ /*!
+ \brief Stop background Speech detection on a session
+@@ -182,19 +182,19 @@
+ /*!
+ \brief Load a grammar on a background speech detection handle
+ \param session The session to change the grammar on
+- \param grammar the grammar name
+- \param path the grammar path
++ \param grammar the grammar text, URI, or local file name
++ \param name the grammar name
+ \return SWITCH_STATUS_SUCCESS if all is well
+ */
+-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *path);
++SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *name);
+
+ /*!
+ \brief Unload a grammar on a background speech detection handle
+ \param session The session to change the grammar on
+- \param grammar the grammar name
++ \param name the grammar name
+ \return SWITCH_STATUS_SUCCESS if all is well
+ */
+-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *grammar);
++SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name);
+
+ /*!
+ \brief Record a session to disk
+Index: src/include/switch_core.h
+===================================================================
+--- src/include/switch_core.h (revision 13692)
++++ src/include/switch_core.h (working copy)
+@@ -1623,19 +1623,19 @@
+ /*!
+ \brief Load a grammar to an asr handle
+ \param ah the handle to load to
+- \param grammar the name of the grammar
+- \param path the path to the grammaar file
++ \param grammar the grammar text, file path, or URI
++ \param name the grammar name
+ \return SWITCH_STATUS_SUCCESS
+ */
+-SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path);
++SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name);
+
+ /*!
+ \brief Unload a grammar from an asr handle
+ \param ah the handle to unload the grammar from
+- \param grammar the grammar to unload
++ \param name the name of the grammar to unload
+ \return SWITCH_STATUS_SUCCESS
+ */
+-SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar);
++SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name);
+
+ /*!
+ \brief Pause detection on an asr handle
+@@ -1651,6 +1651,37 @@
+ */
+ SWITCH_DECLARE(switch_status_t) switch_core_asr_resume(switch_asr_handle_t *ah);
+
++/*!
++ \brief Start input timers on an asr handle
++ \param ah the handle to start timers on
++ \return SWITCH_STATUS_SUCCESS
++*/
++SWITCH_DECLARE(switch_status_t) switch_core_asr_start_input_timers(switch_asr_handle_t *ah);
++
++/*!
++ \brief Set a text parameter on an asr handle
++ \param sh the asr handle
++ \param param the parameter
++ \param val the value
++*/
++SWITCH_DECLARE(void) switch_core_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val);
++
++/*!
++ \brief Set a numeric parameter on an asr handle
++ \param sh the asr handle
++ \param param the parameter
++ \param val the value
++*/
++SWITCH_DECLARE(void) switch_core_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val);
++
++/*!
++ \brief Set a float parameter on an asr handle
++ \param sh the asr handle
++ \param param the parameter
++ \param val the value
++*/
++SWITCH_DECLARE(void) switch_core_asr_float_param(switch_asr_handle_t *ah, char *param, double val);
++
+ ///\}
+
+
+@@ -1659,7 +1690,7 @@
+ ///\{
+ /*!
+ \brief Open a directory handle
+- \param dh a direcotry handle to use
++ \param dh a directory handle to use
+ \param module_name the directory module to use
+ \param source the source of the db (ip, hostname, path etc)
+ \param dsn the username or designation of the lookup
+@@ -1672,7 +1703,7 @@
+
+ /*!
+ \brief Query a directory handle
+- \param dh a direcotry handle to use
++ \param dh a directory handle to use
+ \param base the base to query against
+ \param query a string of filters or query data
+ \return SWITCH_STATUS_SUCCESS if the query is successful
+@@ -1681,23 +1712,23 @@
+
+ /*!
+ \brief Obtain the next record in a lookup
+- \param dh a direcotry handle to use
++ \param dh a directory handle to use
+ \return SWITCH_STATUS_SUCCESS if another record exists
+ */
+ SWITCH_DECLARE(switch_status_t) switch_core_directory_next(switch_directory_handle_t *dh);
+
+ /*!
+ \brief Obtain the next name/value pair in the current record
+- \param dh a direcotry handle to use
++ \param dh a directory handle to use
+ \param var a pointer to pointer of the name to fill in
+- \param val a pointer to poinbter of the value to fill in
++ \param val a pointer to pointer of the value to fill in
+ \return SWITCH_STATUS_SUCCESS if an item exists
+ */
+ SWITCH_DECLARE(switch_status_t) switch_core_directory_next_pair(switch_directory_handle_t *dh, char **var, char **val);
+
+ /*!
+ \brief Close an open directory handle
+- \param dh a direcotry handle to close
++ \param dh a directory handle to close
+ \return SWITCH_STATUS_SUCCESS if handle was closed
+ */
+ SWITCH_DECLARE(switch_status_t) switch_core_directory_close(switch_directory_handle_t *dh);
+Index: libs/speex/config.h.in
+===================================================================
+--- libs/speex/config.h.in (revision 13692)
++++ libs/speex/config.h.in (working copy)
+@@ -96,13 +96,13 @@
+ /* Define to the version of this package. */
+ #undef PACKAGE_VERSION
+
+-/* The size of a `int', as computed by sizeof. */
++/* The size of `int', as computed by sizeof. */
+ #undef SIZEOF_INT
+
+-/* The size of a `long', as computed by sizeof. */
++/* The size of `long', as computed by sizeof. */
+ #undef SIZEOF_LONG
+
+-/* The size of a `short', as computed by sizeof. */
++/* The size of `short', as computed by sizeof. */
+ #undef SIZEOF_SHORT
+
+ /* Version extra */
Modified: freeswitch/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core.h (original)
+++ freeswitch/trunk/src/include/switch_core.h Mon Jun 8 16:52:50 2009
@@ -1623,19 +1623,19 @@
/*!
\brief Load a grammar to an asr handle
\param ah the handle to load to
- \param grammar the name of the grammar
- \param path the path to the grammaar file
+ \param grammar the grammar text, file path, or URI
+ \param name the grammar name
\return SWITCH_STATUS_SUCCESS
*/
-SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path);
+SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name);
/*!
\brief Unload a grammar from an asr handle
\param ah the handle to unload the grammar from
- \param grammar the grammar to unload
+ \param name the name of the grammar to unload
\return SWITCH_STATUS_SUCCESS
*/
-SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar);
+SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name);
/*!
\brief Pause detection on an asr handle
@@ -1651,6 +1651,37 @@
*/
SWITCH_DECLARE(switch_status_t) switch_core_asr_resume(switch_asr_handle_t *ah);
+/*!
+ \brief Start input timers on an asr handle
+ \param ah the handle to start timers on
+ \return SWITCH_STATUS_SUCCESS
+*/
+SWITCH_DECLARE(switch_status_t) switch_core_asr_start_input_timers(switch_asr_handle_t *ah);
+
+/*!
+ \brief Set a text parameter on an asr handle
+ \param sh the asr handle
+ \param param the parameter
+ \param val the value
+*/
+SWITCH_DECLARE(void) switch_core_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val);
+
+/*!
+ \brief Set a numeric parameter on an asr handle
+ \param sh the asr handle
+ \param param the parameter
+ \param val the value
+*/
+SWITCH_DECLARE(void) switch_core_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val);
+
+/*!
+ \brief Set a float parameter on an asr handle
+ \param sh the asr handle
+ \param param the parameter
+ \param val the value
+*/
+SWITCH_DECLARE(void) switch_core_asr_float_param(switch_asr_handle_t *ah, char *param, double val);
+
///\}
@@ -1659,7 +1690,7 @@
///\{
/*!
\brief Open a directory handle
- \param dh a direcotry handle to use
+ \param dh a directory handle to use
\param module_name the directory module to use
\param source the source of the db (ip, hostname, path etc)
\param dsn the username or designation of the lookup
@@ -1672,7 +1703,7 @@
/*!
\brief Query a directory handle
- \param dh a direcotry handle to use
+ \param dh a directory handle to use
\param base the base to query against
\param query a string of filters or query data
\return SWITCH_STATUS_SUCCESS if the query is successful
@@ -1681,23 +1712,23 @@
/*!
\brief Obtain the next record in a lookup
- \param dh a direcotry handle to use
+ \param dh a directory handle to use
\return SWITCH_STATUS_SUCCESS if another record exists
*/
SWITCH_DECLARE(switch_status_t) switch_core_directory_next(switch_directory_handle_t *dh);
/*!
\brief Obtain the next name/value pair in the current record
- \param dh a direcotry handle to use
+ \param dh a directory handle to use
\param var a pointer to pointer of the name to fill in
- \param val a pointer to poinbter of the value to fill in
+ \param val a pointer to pointer of the value to fill in
\return SWITCH_STATUS_SUCCESS if an item exists
*/
SWITCH_DECLARE(switch_status_t) switch_core_directory_next_pair(switch_directory_handle_t *dh, char **var, char **val);
/*!
\brief Close an open directory handle
- \param dh a direcotry handle to close
+ \param dh a directory handle to close
\return SWITCH_STATUS_SUCCESS if handle was closed
*/
SWITCH_DECLARE(switch_status_t) switch_core_directory_close(switch_directory_handle_t *dh);
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Mon Jun 8 16:52:50 2009
@@ -148,15 +148,15 @@
\brief Engage background Speech detection on a session
\param session the session to attach
\param mod_name the module name of the ASR library
- \param grammar the grammar name
- \param path the path to the grammar file
+ \param grammar the grammar text, URI, or local file name
+ \param name the grammar name
\param dest the destination address
\param ah an ASR handle to use (NULL to create one)
\return SWITCH_STATUS_SUCCESS if all is well
*/
SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session,
const char *mod_name,
- const char *grammar, const char *path, const char *dest, switch_asr_handle_t *ah);
+ const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah);
/*!
\brief Stop background Speech detection on a session
@@ -182,19 +182,19 @@
/*!
\brief Load a grammar on a background speech detection handle
\param session The session to change the grammar on
- \param grammar the grammar name
- \param path the grammar path
+ \param grammar the grammar text, URI, or local file name
+ \param name the grammar name
\return SWITCH_STATUS_SUCCESS if all is well
*/
-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *path);
+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *name);
/*!
\brief Unload a grammar on a background speech detection handle
\param session The session to change the grammar on
- \param grammar the grammar name
+ \param name the grammar name
\return SWITCH_STATUS_SUCCESS if all is well
*/
-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *grammar);
+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name);
/*!
\brief Record a session to disk
Modified: freeswitch/trunk/src/include/switch_module_interfaces.h
==============================================================================
--- freeswitch/trunk/src/include/switch_module_interfaces.h (original)
+++ freeswitch/trunk/src/include/switch_module_interfaces.h Mon Jun 8 16:52:50 2009
@@ -342,9 +342,9 @@
/*! function to open the asr interface */
switch_status_t (*asr_open) (switch_asr_handle_t *ah, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags);
/*! function to load a grammar to the asr interface */
- switch_status_t (*asr_load_grammar) (switch_asr_handle_t *ah, const char *grammar, const char *path);
+ switch_status_t (*asr_load_grammar) (switch_asr_handle_t *ah, const char *grammar, const char *name);
/*! function to unload a grammar to the asr interface */
- switch_status_t (*asr_unload_grammar) (switch_asr_handle_t *ah, const char *grammar);
+ switch_status_t (*asr_unload_grammar) (switch_asr_handle_t *ah, const char *name);
/*! function to close the asr interface */
switch_status_t (*asr_close) (switch_asr_handle_t *ah, switch_asr_flag_t *flags);
/*! function to feed audio to the ASR */
@@ -357,6 +357,11 @@
switch_status_t (*asr_check_results) (switch_asr_handle_t *ah, switch_asr_flag_t *flags);
/*! function to read results from the ASR */
switch_status_t (*asr_get_results) (switch_asr_handle_t *ah, char **xmlstr, switch_asr_flag_t *flags);
+ /*! function to start ASR input timers */
+ switch_status_t (*asr_start_input_timers) (switch_asr_handle_t *ah);
+ void (*asr_text_param) (switch_asr_handle_t *ah, char *param, const char *val);
+ void (*asr_numeric_param) (switch_asr_handle_t *ah, char *param, int val);
+ void (*asr_float_param) (switch_asr_handle_t *ah, char *param, double val);
switch_thread_rwlock_t *rwlock;
int refs;
switch_mutex_t *reflock;
@@ -409,7 +414,7 @@
};
-/*! an abstract representation of a asr/tts speech interface. */
+/*! an abstract representation of a tts speech interface. */
struct switch_speech_handle {
/*! the interface of the module that implemented the current speech interface */
switch_speech_interface_t *speech_interface;
Modified: freeswitch/trunk/src/mod/applications/mod_limit/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/Makefile (original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/Makefile Mon Jun 8 16:52:50 2009
@@ -1,3 +1,4 @@
BASE=../../../..
include $(BASE)/build/modmake.rules
LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;`
+LOCAL_LIBADD += -liodbc
Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile (original)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile Mon Jun 8 16:52:50 2009
@@ -1,3 +1,4 @@
BASE=../../../..
include $(BASE)/build/modmake.rules
LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;`
+LOCAL_LIBADD += -liodbc
Modified: freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c
==============================================================================
--- freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c (original)
+++ freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c Mon Jun 8 16:52:50 2009
@@ -111,7 +111,7 @@
}
/*! function to load a grammar to the asr interface */
-static switch_status_t pocketsphinx_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path)
+static switch_status_t pocketsphinx_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name)
{
char *jsgf, *dic, *model, *rate = NULL;
pocketsphinx_t *ps = (pocketsphinx_t *) ah->private_info;
@@ -199,7 +199,7 @@
}
/*! function to unload a grammar to the asr interface */
-static switch_status_t pocketsphinx_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar)
+static switch_status_t pocketsphinx_asr_unload_grammar(switch_asr_handle_t *ah, const char *name)
{
return SWITCH_STATUS_SUCCESS;
}
@@ -506,6 +506,10 @@
asr_interface->asr_pause = pocketsphinx_asr_pause;
asr_interface->asr_check_results = pocketsphinx_asr_check_results;
asr_interface->asr_get_results = pocketsphinx_asr_get_results;
+ asr_interface->asr_start_input_timers = NULL;
+ asr_interface->asr_text_param = NULL;
+ asr_interface->asr_numeric_param = NULL;
+ asr_interface->asr_float_param = NULL;
err_set_logfp(NULL);
Modified: freeswitch/trunk/src/switch_core_asr.c
==============================================================================
--- freeswitch/trunk/src/switch_core_asr.c (original)
+++ freeswitch/trunk/src/switch_core_asr.c Mon Jun 8 16:52:50 2009
@@ -26,6 +26,7 @@
* Anthony Minessale II <anthm at freeswitch.org>
* Michael Jerris <mike at jerris.com>
* Paul D. Tinsley <pdt at jackhammer.org>
+ * Christopher M. Rienzo <chris at rienzo.net>
*
*
* switch_core_asr.c -- Main Core Library (Speech Detection Interface)
@@ -79,30 +80,74 @@
return ah->asr_interface->asr_open(ah, codec, rate, dest, flags);
}
-SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path)
+SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name)
{
- char *epath = NULL;
- switch_status_t status;
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+ char *param_string = NULL;
+ char *data = NULL;
+ char *lgrammar = NULL;
switch_assert(ah != NULL);
- if (!switch_is_file_path(path)) {
- epath = switch_mprintf("%s%s%s", SWITCH_GLOBAL_dirs.grammar_dir, SWITCH_PATH_SEPARATOR, path);
- path = epath;
+ if (switch_strlen_zero(grammar)) {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ }
+
+ /* Set ASR parameters from params in the grammar string
+ * Params are defined as follows {name1=val1,name2=val2,name3=val3}grammar text
+ */
+ lgrammar = strdup(grammar);
+ data = lgrammar;
+
+ /* strip leading spaces */
+ while (data && *data == ' ') {
+ data++;
+ }
+ if (switch_strlen_zero(data)) {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ }
+
+ /* extract params */
+ if (*data == '{') {
+ param_string = data + 1;
+ data = switch_find_end_paren(data, '{', '}');
+ if (switch_strlen_zero(data)) {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ } else {
+ *data = '\0';
+ data++;
+ }
+ }
+
+ /* set ASR params */
+ if (!switch_strlen_zero(param_string)) {
+ char *param[256] = { 0 };
+ switch_separate_string(param_string, ',', param, (sizeof(param) / sizeof(param[0])));
+ for (int i = 0; param[i]; ++i) {
+ char *param_pair[2] = { 0 };
+ if(switch_separate_string(param[i], '=', param_pair, (sizeof(param_pair) / sizeof(param_pair[0]))) == 2) {
+ switch_core_asr_text_param(ah, param_pair[0], param_pair[1]);
+ }
+ }
}
- status = ah->asr_interface->asr_load_grammar(ah, grammar, path);
- switch_safe_free(epath);
+ status = ah->asr_interface->asr_load_grammar(ah, data, name);
+ done:
+
+ switch_safe_free(lgrammar);
return status;
}
-SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar)
+SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name)
{
switch_status_t status;
switch_assert(ah != NULL);
- status = ah->asr_interface->asr_unload_grammar(ah, grammar);
+ status = ah->asr_interface->asr_unload_grammar(ah, name);
return status;
}
@@ -158,6 +203,46 @@
return ah->asr_interface->asr_get_results(ah, xmlstr, flags);
}
+SWITCH_DECLARE(switch_status_t) switch_core_asr_start_input_timers(switch_asr_handle_t *ah)
+{
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+ switch_assert(ah != NULL);
+
+ if (ah->asr_interface->asr_start_input_timers) {
+ status = ah->asr_interface->asr_start_input_timers(ah);
+ }
+
+ return status;
+}
+
+SWITCH_DECLARE(void) switch_core_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val)
+{
+ switch_assert(ah != NULL);
+
+ if (ah->asr_interface->asr_text_param) {
+ ah->asr_interface->asr_text_param(ah, param, val);
+ }
+}
+
+SWITCH_DECLARE(void) switch_core_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val)
+{
+ switch_assert(ah != NULL);
+
+ if (ah->asr_interface->asr_numeric_param) {
+ ah->asr_interface->asr_numeric_param(ah, param, val);
+ }
+}
+
+SWITCH_DECLARE(void) switch_core_asr_float_param(switch_asr_handle_t *ah, char *param, double val)
+{
+ switch_assert(ah != NULL);
+
+ if (ah->asr_interface->asr_float_param) {
+ ah->asr_interface->asr_float_param(ah, param, val);
+ }
+}
+
/* For Emacs:
* Local Variables:
* mode:c
Modified: freeswitch/trunk/src/switch_core_speech.c
==============================================================================
--- freeswitch/trunk/src/switch_core_speech.c (original)
+++ freeswitch/trunk/src/switch_core_speech.c Mon Jun 8 16:52:50 2009
@@ -22,10 +22,11 @@
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
- *
+ *
* Anthony Minessale II <anthm at freeswitch.org>
* Michael Jerris <mike at jerris.com>
* Paul D. Tinsley <pdt at jackhammer.org>
+ * Christopher M. Rienzo <chris at rienzo.net>
*
*
* switch_core_speech.c -- Main Core Library (speech functions)
@@ -92,9 +93,64 @@
SWITCH_DECLARE(switch_status_t) switch_core_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags)
{
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+ char *param_string = NULL;
+ char *data = NULL;
+ char *ltext = NULL;
+
switch_assert(sh != NULL);
- return sh->speech_interface->speech_feed_tts(sh, text, flags);
+ if (switch_strlen_zero(text)) {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ }
+
+ /* Set TTS parameters from params in the text string
+ * Params are defined as follows {name1=val1,name2=val2,name3=val3}text to speak
+ */
+ ltext = strdup(text);
+ data = ltext;
+
+ /* strip leading spaces */
+ while (data && *data == ' ') {
+ data++;
+ }
+ if (switch_strlen_zero(data)) {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ }
+
+ /* extract params */
+ if (*data == '{') {
+ param_string = data + 1;
+ data = switch_find_end_paren(data, '{', '}');
+ if (switch_strlen_zero(data)) {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ } else {
+ *data = '\0';
+ data++;
+ }
+ }
+
+ /* set TTS params */
+ if (!switch_strlen_zero(param_string)) {
+ char *param[256] = { 0 };
+ switch_separate_string(param_string, ',', param, (sizeof(param) / sizeof(param[0])));
+ for (int i = 0; param[i]; ++i) {
+ char *param_pair[2] = { 0 };
+ if(switch_separate_string(param[i], '=', param_pair, (sizeof(param_pair) / sizeof(param_pair[0]))) == 2) {
+ switch_core_speech_text_param_tts(sh, param_pair[0], param_pair[1]);
+ }
+ }
+ }
+
+ status = sh->speech_interface->speech_feed_tts(sh, data, flags);
+
+ done:
+
+ switch_safe_free(ltext);
+ return status;
}
SWITCH_DECLARE(void) switch_core_speech_flush_tts(switch_speech_handle_t *sh)
Modified: freeswitch/trunk/src/switch_ivr_async.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_async.c (original)
+++ freeswitch/trunk/src/switch_ivr_async.c Mon Jun 8 16:52:50 2009
@@ -2027,14 +2027,14 @@
return SWITCH_STATUS_FALSE;
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *path)
+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *name)
{
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE;
struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY);
if (sth) {
- if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) {
+ if (switch_core_asr_load_grammar(sth->ah, grammar, name) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n");
switch_core_asr_close(sth->ah, &flags);
switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
@@ -2045,14 +2045,14 @@
return SWITCH_STATUS_FALSE;
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *grammar)
+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name)
{
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE;
struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY);
if (sth) {
- if (switch_core_asr_unload_grammar(sth->ah, grammar) != SWITCH_STATUS_SUCCESS) {
+ if (switch_core_asr_unload_grammar(sth->ah, name) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error unloading Grammar\n");
switch_core_asr_close(sth->ah, &flags);
switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
@@ -2065,7 +2065,7 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session,
const char *mod_name,
- const char *grammar, const char *path, const char *dest, switch_asr_handle_t *ah)
+ const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah)
{
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_status_t status;
@@ -2085,7 +2085,7 @@
}
if (sth) {
- if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) {
+ if (switch_core_asr_load_grammar(sth->ah, grammar, name) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n");
switch_core_asr_close(sth->ah, &flags);
return SWITCH_STATUS_FALSE;
@@ -2100,7 +2100,7 @@
read_impl.actual_samples_per_second, dest, &flags,
switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
- if (switch_core_asr_load_grammar(ah, grammar, path) != SWITCH_STATUS_SUCCESS) {
+ if (switch_core_asr_load_grammar(ah, grammar, name) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n");
switch_core_asr_close(ah, &flags);
switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
More information about the Freeswitch-trunk
mailing list