diff --git a/CHANGES b/CHANGES index 83728500eab6af2424b5b489ca3b82bac7403fd3..344f28f2309beea3f41410c374fee653faf02ef3 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,9 @@ AMI (Asterisk Manager Interface) that the request is against a known peer. It also issues a new event, 'SIPqualifypeerdone', once the qualify action has been completed. + * The PlayDTMF action now supports an optional 'Duration' parameter. This + specifies the duration of the digit to be played, in milliseconds. + * Added VoicemailRefresh action to allow an external entity to trigger mailbox updates when changes occur instead of requiring the use of pollmailboxes. diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c index e1e8ee92f0435a17e8da2bea1911dc8e351a8b3b..7db9a3f4b7e62feb76b8cb1851b72af7a1e143a6 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);