Add the 'n' option to SpeechBackground, which has the application not answer the
channel if it has not already been answered. (closes SPD-51) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@101082 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
4645221ac1
commit
22fae48e3c
6
CHANGES
6
CHANGES
|
@ -467,6 +467,8 @@ Miscellaneous New Modules
|
||||||
backend functionality.
|
backend functionality.
|
||||||
* Added a new module, res_config_ldap, which permits the use of an LDAP
|
* Added a new module, res_config_ldap, which permits the use of an LDAP
|
||||||
server for realtime data access.
|
server for realtime data access.
|
||||||
|
* Added support for writing and running your dialplan in lua using the pgx_lua
|
||||||
|
module. See configs/extensions.lua.sample for examples of how to do this.
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
-------------
|
-------------
|
||||||
|
@ -486,8 +488,6 @@ Miscellaneous
|
||||||
will now be available in the failed extension using the REASON dialplan variable.
|
will now be available in the failed extension using the REASON dialplan variable.
|
||||||
* Added support for reading the TOUCH_MONITOR_PREFIX channel variable.
|
* Added support for reading the TOUCH_MONITOR_PREFIX channel variable.
|
||||||
It allows you to configure a prefix for auto-monitor recordings.
|
It allows you to configure a prefix for auto-monitor recordings.
|
||||||
* Added support for writing and running your dialplan in lua. See
|
|
||||||
configs/extensions.lua.sample for examples of how to do this.
|
|
||||||
* A new extension pattern matching algorithm, based on a trie, is introduced
|
* A new extension pattern matching algorithm, based on a trie, is introduced
|
||||||
here, that could noticeably speed up mid-sized to large dialplans.
|
here, that could noticeably speed up mid-sized to large dialplans.
|
||||||
It is NOT used by default, as duplicating the behaviour of the old pattern
|
It is NOT used by default, as duplicating the behaviour of the old pattern
|
||||||
|
@ -502,3 +502,5 @@ Miscellaneous
|
||||||
* Added logging to 'make update' command. See update.log
|
* Added logging to 'make update' command. See update.log
|
||||||
* Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that
|
* Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that
|
||||||
do not come from the remote party.
|
do not come from the remote party.
|
||||||
|
* Added the 'n' option to the SpeechBackground application to tell it to not
|
||||||
|
answer the channel if it has not already been answered.
|
||||||
|
|
|
@ -56,15 +56,17 @@ static char *speechstart_descrip =
|
||||||
"fed to it. This has no arguments.\n";
|
"fed to it. This has no arguments.\n";
|
||||||
|
|
||||||
static char *speechbackground_descrip =
|
static char *speechbackground_descrip =
|
||||||
" SpeechBackground(Sound File,Timeout):\n"
|
" SpeechBackground(<Sound File>[,Timeout[,options]]):\n"
|
||||||
"This application plays a sound file and waits for the person to speak. Once they start speaking playback\n"
|
"This application plays a sound file and waits for the person to speak. Once they start speaking playback\n"
|
||||||
"of the file stops, and silence is heard. Once they stop talking the processing sound is played to indicate\n"
|
"of the file stops, and silence is heard. Once they stop talking the processing sound is played to indicate\n"
|
||||||
"the speech recognition engine is working. Once results are available the application returns and results \n"
|
"the speech recognition engine is working. Once results are available the application returns and results \n"
|
||||||
"(score and text) are available using dialplan functions.\n"
|
"(score and text) are available using dialplan functions.\n"
|
||||||
"The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)}\n"
|
" The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)}\n"
|
||||||
"and ${SPEECH_SCORE(1)}.\n"
|
"and ${SPEECH_SCORE(1)}.\n"
|
||||||
"The first argument is the sound file and the second is the timeout integer in seconds. Note the timeout will\n"
|
" The first argument is the sound file and the second is the timeout integer in seconds. Note the timeout will\n"
|
||||||
"only start once the sound file has stopped playing.\n";
|
"only start once the sound file has stopped playing. The third argument specifies options:\n"
|
||||||
|
" Valid Options:\n"
|
||||||
|
" n - Don't answer the channel if it has not already been answered.\n";
|
||||||
|
|
||||||
static char *speechdeactivategrammar_descrip =
|
static char *speechdeactivategrammar_descrip =
|
||||||
" SpeechDeactivateGrammar(Grammar Name):\n"
|
" SpeechDeactivateGrammar(Grammar Name):\n"
|
||||||
|
@ -487,6 +489,14 @@ static int speech_streamfile(struct ast_channel *chan, const char *filename, con
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SB_OPT_NOANSWER = (1 << 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
AST_APP_OPTIONS(speech_background_options, BEGIN_OPTIONS
|
||||||
|
AST_APP_OPTION('n', SB_OPT_NOANSWER),
|
||||||
|
END_OPTIONS );
|
||||||
|
|
||||||
/*! \brief SpeechBackground(Sound File,Timeout) Dialplan Application */
|
/*! \brief SpeechBackground(Sound File,Timeout) Dialplan Application */
|
||||||
static int speech_background(struct ast_channel *chan, void *data)
|
static int speech_background(struct ast_channel *chan, void *data)
|
||||||
{
|
{
|
||||||
|
@ -500,9 +510,11 @@ static int speech_background(struct ast_channel *chan, void *data)
|
||||||
struct ast_datastore *datastore = NULL;
|
struct ast_datastore *datastore = NULL;
|
||||||
char *parse, *filename_tmp = NULL, *filename = NULL, tmp[2] = "", dtmf_terminator = '#';
|
char *parse, *filename_tmp = NULL, *filename = NULL, tmp[2] = "", dtmf_terminator = '#';
|
||||||
const char *tmp2 = NULL;
|
const char *tmp2 = NULL;
|
||||||
|
struct ast_flags options = { 0 };
|
||||||
AST_DECLARE_APP_ARGS(args,
|
AST_DECLARE_APP_ARGS(args,
|
||||||
AST_APP_ARG(soundfile);
|
AST_APP_ARG(soundfile);
|
||||||
AST_APP_ARG(timeout);
|
AST_APP_ARG(timeout);
|
||||||
|
AST_APP_ARG(options);
|
||||||
);
|
);
|
||||||
|
|
||||||
parse = ast_strdupa(data);
|
parse = ast_strdupa(data);
|
||||||
|
@ -511,9 +523,16 @@ static int speech_background(struct ast_channel *chan, void *data)
|
||||||
if (speech == NULL)
|
if (speech == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(args.options)) {
|
||||||
|
char *options_buf = ast_strdupa(args.options);
|
||||||
|
ast_app_parse_options(speech_background_options, &options, NULL, options_buf);
|
||||||
|
}
|
||||||
|
|
||||||
/* If channel is not already answered, then answer it */
|
/* If channel is not already answered, then answer it */
|
||||||
if (chan->_state != AST_STATE_UP && ast_answer(chan))
|
if (chan->_state != AST_STATE_UP && !ast_test_flag(&options, SB_OPT_NOANSWER)
|
||||||
return -1;
|
&& ast_answer(chan)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Record old read format */
|
/* Record old read format */
|
||||||
oldreadformat = chan->readformat;
|
oldreadformat = chan->readformat;
|
||||||
|
|
Loading…
Reference in New Issue