Skip to content
Snippets Groups Projects
Commit 5c11d7ad authored by Mike Bradeen's avatar Mike Bradeen Committed by George Joseph
Browse files

app_read: Add an option to return terminator on empty digits.

Adds 'e' option to allow Read() to return the terminator as the
dialed digits in the case where only the terminator is entered.

ie; if "#" is entered, return "#" if the 'e' option is set and ""
if it is not.

ASTERISK-30411

Change-Id: I49f3221824330a193a20c660f99da0f1fc2cbbc5
parent 5b0e3444
No related branches found
No related tags found
3 merge requests!138Merge branch asterisk-20.3.0 into devel properly,!123Merge asterisk '20.3.0' into devel,!118Draft: manager: AOC-S support for AOCMessage
......@@ -85,6 +85,13 @@
and you will need to rely on duration and max digits
for ending input.</para>
</option>
<option name="e">
<para>to read the terminator as the digit string if the
only digit read is the terminator. This is for cases
where the terminator is a valid digit, but only by itself.
ie; <literal>1234</literal> and <literal>#</literal> are
valid, but <literal>1234#</literal> is not.</para>
</option>
</optionlist>
</parameter>
<parameter name="attempts">
......@@ -125,6 +132,7 @@ enum read_option_flags {
OPT_INDICATION = (1 << 1),
OPT_NOANSWER = (1 << 2),
OPT_TERMINATOR = (1 << 3),
OPT_KEEP_TERMINATOR = (1 << 4),
};
enum {
......@@ -138,6 +146,7 @@ AST_APP_OPTIONS(read_app_options, {
AST_APP_OPTION('i', OPT_INDICATION),
AST_APP_OPTION('n', OPT_NOANSWER),
AST_APP_OPTION_ARG('t', OPT_TERMINATOR, OPT_ARG_TERMINATOR),
AST_APP_OPTION('e', OPT_KEEP_TERMINATOR),
});
static char *app = "Read";
......@@ -261,12 +270,20 @@ static int read_exec(struct ast_channel *chan, const char *data)
}
} else {
res = ast_app_getdata_terminator(chan, arglist.filename, tmp, maxdigits, to, terminator);
if (res == AST_GETDATA_COMPLETE || res == AST_GETDATA_EMPTY_END_TERMINATED)
if (res == AST_GETDATA_COMPLETE) {
status = "OK";
} else if (res == AST_GETDATA_EMPTY_END_TERMINATED) {
if (ast_test_flag(&flags, OPT_KEEP_TERMINATOR)) {
/* if the option is set to do so, read the
returned string as the terminator string */
ast_copy_string(tmp, terminator, sizeof(tmp));
}
status = "OK";
else if (res == AST_GETDATA_TIMEOUT)
} else if (res == AST_GETDATA_TIMEOUT) {
status = "TIMEOUT";
else if (res == AST_GETDATA_INTERRUPTED)
} else if (res == AST_GETDATA_INTERRUPTED) {
status = "INTERRUPTED";
}
}
if (res > -1) {
pbx_builtin_setvar_helper(chan, arglist.variable, tmp);
......
Subject: app_read
A new option 'e' has been added to allow Read() to return the
terminator as the dialed digits in the case where only the terminator
is entered.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment