unsigned int realtime:1;
unsigned int found:1;
unsigned int relativeperiodicannounce:1;
+ unsigned int autopausebusy:1;
+ unsigned int autopauseunavail:1;
enum empty_conditions joinempty;
enum empty_conditions leavewhenempty;
int announcepositionlimit; /*!< How many positions we announce? */
q->autopause = autopause2int(val);
} else if (!strcasecmp(param, "autopausedelay")) {
q->autopausedelay = atoi(val);
+ } else if (!strcasecmp(param, "autopausebusy")) {
+ q->autopausebusy = ast_true(val);
+ } else if (!strcasecmp(param, "autopauseunavail")) {
+ q->autopauseunavail = ast_true(val);
} else if (!strcasecmp(param, "maxlen")) {
q->maxlen = atoi(val);
if (q->maxlen < 0)
do_hang(o);
endtime = (long) time(NULL);
endtime -= starttime;
- rna(endtime * 1000, qe, on, membername, 0);
+ rna(endtime * 1000, qe, on, membername, qe->parent->autopausebusy);
if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) {
if (qe->parent->timeoutrestart)
*to = orig;
ast_cdr_busy(in->cdr);
endtime = (long) time(NULL);
endtime -= starttime;
- rna(endtime * 1000, qe, on, membername, 0);
+ rna(endtime * 1000, qe, on, membername, qe->parent->autopauseunavail);
do_hang(o);
if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) {
if (qe->parent->timeoutrestart)
; last call if a member has not taken a call the delay has no effect.
;autopausedelay=60
;
+; Autopausebusy controls whether or not a queue member is set as paused
+; automatically upon the member device reporting busy. The autopausedelay
+; option applies. Defaults to 'no'.
+;autopausebusy=no
+;
+; Autopauseunavail controls whether or not a queue member is set as paused
+; automatically upon the member device reporting congestion. The autopausedely
+; option applies. Defaults to 'no'.
+;autopauseunavail=no
+;
; Maximum number of people waiting in the queue (0 for unlimited)
;
;maxlen = 0