[asterisk-commits] russell: trunk r62242 - in /trunk: ./ apps/ configs/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Apr 27 15:08:55 MST 2007


Author: russell
Date: Fri Apr 27 17:08:54 2007
New Revision: 62242

URL: http://svn.digium.com/view/asterisk?view=rev&rev=62242
Log:
Add a min-announce-frequency option to queues.conf which allows you to control the
minimum amount of time between queue announcements for use when the caller's queue
position changes frequently.
(issue #9604, patch by Matthew Roth)

Modified:
    trunk/CHANGES
    trunk/apps/app_queue.c
    trunk/configs/queues.conf.sample

Modified: trunk/CHANGES
URL: http://svn.digium.com/view/asterisk/trunk/CHANGES?view=diff&rev=62242&r1=62241&r2=62242
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Fri Apr 27 17:08:54 2007
@@ -75,7 +75,25 @@
   * Added the ability to customize which sound files are used for some of the
      prompts within the Voicemail application by changing them in voicemail.conf
   * Added the ability for the "voicemail show users" CLI command to show users
-    configured by the dynamic realtime configuration method.
+     configured by the dynamic realtime configuration method.
+
+Queue changes
+-------------
+  * Added QUEUE_VARIABLES function to set queue variables added setqueuevar and 
+     setqueueentryvar options for each queue, see queues.conf.sample for details.
+  * Added keepstats option to queues.conf which will keep queue
+     statistics during a reload.
+  * setinterfacevar option in queues.conf also now sets a variable
+     called MEMBERNAME which contains the member's name.
+  * Added 'Strategy' field to manager event QueueParams which represents
+     the queue strategy in use. 
+  * Added option to run macro when a queue member is connected to a caller, 
+     see queues.conf.sample for details.
+  * app_queue now has a 'loose' option which is almost exactly like 'strict' except it
+     does not count paused queue members as unavailable.
+  * Added min-announce-frequency option to queues.conf which allows you to control the
+     minimum amount of time between queue announcements for use when the caller's queue
+     position changes frequently.
 
 Miscellaneous 
 -------------
@@ -97,16 +115,10 @@
      can use --with-cap to specify the path.
   * H323 remote hold notification support added (by NOTIFY message
      and/or H.450 supplementary service)
-  * Added keepstats option to queues.conf which will keep queue
-     statistics during a reload.
   * Added rotatetimestamp option to logger.conf which will use
      the time to name the logger files instead of sequence number.
-  * setinterfacevar option in queues.conf also now sets a variable
-     called MEMBERNAME which contains the member's name.
   * Added Masquerade manager event for when a masquerade happens between
      two channels.
-  * Added 'Strategy' field to manager event QueueParams which represents
-     the queue strategy in use. 
   * From the to-do lists: straighten out the app timeout args:
      Wait() app now really does 0.3 seconds- was truncating arg to an int.
      WaitExten() same as Wait().
@@ -117,14 +129,8 @@
      SpeechBackground() -- clarified in the docstrings that the timeout is an integer seconds.
   * Added 'C' option to Meetme which causes a caller to continue in the dialplan
      when kicked out.
-  * Added option to run macro when a queue member is connected to a caller, 
-     see queues.conf.sample for details.
-  * Added QUEUE_VARIABLES function to set queue variables added setqueuevar and 
-    setqueueentryvar options for each queue, see queues.conf.sample for details.
   * Brazilian Portuguese (pt-BR) in VM, and say.c was added via patch from cfassoni.
   * CID matching information is now shown when doing 'dialplan show'.
-  * app_queue now has a 'loose' option which is almost exactly like 'strict' except it
-     does not count paused queue members as unavailable.
   * Added maxfiles option to options section of asterisk.conf which allows you to specify
      what Asterisk should set as the maximum number of open files when it loads.
   * Added the jittertargetextra configuration option.

Modified: trunk/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_queue.c?view=diff&rev=62242&r1=62241&r2=62242
==============================================================================
--- trunk/apps/app_queue.c (original)
+++ trunk/apps/app_queue.c Fri Apr 27 17:08:54 2007
@@ -116,6 +116,8 @@
 #define DEFAULT_TIMEOUT		15
 #define RECHECK			1		/* Recheck every second to see we we're at the top yet */
 #define MAX_PERIODIC_ANNOUNCEMENTS 10 /* The maximum periodic announcements we can have */
+#define DEFAULT_MIN_ANNOUNCE_FREQUENCY 15 /* The minimum number of seconds between position announcements
+                                             The default value of 15 provides backwards compatibility */
 
 #define	RES_OKAY	0		/* Action completed */
 #define	RES_EXISTS	(-1)		/* Entry already exists */
@@ -366,6 +368,7 @@
 	unsigned int maskmemberstatus:1;
 	unsigned int realtime:1;
 	int announcefrequency;              /*!< How often to announce their position */
+	int minannouncefrequency;           /*!< The minimum number of seconds between position announcements (def. 15) */
 	int periodicannouncefrequency;      /*!< How often to play periodic announcement */
 	int roundingseconds;                /*!< How many seconds do we round to? */
 	int holdtime;                       /*!< Current avg holdtime, based on recursive boxcar filter */
@@ -673,6 +676,7 @@
 	q->timeout = -1;
 	q->maxlen = 0;
 	q->announcefrequency = 0;
+	q->minannouncefrequency = DEFAULT_MIN_ANNOUNCE_FREQUENCY;
 	q->announceholdtime = 0;
 	q->roundingseconds = 0; /* Default - don't announce seconds */
 	q->servicelevel = 0;
@@ -847,6 +851,9 @@
 		ast_copy_string(q->sound_reporthold, val, sizeof(q->sound_reporthold));
 	} else if (!strcasecmp(param, "announce-frequency")) {
 		q->announcefrequency = atoi(val);
+	} else if (!strcasecmp(param, "min-announce-frequency")) {
+		q->minannouncefrequency = atoi(val);
+		ast_log(LOG_DEBUG, "%s=%s for queue '%s'\n", param, val, q->name);
 	} else if (!strcasecmp(param, "announce-round-seconds")) {
 		q->roundingseconds = atoi(val);
 		if (q->roundingseconds>60 || q->roundingseconds<0) {
@@ -1308,9 +1315,9 @@
 	int res = 0, avgholdmins, avgholdsecs;
 	time_t now;
 
-	/* Check to see if this is ludicrous -- if we just announced position, don't do it again*/
+	/* Let minannouncefrequency seconds pass between the start of each position announcement */
 	time(&now);
-	if ((now - qe->last_pos) < 15)
+	if ((now - qe->last_pos) < qe->parent->minannouncefrequency)
 		return 0;
 
 	/* If either our position has changed, or we are over the freq timer, say position */

Modified: trunk/configs/queues.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/queues.conf.sample?view=diff&rev=62242&r1=62241&r2=62242
==============================================================================
--- trunk/configs/queues.conf.sample (original)
+++ trunk/configs/queues.conf.sample Fri Apr 27 17:08:54 2007
@@ -167,9 +167,18 @@
 
 ; How often to announce queue position and/or estimated 
 ; holdtime to caller (0=off)
+; Note that this value is ignored if the caller's queue
+; position has changed (see min-announce-frequency)
 ;
 ;announce-frequency = 90 
 ;
+; The absolute minimum time between the start of each
+; queue position and/or estimated holdtime announcement
+; This is useful for avoiding constant announcements
+; when the caller's queue position is changing frequently
+; (see announce-frequency)
+;
+;min-announce-frequency = 15
 ;
 ; How often to make any periodic announcement (see periodic-announce)
 ;



More information about the asterisk-commits mailing list