; calls are not accepted by a remote
; implementation, please report this and go
; back to value 96.
+;hide_messaging_ami_events = no; This option, if enabled, will
+ ; suppress all of the Message/ast_msg_queue channel's
+ ; housekeeping AMI and ARI channel events. This can
+ ; reduce the load on the manager and ARI applications
+ ; when the Digium Phone Module for Asterisk is in use.
; Changing the following lines may compromise your security.
;[files]
--- /dev/null
+Subject: Messaging
+
+In order to reduce the amount of AMI and ARI events generated,
+the global "Message/ast_msg_queue" channel can be set to suppress
+it's normal channel housekeeping events such as "Newexten",
+"VarSet", etc. This can greatly reduce load on the manager
+and ARI applications when the Digium Phone Module for Asterisk
+is in use. To enable, set "hide_messaging_ami_events" in
+asterisk.conf to "yes" In Asterisk versions <18, the default
+is "no" preserving existing behavior. Beginning with
+Asterisk 18, the option will default to "yes".
AST_OPT_FLAG_DEBUG_MODULE = (1 << 23),
/*! Terminal colors should be adjusted for a light-colored background */
AST_OPT_FLAG_LIGHT_BACKGROUND = (1 << 25),
+ /*! Make the global Message channel an internal channel to suppress AMI events */
+ AST_OPT_FLAG_HIDE_MESSAGING_AMI_EVENTS = (1 << 26),
/*! Force black background */
AST_OPT_FLAG_FORCE_BLACK_BACKGROUND = (1 << 27),
/*! Hide remote console connect messages on console */
#define ast_opt_generic_plc ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC)
#define ast_opt_ref_debug ast_test_flag(&ast_options, AST_OPT_FLAG_REF_DEBUG)
#define ast_opt_generic_plc_on_equal_codecs ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC_ON_EQUAL_CODECS)
+#define ast_opt_hide_messaging_ami_events ast_test_flag(&ast_options, AST_OPT_FLAG_HIDE_MESSAGING_AMI_EVENTS)
/*! Maximum log level defined by PJPROJECT. */
#define MAX_PJ_LOG_MAX_LEVEL 6
ast_cli(a->fd, " Transmit silence during rec: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSMIT_SILENCE) ? "Enabled" : "Disabled");
ast_cli(a->fd, " Generic PLC: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC) ? "Enabled" : "Disabled");
ast_cli(a->fd, " Generic PLC on equal codecs: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC_ON_EQUAL_CODECS) ? "Enabled" : "Disabled");
+ ast_cli(a->fd, " Hide Msg Chan AMI events: %s\n", ast_opt_hide_messaging_ami_events ? "Enabled" : "Disabled");
ast_cli(a->fd, " Min DTMF duration:: %u\n", option_dtmfminduration);
#if !defined(LOW_MEMORY)
ast_cli(a->fd, " Cache media frames: %s\n", ast_opt_cache_media_frames ? "Enabled" : "Disabled");
* This will not be registered as we never want anything to try
* to create Message channels other than internally in this file.
*/
-static const struct ast_channel_tech msg_chan_tech_hack = {
+static struct ast_channel_tech msg_chan_tech_hack = {
.type = "Message",
.description = "Internal Text Message Processing",
.read = chan_msg_read,
return NULL;
}
+ if (ast_opt_hide_messaging_ami_events) {
+ msg_chan_tech_hack.properties |= AST_CHAN_TP_INTERNAL;
+ }
+
ast_channel_tech_set(chan, &msg_chan_tech_hack);
ast_channel_unlock(chan);
ast_channel_unlink(chan);
}
} else if (!strcasecmp(v->name, "live_dangerously")) {
live_dangerously = ast_true(v->value);
+ } else if (!strcasecmp(v->name, "hide_messaging_ami_events")) {
+ ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_HIDE_MESSAGING_AMI_EVENTS);
}
}
if (!ast_opt_remote) {