summaryrefslogtreecommitdiff
path: root/apps/app_senddtmf.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/app_senddtmf.c')
-rw-r--r--apps/app_senddtmf.c13
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);