How ACE selects which contact to route to agent

When choosing a contact to route to an agent there are several parameters such as priority for queue and/or contact, sorting order within queue, weight factor and so on, to consider. However, the contact’s media and direction does not affect this choice. There is no built-in priority between e.g. IVR calls and emails.

Selection algorithms

Each time an agent becomes ready a search is made to decide which, if any, contact is to be booked. This search is performed in stages where ACE first calculates which queues to look for contacts in and then compares contacts from these queues. The selection is only made in queues with distribution queue. Contacts in waiting lists and contacts called by ACE Dialer are not affected by this algorithm.

  1. First all the queues that the agent serves are produced.
  2. The queues with priority 1, and with distribution queue, are filtered out from the agent’s queues.
  3. From each of the queues with priority 1, data are produced for the contact at the top of the queue (according to the queue’s sorting order). This results in a list with data about contacts.
  4. If there is at least one contact in this list, one of them is selected for routing to the agent. The procedure for this selection is described below.
  5. If there is no contact in the list the procedure is repeated from step 2 in sequences for queues with priority 2 and higher.
  6. If all queues with all priorities have been checked without any contact found, no booking is made. The agent continues to be ready until a new contact is available.

From the algorithm above we get a list with contacts that all come from different queues with the same priority. Now we should select one of these contacts.

The following algorithm assumes that priority selection is used as method for the selection.

  1. Assume that the first contact in the list is the one to be selected.
  2. View the next contact in the list.
  3. Should this new contact have a higher priority than the earlier selected contact, this new contact is selected instead. Then continue from step 2 above until the list is empty.
  4. Should the new contact have a lower priority than the earlier selected contact, the earlier contact is still selected. Then continue from step 2 above until the list is empty.
  5. The new contact has the same priority as the earlier selected contact. Compare the adjusted queue times for the contacts according to weight factor, and select the contact with the highest value. Then continue from step 2 above until the list is empty.
  6. When the list is empty, the last selected contact is returned.

The Queue time selection method works in the same way but does not regard the priority of the contacts.

Basics about sorting order

To select a contact within one queue is normally no problem. But to select one of several contacts from different queues can be more difficult. As the queues can be sorted in different ways it is difficult to find a simple principle to create justice between queues in all kinds of situations. There are two methods in ACE to tackle this - queue time selection and priority selection. The usePriorityContactSelection system parameter rules which one to use.

All contacts in a queue are always sorted in order for ACE to know the order for them to be delivered. As a consequence of the introduction of the priority selection method, the process for sorting contacts in ACE has been altered. Contact sorting is also ruled by the usePriorityContactSelection system parameter.

The following table describes the available options.

Sorting order Priority selection

usePriorityContactSelection = 1

Queue time selection

usePriorityContactSelection = 0

prio Sorting primarily by priority and then by queue time. Sorting primarily by priority and then queue time.
routeReqTime
  • Sorting by queue-time within the queue.
  • Sorting primarily by contact priority when different queues with same queue priority compete for an agent. If the first contact in the different queues respectively have the same contact priority, the queue time will decide which contact will be routed to an agent, when an available agent appears.
Sorting by queue time.
dateTimeStart Sorting primarily by priority and then by start time for ring out. Sorting by start time for ring out.
dateTimeStop Sorting primarily by priority and then by stop time for ring out. Sorting by stop time for ring out.
none No sorting. No sorting.

Some of these sorting order options are only suited for specific types of queues:

  • dateTimeStart relates to contacts of the callback or campaign type.
  • dateTimeStop relates to contacts of the callback type.
  • none should be used with caution. Could cause problems if mixed with queues with another sorting order. You do not have these problems for waiting lists.

For callback records, ACE initiates the queue time to start from start time for ringout. This is done in order to, i.a. for collaborating queues, be able to transfer acquired queue time from IVR. This means that the routeReqTime sorting method gives the same effect as the dateTimeStart sorting method.

Priority for contacts

The priority of a contact can be crucial for its processing in the queues and waiting lists. The priority of a contact is stored in a contact data key.

Examples of how to set priorities for the various contact types:

Incoming calls
For IVR calls that are not given priority in any other way, priority 5 is used. The priroty can be specified in the routing request (routeReq) from IVR.
Incoming email
For emails that are not give priority in any other way, the priority 5 is used. All methods used to extract contact data from an email can also be used for specifying the priority of the contact. Examples of these methods are pattern matching and the open interface for email.
Outbound calls
The prority for oubound calls are set to the value that the callback or campaign record is given in the database.
Chat
For chats that do not get their priority in another way, priority 5 is used. The priority can e.g. be set in the routing request (chatStartReq) from ACE Chat Engine.

External calls made, external incoming calls, enquiry calls and calls agent-to-agent have no defined priority. As they are not queued, this is of no consequence.

Priority can be set in various parts of an ACE solutions

The following list shows examples of what should be taken into account regarding priority assignment:

Incoming calls via IVR
The IVR can be configured to assign priority to contacts. The priority can set in various situation, for example when a calls arrives to the IVR. The priority can also be set when a call is rerouted as no agent answered the call.
Open interface for callback
Records created via the interface for callback are always given a priority that is then used when the record is called.
Adding callback via IVR
The IVR can define priority for callback created from an incoming call.
Adding callback in ACE Agent
This is done via Functions | Schedule new contact.
Adding callback in ACE Admin
This is done via the Media | Outbound telephony | Callback records menu choice.
Importing campaign records
Records imported via ACE Admin are always given a priority that is used when the record is called.
Treatment or rule
Priority change for a campaign record is made via a treatment or rule in ACE Admin.
Routing algorithms
Priority can be set in the customer unique routing algorithms, but this is not recommended.
Pattern matching for emails
Priority can be set as a result of a patternmatching.
Open interface for email
Priority can be set in certain customer unique functions handling email.

Choose selection method for contacts

The priority selection method is the method normally recommended over the older queue time selection method.

When using the priority selection method you should plan for how to define priority for the contacts that will be processed by the ACE system. Since the priority selection method always considers the priority of the contacts you must make sure that all contacts get the relevant priority. Should priority for contact be unimportant you must make sure that all contacts get the same priority.

Queue time selection

Queue time selection (used if usePriorityContactSelection = 0) uses the queue time for the contacts to compare contacts from different queues. Attention is also paid to the weight factor for the queue where the contact is. This method works very well for queues sorted by queue time. For queues sorted by priority there may be some problems.

An example:

A high priority contact then ends up ahead of contacts with longer queue time but will not be selected until having a longer queue time than the contacts at the top of other queues.

Priority selection

Priority selection, used if usePriorityContactSelection = 1, considers the priority of the contacts when comparing contacts from different queues. For contacts with the same priority the method works just like queue time selection. When priority selection is applied sorting for queues will be changed to make all queues to be sorted primarily by priority.

ACE solutions using different priorities for contacts should use the priority selection method. Note that queue priority, mentioned under Prio in table above, is not affected by the usePriorityContactSelection system parameter.