]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_queue: periodic announcement configurable start time.
authorJaco Kroon <jaco@uls.co.za>
Tue, 21 Feb 2023 12:24:36 +0000 (14:24 +0200)
committerAsterisk Development Team <asteriskteam@digium.com>
Mon, 8 May 2023 17:55:16 +0000 (17:55 +0000)
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@uls.co.za>
(cherry picked from commit c405630810bd92ac27d7618d3470dbac11aecced)

apps/app_queue.c
configs/samples/queues.conf.sample
doc/CHANGES-staging/app_queue.txt [new file with mode: 0644]

index f549af74ab7c9eb281be976627768b33a46d031f..d2de993c59e43b58d96a032efc2dc53c913440ec 100644 (file)
@@ -1856,6 +1856,7 @@ struct call_queue {
        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 */
@@ -2987,6 +2988,7 @@ static void init_queue(struct call_queue *q)
        q->weight = 0;
        q->timeoutrestart = 0;
        q->periodicannouncefrequency = 0;
+       q->periodicannouncestartdelay = -1;
        q->randomperiodicannounce = 0;
        q->numperiodicannounce = 0;
        q->relativeperiodicannounce = 0;
@@ -3445,6 +3447,8 @@ static void queue_set_param(struct call_queue *q, const char *param, const char
                        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")) {
@@ -8613,6 +8617,10 @@ static int queue_exec(struct ast_channel *chan, const char *data)
        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)) {
index fbb5653203be30caaf34087c817d0531f79ef0c9..d8308cae33f61a2f111d52bed7fe4eab63937b13 100644 (file)
@@ -291,6 +291,13 @@ monitor-type = MixMonitor
 ;
 ;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 (file)
index 0000000..f71bcb0
--- /dev/null
@@ -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.