mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-18 10:44:28 +00:00
add option to avoid calling members whose channels are 'in use' (issue #6315, plus documentation)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10163 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -326,6 +326,7 @@ struct ast_call_queue {
|
|||||||
unsigned int joinempty:2;
|
unsigned int joinempty:2;
|
||||||
unsigned int eventwhencalled:1;
|
unsigned int eventwhencalled:1;
|
||||||
unsigned int leavewhenempty:2;
|
unsigned int leavewhenempty:2;
|
||||||
|
unsigned int ringinuse:1;
|
||||||
unsigned int reportholdtime:1;
|
unsigned int reportholdtime:1;
|
||||||
unsigned int wrapped:1;
|
unsigned int wrapped:1;
|
||||||
unsigned int timeoutrestart:1;
|
unsigned int timeoutrestart:1;
|
||||||
@@ -575,6 +576,7 @@ static void init_queue(struct ast_call_queue *q)
|
|||||||
q->announceholdtime = 0;
|
q->announceholdtime = 0;
|
||||||
q->roundingseconds = 0; /* Default - don't announce seconds */
|
q->roundingseconds = 0; /* Default - don't announce seconds */
|
||||||
q->servicelevel = 0;
|
q->servicelevel = 0;
|
||||||
|
q->ringinuse = 1;
|
||||||
q->moh[0] = '\0';
|
q->moh[0] = '\0';
|
||||||
q->announce[0] = '\0';
|
q->announce[0] = '\0';
|
||||||
q->context[0] = '\0';
|
q->context[0] = '\0';
|
||||||
@@ -626,6 +628,8 @@ static void queue_set_param(struct ast_call_queue *q, const char *param, const c
|
|||||||
q->timeout = atoi(val);
|
q->timeout = atoi(val);
|
||||||
if (q->timeout < 0)
|
if (q->timeout < 0)
|
||||||
q->timeout = DEFAULT_TIMEOUT;
|
q->timeout = DEFAULT_TIMEOUT;
|
||||||
|
} else if (!strcasecmp(param, "ringinuse")) {
|
||||||
|
q->ringinuse = ast_true(val);
|
||||||
} else if (!strcasecmp(param, "monitor-join")) {
|
} else if (!strcasecmp(param, "monitor-join")) {
|
||||||
q->monjoin = ast_true(val);
|
q->monjoin = ast_true(val);
|
||||||
} else if (!strcasecmp(param, "monitor-format")) {
|
} else if (!strcasecmp(param, "monitor-format")) {
|
||||||
@@ -1378,7 +1382,16 @@ static int ring_entry(struct queue_ent *qe, struct callattempt *tmp, int *busies
|
|||||||
(*busies)++;
|
(*busies)++;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!qe->parent->ringinuse && (tmp->member->status == AST_DEVICE_INUSE)) {
|
||||||
|
if (option_debug)
|
||||||
|
ast_log(LOG_DEBUG, "%s in use, can't receive call\n", tmp->interface);
|
||||||
|
if (qe->chan->cdr)
|
||||||
|
ast_cdr_busy(qe->chan->cdr);
|
||||||
|
tmp->stillgoing = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (tmp->member->paused) {
|
if (tmp->member->paused) {
|
||||||
if (option_debug)
|
if (option_debug)
|
||||||
ast_log(LOG_DEBUG, "%s paused, can't receive call\n", tmp->interface);
|
ast_log(LOG_DEBUG, "%s paused, can't receive call\n", tmp->interface);
|
||||||
|
@@ -174,6 +174,12 @@ persistentmembers = yes
|
|||||||
;
|
;
|
||||||
; reportholdtime = no
|
; reportholdtime = no
|
||||||
;
|
;
|
||||||
|
; If you want the queue to avoid sending calls to members whose devices are
|
||||||
|
; known to be 'in use' (via the channel driver supporting that device state)
|
||||||
|
; uncomment this option. (Note: only the SIP channel driver currently is able
|
||||||
|
; to report 'in use'.)
|
||||||
|
;
|
||||||
|
; ringinuse = no
|
||||||
;
|
;
|
||||||
; If you wish to have a delay before the member is connected to the caller (or
|
; If you wish to have a delay before the member is connected to the caller (or
|
||||||
; before the member hears any announcement messages), set this to the number of
|
; before the member hears any announcement messages), set this to the number of
|
||||||
|
Reference in New Issue
Block a user