From aa676fbb84cfa50c2c67c6c83e6478b585057bc0 Mon Sep 17 00:00:00 2001 From: Olle Johansson <oej@edvina.net> Date: Mon, 29 Apr 2013 08:54:10 +0000 Subject: [PATCH] Play periodic prompts for first call in a call queue Review: https://reviewboard.asterisk.org/r/2263/ ........ Merged revisions 386792 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@386794 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- CHANGES | 9 +++++++++ apps/app_queue.c | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index dd0b5828bc..44a40a0a93 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,15 @@ --- Functionality changes from Asterisk 10 to Asterisk 11 -------------------- ------------------------------------------------------------------------------ +App_queue +--------- + * App_queue will now play periodic announcements for the caller that + holds the first position in the queue while waiting for answer. + +------------------------------------------------------------------------------ +--- Functionality changes since Asterisk 1.8.12.0 ---------------------------- +------------------------------------------------------------------------------ + Build System ------------------- * The Asterisk build system will now build and install a shared library diff --git a/apps/app_queue.c b/apps/app_queue.c index 8302655a8a..4228bb8dee 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -4089,7 +4089,7 @@ static void rna(int rnatime, struct queue_ent *qe, char *interface, char *member * * \todo eventually all call forward logic should be intergerated into and replaced by ast_call_forward() */ -static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callattempt *outgoing, int *to, char *digit, int prebusies, int caller_disconnect, int forwardsallowed) +static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callattempt *outgoing, int *to, char *digit, int prebusies, int caller_disconnect, int forwardsallowed, int ringing) { const char *queue = qe->parent->name; struct callattempt *o, *start = NULL, *prev = NULL; @@ -4588,6 +4588,16 @@ skip_frame:; } } + /* Make a position announcement, if enabled */ + if (qe->parent->announcefrequency) { + say_position(qe, ringing); + } + + /* Make a periodic announcement, if enabled */ + if (qe->parent->periodicannouncefrequency) { + say_periodic_announcement(qe, ringing); + } + if (!*to) { for (o = start; o; o = o->call_next) { rna(orig, qe, o->interface, o->member->membername, 1); @@ -5378,7 +5388,7 @@ static int try_calling(struct queue_ent *qe, const struct ast_flags opts, char * ring_one(qe, outgoing, &numbusies); lpeer = wait_for_answer(qe, outgoing, &to, &digit, numbusies, ast_test_flag(&(bridge_config.features_caller), AST_FEATURE_DISCONNECT), - forwardsallowed); + forwardsallowed, ringing); /* The ast_channel_datastore_remove() function could fail here if the * datastore was moved to another channel during a masquerade. If this is * the case, don't free the datastore here because later, when the channel -- GitLab