mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
Add log-caller-id-name option to log Caller ID Name in queue log
Add log-caller-id-name option to log Caller ID Name in queue log This patch introduces a new global configuration option, log-caller-id-name, to queues.conf to control whether the Caller ID name is logged when a call enters a queue. When log-caller-id-name=yes, the Caller ID name is logged as parameter 4 in the queue log, provided it’s allowed by the existing log_restricted_caller_id rules. If log-caller-id-name=no (the default), the Caller ID name is omitted from the logs. Fixes: #1091 UserNote: This patch adds a global configuration option, log-caller-id-name, to queues.conf to control whether the Caller ID name is logged as parameter 4 when a call enters a queue. When log-caller-id-name=yes, the Caller ID name is included in the queue log, Any '|' characters in the caller ID name will be replaced with '_'. (provided it’s allowed by the existing log_restricted_caller_id rules). When log-caller-id-name=no (the default), the Caller ID name is omitted.
This commit is contained in:
@@ -1798,6 +1798,9 @@ static int log_membername_as_agent;
|
||||
/*! \brief queues.conf [general] option */
|
||||
static int force_longest_waiting_caller;
|
||||
|
||||
/*! \brief queues.conf [general] option */
|
||||
static int log_caller_id_name;
|
||||
|
||||
/*! \brief name of the ringinuse field in the realtime database */
|
||||
static char *realtime_ringinuse_field;
|
||||
|
||||
@@ -8962,11 +8965,33 @@ static int queue_exec(struct ast_channel *chan, const char *data)
|
||||
|
||||
cid_allow = qe.parent->log_restricted_caller_id || ((ast_party_id_presentation(&ast_channel_caller(chan)->id) & AST_PRES_RESTRICTION) == AST_PRES_ALLOWED);
|
||||
|
||||
ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "ENTERQUEUE", "%s|%s|%d",
|
||||
S_OR(args.url, ""),
|
||||
S_COR(cid_allow && ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, ""),
|
||||
qe.opos);
|
||||
if (log_caller_id_name) {
|
||||
char *escaped_cidname = NULL;
|
||||
/* Ensure caller ID name is valid and not NULL before processing */
|
||||
if (cid_allow && ast_channel_caller(chan)->id.name.valid && ast_channel_caller(chan)->id.name.str) {
|
||||
escaped_cidname = ast_strdupa(ast_channel_caller(chan)->id.name.str);
|
||||
/* Only iterate if '|' is found */
|
||||
if (strchr(escaped_cidname, '|')) {
|
||||
for (char *p = escaped_cidname; *p; p++) {
|
||||
if (*p == '|') {
|
||||
*p = '_';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "ENTERQUEUE", "%s|%s|%d|%s",
|
||||
S_OR(args.url, ""),
|
||||
S_COR(cid_allow && ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, ""),
|
||||
qe.opos,
|
||||
S_OR(escaped_cidname, ""));
|
||||
} else {
|
||||
ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "ENTERQUEUE", "%s|%s|%d",
|
||||
S_OR(args.url, ""),
|
||||
S_COR(cid_allow && ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, ""),
|
||||
qe.opos);
|
||||
}
|
||||
|
||||
/* PREDIAL: Preprocess any callee gosub arguments. */
|
||||
if (ast_test_flag(&opts, OPT_PREDIAL_CALLEE)
|
||||
&& !ast_strlen_zero(opt_args[OPT_ARG_PREDIAL_CALLEE])) {
|
||||
@@ -9875,6 +9900,10 @@ static void queue_set_global_params(struct ast_config *cfg)
|
||||
if ((general_val = ast_variable_retrieve(cfg, "general", "force_longest_waiting_caller"))) {
|
||||
force_longest_waiting_caller = ast_true(general_val);
|
||||
}
|
||||
/* Apply log-caller-id-name in the same place as other global settings */
|
||||
if ((general_val = ast_variable_retrieve(cfg, "general", "log-caller-id-name"))) {
|
||||
log_caller_id_name = ast_true(general_val);
|
||||
}
|
||||
}
|
||||
|
||||
/*! \brief reload information pertaining to a single member
|
||||
|
@@ -58,6 +58,15 @@ monitor-type = MixMonitor
|
||||
;
|
||||
;log_membername_as_agent = no
|
||||
;
|
||||
; log-caller-id-name controls whether the Caller ID Name will be written to the
|
||||
; queue log. If enabled, and Caller ID would otherwise be logged (see
|
||||
; 'log-restricted-caller-id'), adds a 4th column to the ENTERQUEUE record which
|
||||
; contains the Caller ID Name. Any '|' characters in the Caller ID Name will be
|
||||
; replaced by a '_'. This setting applies globally to all queues.
|
||||
;
|
||||
; Default is 'no', which means the Caller ID Name is not stored.
|
||||
;log-caller-id-name = no
|
||||
;
|
||||
; log-restricted-caller-id controls whether the Restricted Caller ID will be stored
|
||||
; in the queue log.
|
||||
; If log-restricted-caller-id=no then the Caller ID will be stripped if the Caller ID
|
||||
|
Reference in New Issue
Block a user