mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-21 04:46:29 +00:00
Add announce-to-first-user option for app_queue
In r386792, the ability to play prompts to the first caller in a call queue was added. While this is arguably a bug fix for those who expect the first caller to continue receiving prompts while the agent is dialed, it has the side effect of preventing the first caller from hearing the agent immediately upon bridging. This may not be a problem for those who really want this option, but for those who didn't care whether or not the first caller in queue heard their position, it was an issue. This patch disables the ability for the first caller in the queue to hear prompts and adds a new option, announce-to-first-user, to queues.conf. Those who the behavior can enable it by setting this value to True. Note that if we ever implement the ability to have the prompts be stopped upon bridging, this option can be removed. (closes issue ASTERISK-21782) Reported by: Remi Quezada ........ Merged revisions 391215 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 391241 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@391245 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1517,6 +1517,7 @@ struct call_queue {
|
||||
struct ast_str *sound_periodicannounce[MAX_PERIODIC_ANNOUNCEMENTS];
|
||||
unsigned int dead:1;
|
||||
unsigned int ringinuse:1;
|
||||
unsigned int announce_to_first_user:1; /*!< Whether or not we announce to the first user in a queue */
|
||||
unsigned int setinterfacevar:1;
|
||||
unsigned int setqueuevar:1;
|
||||
unsigned int setqueueentryvar:1;
|
||||
@@ -2370,6 +2371,7 @@ static void init_queue(struct call_queue *q)
|
||||
q->roundingseconds = 0; /* Default - don't announce seconds */
|
||||
q->servicelevel = 0;
|
||||
q->ringinuse = 1;
|
||||
q->announce_to_first_user = 0;
|
||||
q->setinterfacevar = 0;
|
||||
q->setqueuevar = 0;
|
||||
q->setqueueentryvar = 0;
|
||||
@@ -2648,6 +2650,8 @@ static void queue_set_param(struct call_queue *q, const char *param, const char
|
||||
ast_string_field_set(q, sound_reporthold, val);
|
||||
} else if (!strcasecmp(param, "announce-frequency")) {
|
||||
q->announcefrequency = atoi(val);
|
||||
} else if (!strcasecmp(param, "announce-to-first-user")) {
|
||||
q->announce_to_first_user = ast_true(val);
|
||||
} else if (!strcasecmp(param, "min-announce-frequency")) {
|
||||
q->minannouncefrequency = atoi(val);
|
||||
ast_debug(1, "%s=%s for queue '%s'\n", param, val, q->name);
|
||||
@@ -4820,12 +4824,12 @@ skip_frame:;
|
||||
}
|
||||
|
||||
/* Make a position announcement, if enabled */
|
||||
if (qe->parent->announcefrequency) {
|
||||
if (qe->parent->announcefrequency && qe->parent->announce_to_first_user) {
|
||||
say_position(qe, ringing);
|
||||
}
|
||||
|
||||
/* Make a periodic announcement, if enabled */
|
||||
if (qe->parent->periodicannouncefrequency) {
|
||||
if (qe->parent->periodicannouncefrequency && qe->parent->announce_to_first_user) {
|
||||
say_periodic_announcement(qe, ringing);
|
||||
}
|
||||
|
||||
@@ -9661,6 +9665,7 @@ static struct ast_cli_entry cli_queue[] = {
|
||||
MEMBER(call_queue, sound_reporthold, AST_DATA_STRING) \
|
||||
MEMBER(call_queue, dead, AST_DATA_BOOLEAN) \
|
||||
MEMBER(call_queue, ringinuse, AST_DATA_BOOLEAN) \
|
||||
MEMBER(call_queue, announce_to_first_user, AST_DATA_BOOLEAN) \
|
||||
MEMBER(call_queue, setinterfacevar, AST_DATA_BOOLEAN) \
|
||||
MEMBER(call_queue, setqueuevar, AST_DATA_BOOLEAN) \
|
||||
MEMBER(call_queue, setqueueentryvar, AST_DATA_BOOLEAN) \
|
||||
|
Reference in New Issue
Block a user