diff options
Diffstat (limited to 'apps/app_senddtmf.c')
-rw-r--r-- | apps/app_senddtmf.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c index e1e8ee92f..7db9a3f4b 100644 --- a/apps/app_senddtmf.c +++ b/apps/app_senddtmf.c @@ -79,6 +79,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") <parameter name="Digit" required="true"> <para>The DTMF digit to play.</para> </parameter> + <parameter name="Duration" required="false"> + <para>The duration, in milliseconds, of the digit to be played.</para> + </parameter> </syntax> <description> <para>Plays a dtmf digit on the specified channel.</para> @@ -145,7 +148,9 @@ static int manager_play_dtmf(struct mansession *s, const struct message *m) { const char *channel = astman_get_header(m, "Channel"); const char *digit = astman_get_header(m, "Digit"); + const char *duration = astman_get_header(m, "Duration"); struct ast_channel *chan; + unsigned int duration_ms = 0; if (!(chan = ast_channel_get_by_name(channel))) { astman_send_error(s, m, "Channel not found"); @@ -157,8 +162,14 @@ static int manager_play_dtmf(struct mansession *s, const struct message *m) chan = ast_channel_unref(chan); return 0; } + + if (!ast_strlen_zero(duration) && (sscanf(duration, "%30u", &duration_ms) != 1)) { + astman_send_error(s, m, "Could not convert Duration parameter"); + chan = ast_channel_unref(chan); + return 0; + } - ast_senddigit(chan, *digit, 0); + ast_senddigit(chan, *digit, duration_ms); chan = ast_channel_unref(chan); |