app_readexten: new option 'p' to stop reading on '#' key

This patch adds the 'p' option.
The extension entered will be considered complete when a # is entered.

Change-Id: If77c40c9c8b525885730821e768f5dea71cf04c1
17.0
Alexei Gradinari 6 years ago
parent 9b0a21c402
commit 408210bd4c

@ -63,6 +63,10 @@
<option name="n"> <option name="n">
<para>Read digits even if the channel is not answered.</para> <para>Read digits even if the channel is not answered.</para>
</option> </option>
<option name="p">
<para>The extension entered will be considered complete when a <literal>#</literal>
is entered.</para>
</option>
</optionlist> </optionlist>
</parameter> </parameter>
<parameter name="timeout"> <parameter name="timeout">
@ -100,12 +104,14 @@ enum readexten_option_flags {
OPT_SKIP = (1 << 0), OPT_SKIP = (1 << 0),
OPT_INDICATION = (1 << 1), OPT_INDICATION = (1 << 1),
OPT_NOANSWER = (1 << 2), OPT_NOANSWER = (1 << 2),
OPT_POUND_TO_END = (1 << 3),
}; };
AST_APP_OPTIONS(readexten_app_options, { AST_APP_OPTIONS(readexten_app_options, {
AST_APP_OPTION('s', OPT_SKIP), AST_APP_OPTION('s', OPT_SKIP),
AST_APP_OPTION('i', OPT_INDICATION), AST_APP_OPTION('i', OPT_INDICATION),
AST_APP_OPTION('n', OPT_NOANSWER), AST_APP_OPTION('n', OPT_NOANSWER),
AST_APP_OPTION('p', OPT_POUND_TO_END),
}); });
static char *app = "ReadExten"; static char *app = "ReadExten";
@ -226,6 +232,11 @@ static int readexten_exec(struct ast_channel *chan, const char *data)
break; break;
} }
if (ast_test_flag(&flags, OPT_POUND_TO_END) && res == '#') {
exten[x] = 0;
break;
}
exten[x] = res; exten[x] = res;
if (!ast_matchmore_extension(chan, arglist.context, exten, 1 /* priority */, if (!ast_matchmore_extension(chan, arglist.context, exten, 1 /* priority */,
S_COR(ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, NULL))) { S_COR(ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, NULL))) {

@ -0,0 +1,3 @@
Subject: ReadExten
Add 'p' option to stop reading extension if user presses '#' key.
Loading…
Cancel
Save