[asterisk-dev] Queue realtime and members ordering

Leandro Dardini ldardini at gmail.com
Mon Feb 9 16:17:10 CST 2015

I am back to try to fight with the problem highlighted few years ago

In short, when using realtime queue members, it is impossible to use
ordered ringing method because it is impossible to define the ordering of
agents and the alphabetical ordering is used.

I side stepped the problem by using custom member name like Local/AG-000-56
and Local/AG-001-23 and so on to make agent 56 to be ring before agent 23.

Unfortunately this solution has the nasty problem of letting wrapuptime to
not work across multiple queues when using the shared_lastcall. Member 56
can be Local/AG-000-56 in one queue and Local/AG-002-56 in another queue.

A solution can be to change the way ast_load_realtime_multientry works, by
providing the ordering field, maybe adding a second SENTINEL item defining
it, so in

find_load_queue_rt_friendly(const char *queuename)

instead of

member_config = ast_load_realtime_multientry("queue_members", "interface
LIKE", "%", "queue_name", queuename, SENTINEL);

we can use something like

member_config = ast_load_realtime_multientry("queue_members", "interface
LIKE", "%", "queue_name", queuename, SENTINEL, member_order, SENTINEL);

with member_order to contain the ordering of the members

obviously all functions and subsequent structures need to be changed to
accept the new format

Do you think it is doable? will such change be accepted? do you think there
can be a better way?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150209/48465a4a/attachment.html>

More information about the asterisk-dev mailing list