[Asterisk-code-review] app_queue: periodic announcement configurable start time. (asterisk[master])

Joshua Colp asteriskteam at digium.com
Thu Mar 16 10:43:39 CDT 2023


Joshua Colp has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/19899 )

Change subject: app_queue: periodic announcement configurable start time.
......................................................................

app_queue: periodic announcement configurable start time.

This newly introduced periodic-announce-startdelay makes it possible to
configure the initial start delay of the first periodic announcement
after which periodic-announce-frequency takes over.

ASTERISK-30437 #close
Change-Id: Ia79984b6377ef78f167ad9ea2ac084bec29955d0
Signed-off-by: Jaco Kroon <jaco at uls.co.za>
---
M apps/app_queue.c
M configs/samples/queues.conf.sample
A doc/CHANGES-staging/app_queue.txt
3 files changed, 39 insertions(+), 0 deletions(-)

Approvals:
  Joshua Colp: Looks good to me, but someone else must approve; Approved for Submit
  Benjamin Keith Ford: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved
  N A: Looks good to me, but someone else must approve




diff --git a/apps/app_queue.c b/apps/app_queue.c
index 084f25b..df73226 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -1839,6 +1839,7 @@
 	int announcepositionlimit;          /*!< How many positions we announce? */
 	int announcefrequency;              /*!< How often to announce their position */
 	int minannouncefrequency;           /*!< The minimum number of seconds between position announcements (def. 15) */
+	int periodicannouncestartdelay;     /*!< How long into the queue should the periodic accouncement start */
 	int periodicannouncefrequency;      /*!< How often to play periodic announcement */
 	int numperiodicannounce;            /*!< The number of periodic announcements configured */
 	int randomperiodicannounce;         /*!< Are periodic announcments randomly chosen */
@@ -2967,6 +2968,7 @@
 	q->weight = 0;
 	q->timeoutrestart = 0;
 	q->periodicannouncefrequency = 0;
+	q->periodicannouncestartdelay = -1;
 	q->randomperiodicannounce = 0;
 	q->numperiodicannounce = 0;
 	q->relativeperiodicannounce = 0;
@@ -3423,6 +3425,8 @@
 			ast_str_set(&q->sound_periodicannounce[0], 0, "%s", val);
 			q->numperiodicannounce = 1;
 		}
+	} else if (!strcasecmp(param, "periodic-announce-startdelay")) {
+		q->periodicannouncestartdelay = atoi(val);
 	} else if (!strcasecmp(param, "periodic-announce-frequency")) {
 		q->periodicannouncefrequency = atoi(val);
 	} else if (!strcasecmp(param, "relative-periodic-announce")) {
@@ -8522,6 +8526,10 @@
 	qe.last_pos_said = 0;
 	qe.last_pos = 0;
 	qe.last_periodic_announce_time = time(NULL);
+	if (qe.parent->periodicannouncestartdelay >= 0) {
+		qe.last_periodic_announce_time += qe.parent->periodicannouncestartdelay;
+		qe.last_periodic_announce_time -= qe.parent->periodicannouncefrequency;
+	}
 	qe.last_periodic_announce_sound = 0;
 	qe.valid_digits = 0;
 	if (join_queue(args.queuename, &qe, &reason, position)) {
diff --git a/configs/samples/queues.conf.sample b/configs/samples/queues.conf.sample
index 0987236..7b5fe0b 100644
--- a/configs/samples/queues.conf.sample
+++ b/configs/samples/queues.conf.sample
@@ -278,6 +278,13 @@
 ;
 ;periodic-announce-frequency=60
 ;
+; If given indicates the number of seconds after entering the queue the first
+; periodic announcement should be played.  The default (and historic) behavior
+; is to play the first periodic announcement at periodic-announce-frequency
+; seconds after entering the queue.
+;
+;periodic-announce-startdelay=10
+;
 ; Should the periodic announcements be played in a random order? Default is no.
 ;
 ;random-periodic-announce=no
diff --git a/doc/CHANGES-staging/app_queue.txt b/doc/CHANGES-staging/app_queue.txt
new file mode 100644
index 0000000..f71bcb0
--- /dev/null
+++ b/doc/CHANGES-staging/app_queue.txt
@@ -0,0 +1,9 @@
+Subject: app_queue
+
+Introduce a new queue configuration option called
+'periodic-announce-startdelay' which will vary the normal (historic) behavior
+of starting the periodic announcement cycle at periodic-announce-frequency
+seconds after entering the queue to start the periodic announcement cycle at
+period-announce-startdelay seconds after joining the queue.
+
+The default behavior if this config option is not set remains unchanged.

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/19899
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Change-Id: Ia79984b6377ef78f167ad9ea2ac084bec29955d0
Gerrit-Change-Number: 19899
Gerrit-PatchSet: 7
Gerrit-Owner: Jaco Kroon <jaco at uls.co.za>
Gerrit-Reviewer: Benjamin Keith Ford <bford at digium.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at sangoma.com>
Gerrit-Reviewer: N A <asterisk at phreaknet.org>
Gerrit-Reviewer: Sean Bright <sean at seanbright.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20230316/2114fe33/attachment.html>


More information about the asterisk-code-review mailing list