From f106d081667e509c15f33a2161c914c65f19fdfe Mon Sep 17 00:00:00 2001 From: markster Date: Mon, 11 Apr 2005 02:04:08 +0000 Subject: 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 --- apps/app_queue.c | 51 ++++++++++++++++++++++++++-------------------- configs/queues.conf.sample | 11 ++++++++-- 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. ; -- cgit v1.2.3