app_queue: Add announce-position-only-up option

Setting this option will cause the Queue application to only announce
the caller's position if it has improved since the last time that we
announced it.

Change-Id: I173a124121422209485b043e2bf784f54242fce6
pull/9/head
Sean Bright 8 years ago committed by George Joseph
parent ac6d98b28d
commit 3f98488279

@ -17,6 +17,11 @@ app_queue
* PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has
been defined.
* A new option, "announce-position-only-up," has been added that, when set to
yes, causes position announcements to only be played when the caller's
queue position has improved since the last time that we annouced their
position. This default is no.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------
------------------------------------------------------------------------------

@ -1683,6 +1683,7 @@ struct call_queue {
unsigned int timeoutrestart:1;
unsigned int announceholdtime:2;
unsigned int announceposition:3;
unsigned int announceposition_only_up:1; /*!< Only announce position if it has improved */
int strategy:4;
unsigned int realtime:1;
unsigned int found:1;
@ -2722,6 +2723,7 @@ static void init_queue(struct call_queue *q)
q->announcefrequency = 0;
q->minannouncefrequency = DEFAULT_MIN_ANNOUNCE_FREQUENCY;
q->announceholdtime = 1;
q->announceposition_only_up = 0;
q->announcepositionlimit = 10; /* Default 10 positions */
q->announceposition = ANNOUNCEPOSITION_YES; /* Default yes */
q->roundingseconds = 0; /* Default - don't announce seconds */
@ -3171,6 +3173,8 @@ static void queue_set_param(struct call_queue *q, const char *param, const char
} else {
q->announceposition = ANNOUNCEPOSITION_NO;
}
} else if (!strcasecmp(param, "announce-position-only-up")) {
q->announceposition_only_up = ast_true(val);
} else if (!strcasecmp(param, "announce-position-limit")) {
q->announcepositionlimit = atoi(val);
} else if (!strcasecmp(param, "periodic-announce")) {
@ -3911,6 +3915,11 @@ static int say_position(struct queue_ent *qe, int ringing)
return 0;
}
/* Only announce if the caller's queue position has improved since last time */
if (qe->parent->announceposition_only_up && qe->last_pos_said <= qe->pos) {
return 0;
}
if (ringing) {
ast_indicate(qe->chan,-1);
} else {

@ -345,6 +345,11 @@ monitor-type = MixMonitor
;
; announce-round-seconds = 10
;
; Only announce the caller's position if it has improved since the last announcement.
; The default value is no.
;
; announce-position-only-up = yes
;
; Use these sound files in making position/holdtime announcements. The
; defaults are as listed below -- change only if you need to.
;

Loading…
Cancel
Save