diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c
index c119d8c477..ed548094db 100644
--- a/apps/app_senddtmf.c
+++ b/apps/app_senddtmf.c
@@ -97,6 +97,23 @@
Plays a dtmf digit on the specified channel.
+
+
+ Send a hook flash on a specific channel.
+
+
+
+
+ Channel name to send hook flash to.
+
+
+ Emulate receiving a hook flash on this channel instead of sending it out.
+
+
+
+ Sends a hook flash on the specified channel.
+
+
***/
enum read_option_flags {
@@ -218,12 +235,41 @@ static int manager_play_dtmf(struct mansession *s, const struct message *m)
return 0;
}
+static int manager_send_flash(struct mansession *s, const struct message *m)
+{
+ const char *channel = astman_get_header(m, "Channel");
+ const char *receive_s = astman_get_header(m, "Receive");
+ struct ast_channel *chan;
+
+ if (!(chan = ast_channel_get_by_name(channel))) {
+ astman_send_error(s, m, "Channel not found");
+ return 0;
+ }
+
+ if (ast_true(receive_s)) {
+ struct ast_frame f = { AST_FRAME_CONTROL, };
+ f.subclass.integer = AST_CONTROL_FLASH;
+ ast_queue_frame(chan, &f);
+ } else {
+ struct ast_frame f = { AST_FRAME_CONTROL, };
+ f.subclass.integer = AST_CONTROL_FLASH;
+ ast_channel_lock(chan);
+ ast_write(chan, &f);
+ ast_channel_unlock(chan);
+ }
+
+ chan = ast_channel_unref(chan);
+ astman_send_ack(s, m, "Flash successfully queued");
+ return 0;
+}
+
static int unload_module(void)
{
int res;
res = ast_unregister_application(senddtmf_name);
res |= ast_manager_unregister("PlayDTMF");
+ res |= ast_manager_unregister("SendFlash");
return res;
}
@@ -233,6 +279,7 @@ static int load_module(void)
int res;
res = ast_manager_register_xml("PlayDTMF", EVENT_FLAG_CALL, manager_play_dtmf);
+ res |= ast_manager_register_xml("SendFlash", EVENT_FLAG_CALL, manager_send_flash);
res |= ast_register_application_xml(senddtmf_name, senddtmf_exec);
return res;
diff --git a/doc/CHANGES-staging/ami_hook_flash.txt b/doc/CHANGES-staging/ami_hook_flash.txt
new file mode 100644
index 0000000000..5bf1e3455e
--- /dev/null
+++ b/doc/CHANGES-staging/ami_hook_flash.txt
@@ -0,0 +1,4 @@
+Subject: app_senddtmf
+
+The SendFlash AMI action now allows sending
+a hook flash event on a channel.