aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-04-11 02:04:08 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-04-11 02:04:08 +0000
commitf106d081667e509c15f33a2161c914c65f19fdfe (patch)
tree7c473da3d36d77c55d19d384bb7951447bd115a6
parente6b464de1e6eb7712368885c9f1ee7aa3618e877 (diff)
Add option to mask certain high frequency events (bug #3707)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5444 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xapps/app_queue.c51
-rwxr-xr-xconfigs/queues.conf.sample11
2 files changed, 38 insertions, 24 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index d0c037ba6..cdd029b32 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -275,6 +275,7 @@ struct ast_call_queue {
unsigned int timeoutrestart:1;
unsigned int announceholdtime:2;
unsigned int strategy:3;
+ unsigned int maskmemberstatus:1;
int announcefrequency; /* How often to announce their position */
int roundingseconds; /* How many seconds do we round to? */
int holdtime; /* Current avg holdtime, based on recursive boxcar filter */
@@ -424,17 +425,19 @@ static void *changethread(void *data)
if (!strcasecmp(sc->dev, cur->interface)) {
if (cur->status != sc->state) {
cur->status = sc->state;
- manager_event(EVENT_FLAG_AGENT, "QueueMemberStatus",
- "Queue: %s\r\n"
- "Location: %s\r\n"
- "Membership: %s\r\n"
- "Penalty: %d\r\n"
- "CallsTaken: %d\r\n"
- "LastCall: %ld\r\n"
- "Status: %d\r\n"
- "Paused: %d\r\n",
- q->name, cur->interface, cur->dynamic ? "dynamic" : "static",
- cur->penalty, cur->calls, cur->lastcall, cur->status, cur->paused);
+ if (!q->maskmemberstatus) {
+ manager_event(EVENT_FLAG_AGENT, "QueueMemberStatus",
+ "Queue: %s\r\n"
+ "Location: %s\r\n"
+ "Membership: %s\r\n"
+ "Penalty: %d\r\n"
+ "CallsTaken: %d\r\n"
+ "LastCall: %ld\r\n"
+ "Status: %d\r\n"
+ "Paused: %d\r\n",
+ q->name, cur->interface, cur->dynamic ? "dynamic" : "static",
+ cur->penalty, cur->calls, cur->lastcall, cur->status, cur->paused);
+ }
}
}
cur = cur->next;
@@ -765,17 +768,19 @@ static int update_status(struct ast_call_queue *q, struct member *member, int st
while(cur) {
if (member == cur) {
cur->status = status;
- manager_event(EVENT_FLAG_AGENT, "QueueMemberStatus",
- "Queue: %s\r\n"
- "Location: %s\r\n"
- "Membership: %s\r\n"
- "Penalty: %d\r\n"
- "CallsTaken: %d\r\n"
- "LastCall: %ld\r\n"
- "Status: %d\r\n"
- "Paused: %d\r\n",
- q->name, cur->interface, cur->dynamic ? "dynamic" : "static",
- cur->penalty, cur->calls, cur->lastcall, cur->status, cur->paused);
+ if (!q->maskmemberstatus) {
+ manager_event(EVENT_FLAG_AGENT, "QueueMemberStatus",
+ "Queue: %s\r\n"
+ "Location: %s\r\n"
+ "Membership: %s\r\n"
+ "Penalty: %d\r\n"
+ "CallsTaken: %d\r\n"
+ "LastCall: %ld\r\n"
+ "Status: %d\r\n"
+ "Paused: %d\r\n",
+ q->name, cur->interface, cur->dynamic ? "dynamic" : "static",
+ cur->penalty, cur->calls, cur->lastcall, cur->status, cur->paused);
+ }
break;
}
cur = cur->next;
@@ -2667,6 +2672,8 @@ static void reload_queues(void)
q->leavewhenempty = QUEUE_EMPTY_NORMAL;
else
q->leavewhenempty = 0;
+ } else if (!strcasecmp(var->name, "eventmemberstatus")) {
+ q->maskmemberstatus = !ast_true(var->value);
} else if (!strcasecmp(var->name, "eventwhencalled")) {
q->eventwhencalled = ast_true(var->value);
} else if (!strcasecmp(var->name, "reportholdtime")) {
diff --git a/configs/queues.conf.sample b/configs/queues.conf.sample
index a5101197a..ba438b1ec 100755
--- a/configs/queues.conf.sample
+++ b/configs/queues.conf.sample
@@ -137,11 +137,18 @@ persistentmembers = yes
; leavewhenempty = yes
;
;
-; Asterisk can generate AgentCalled events when an agent is rung, if this is turned on
-; (may generate a LOT of extra manager events)
+; If this is set to yes, the following manager events will be generated:
+; AgentCalled, AgentDump, AgentConnect, AgentComplete
+; (may generate some extra manager events, but probably ones you want)
;
; eventwhencalled = yes
;
+; If this is set to no, the following manager events will be generated:
+; QueueMemberStatus
+; (may generate a WHOLE LOT of extra manager events)
+;
+; eventmemberstatusoff = no
+;
; If you wish to report the caller's hold time to the member before they are connected
; to the caller, set this to yes.
;