i.e. 1/3 Q
This is not something easily supported by the API and we've had to use caching to get acceptable performance, but even then it's not great. Here's our pseudo code solution:
- Code: Select all
make list of account_id's for queues
get member list for each queue
cache relation for each user to the queues they belong to
refresh cache daily
on call to idle page
get cached list of queue id's for the user
iterate list and call switchvox.callQueues.getCurrentStatus() per queue
iterate result and find the queue member making the request
record their login status
build response string
Iterating the extensions, and building the cache is slow but allows for better performance on the idle page, but even with that the calls to getCurrentStatus take a while (5-10 seconds each). Does anyone have a way to do this faster? Can i suggest a couple of optimized API methods to create this functionality:
switchvox.users.queues.getList - takes an extension account_id, and returns a list of account_id's of the queues this extension is a member of, including extension groups the user belongs to that are members.
switchvox.extensions.callQueues.memberStatus - takes an account_id for the queue, and account_id for the member, returns login status, login type (login vs. permanent), maybe member type (ext., ivr, ext. group, etc.) as well.