diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index f4a00addb2..72068249e4 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -198,6 +198,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_cor */ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name); +SWITCH_DECLARE(void) switch_ivr_set_param_detect_speech(switch_core_session_t *session, const char *name, const char *val); + /*! \brief Record a session to disk \param session the session to record diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 48f76c8eb7..945d951dc2 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -114,6 +114,8 @@ SWITCH_STANDARD_APP(detect_speech_function) switch_ivr_resume_detect_speech(session); } else if (!strcasecmp(argv[0], "stop")) { switch_ivr_stop_detect_speech(session); + } else if (!strcasecmp(argv[0], "param")) { + switch_ivr_set_param_detect_speech(session, argv[1], argv[2]); } else if (argc >= 3) { switch_ivr_detect_speech(session, argv[0], argv[1], argv[2], argv[3], NULL); } diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 0ce2fc4af6..2456a841a0 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -2582,6 +2582,15 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_cor return SWITCH_STATUS_FALSE; } +SWITCH_DECLARE(void) switch_ivr_set_param_detect_speech(switch_core_session_t *session, const char *name, const char *val) +{ + struct speech_thread_handle *sth = switch_channel_get_private(switch_core_session_get_channel(session), SWITCH_SPEECH_KEY); + + if (sth->ah && name && val) { + switch_core_asr_text_param(sth->ah, (char *) name, val); + } +} + 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);