I have Asterisk 11 and I have 95 different queues configured (for 95 different incoming numbers). Each queue has about 10 dynamic agents logged in.
Within each queue I can configure a ring strategy, but it only affects a particular queue. For example, if I configure “rmmemory”, the call takes into account how much time has passed since the last answered call for each agent … but of course, just look at that queue, if the agent has answered other calls from other queues it does not have it consider…
I don’t know if I explain myself …
Is it possible to establish a general ring strategy for the 95 queues, which sees them all as “a single queue”?
; shared_lastcall will make the lastcall and calls received be the same in
; members logged in more than one queue. This is useful to make the queue
; respect the wrapuptime of another queue for a shared member.
; The default value is no.
;
;shared_lastcall=yes
vijo.jose and a4business, Thanks for the comments … but what you write has nothing to do with the problem I am exposing.
I return to the problem: "Asterisk’s ring strategy seems to only affect the queue level. Therefore, if you have agents who are logged in in several queues, there is no way to propose a ring strategy that affects equally all agents ?, regardless of the queues they belong to.
David551, I already have that parameter set:
"
persistentmembers=yes
shared_lastcall=yes
updatecdr=yes
monitor-type=MixMonitor
"
Thanks David
That is, Asterisk recognizes that “agent 1” is that it has answered the last call in queue 1 (for example), and if a call comes in queue 2 (which is also “agent 1”) will forward the call to a different agent. is that so?
I think this you say is not going to work with multiple queues…
Looking at the documentation, asterisk indicates:
“leastrecent: ring interface which was least recently called by this queue”
Then, “…by this queue”, this means that it does not take into account the time since the last call between different queues, which is what I need.
shared_lastcall modifes that. Specifically, when setting the last call time, it trawls all the queues for the same interface, and sets the last call time for that interface in every queue, so when the queue comes to schedule an agent, the sort order of the interfaces is global, not local.
if (shared_lastcall) {
queue_iter = ao2_iterator_init(queues, 0);
while ((qtmp = ao2_t_iterator_next(&queue_iter, "Iterate through queues"))) {
ao2_lock(qtmp);
if ((mem = ao2_find(qtmp->members, member, OBJ_POINTER))) {
time(&mem->lastcall);
mem->calls++;
mem->callcompletedinsl = 0;
mem->starttime = 0;
mem->lastqueue = q;
ao2_ref(mem, -1);
}
ao2_unlock(qtmp);
queue_t_unref(qtmp, "Done with iterator");
}
ao2_iterator_destroy(&queue_iter);