Routing Rule Configuration

A routing rule is a set of conditional instructions the system follows to determine the best destination for a call and how calls are prioritized. For example, you can configure a rule to route a call to:

The agent who has the most qualified skill set to handle the call.

The agent who has not taken a call for the longest period.

The first available agent.

Ivanti Voice comes with one pre-configured default routing rule called the Generic skill-based matcher (refer to Generic Skill-Based Routing for information about how this type of rule operates), or you can create your own rules. You can also configure a rule to give priority to:

  • A call that has been waiting in the queue for the longest amount of time.
  • A call that is more urgent than other calls in the queue.
  • A call from a gold-level account.

You can create multiple routing rules. When selecting which routing rule to apply to each call, the system analyzes the following:

Criteria you establish in the routing rule configuration.

Information the voice application provides about the call, which can consist of caller identification information, the reason for the call, etc. (for information on voice applications, refer to Voice Application Design).

Agent configuration, including each agent’s skill set.

There are two ways to create routing rules:

Use the Application Builder to create a routing rule within a voice application by using the Route to Agent block (refer Route to Agent Block for details).

Create routing rules on the Routing Rules page (in the Management Portal, click Agents/Skills/Services > Routing Rules), then specify the desired rule in the voice application using the Route to Agent block.

Routing rules created on the Routing Rules page can be used by multiple voice applications; a routing rule created within an application in Application Builder can only be used by the voice application in which you create the rule.

Configure Routing Rules

Routing rules consist of one or more time intervals, referred to as escalation intervals, each containing a set of criteria for routing calls during that interval.

Each interval contains a default set of criteria:

Customer Time In Queue - The total time the caller spent in the queue during a single call.

Agent Idle Time - For an agent in the Ready, Not Ready, or Reserved states, the Contact Center server calculates idle time as the amount of time since the agent was last in the After-Call Work state. If the agent has not yet been in the After-Call Work state, the idle time is the amount of time since the agent logged in. The idle time resets to 0 when the agent logs into the system or enters the Busy state. The idle time begins to increment again when the agent leaves the After-Call Work state.

Priority - The priority value of the call; the system uses this value to gauge the urgency or critical nature of the call. If your business needs require call prioritization, you can use the Set Interaction Property block in a voice application to set a value (from 0 to 100) for an interaction property named Priority (refer to Set Interaction Property Block for details). This criterion can then be used in an interval of the routing rule.

The voice application uses the Set Interaction Property block to set the priority.

Skill Requirement Criteria

You can also add skill requirements to the set of criteria for an interval. This criteria is based on the skill levels assigned to agents, in range of 0 to 100 (it is convenient to think of them as percentages). If a skill is not defined for an agent, the skill level is assumed to be 0. Skills are arranged in skill groups.

If the voice application allows caller input pertaining to skill requirements, the call will be routed accordingly.

For each interval, a set of skill requirements, thresholds, default skills and importance can be specified. Often, you configure the intervals to lower the skill thresholds over time, possibly dropping entire skill requirements. For example, after 45 seconds in queue, you may simply want the call answered, so you drop the Technical skill requirement. Or, in a routing rule with multiple skills such as Technical and Language skills, after 45 seconds you may drop the Technical skills requirement and leave only the Language requirement.

For each skill selected by a call, a Threshold can be defined in the routing rules. This will effectively limit available Ready agents to those who have requested skill values set higher than the thresholds. For example: Language Threshold = 60 means the routing searches for an agent with the requested language skill value of at least 60.

A threshold is set per skill group rather than per actual skill, because it is the skill group which is chosen in the voice application.

Criteria Importance

The criteria within each interval is listed in the order of Importance (highest to lowest) - a value you assign to each criterion when configuring the rule. The system uses this information to determine which call gets priority and which agent gets the call during each escalation interval in the rule.

Importance comes into play only if there are multiple agents for a call or multiple calls for an agent (for example, an agent who has just become Ready, with several calls in the queue). Importance is used to find the best possible match.

The default set of criteria defined in the routing rule includes a level of importance for each of the following, which also enters into the overall calculation:

Skill Requirement Importance - This importance factor controls how much weight is given to the skill set of the agent. The importance factor is multiplied by the agent skill level. If there are multiple skill requirements in an interval, the algorithm calculates the sum of the products derived by multiplying the importance factor by the skill level for each skill requirement.

Customer Time In Queue Importance - This importance factor controls how much weight is given to the length of time a target has been queued vs. the call priority importance set, when choosing the next call to be delivered to the next available agent. The importance factor is multiplied by the time in queue for each call, expressed as a percentage. The call which has been in queue longest will have a normalized time in queue of 100, and all other calls will be represented as a percentage of the time in queue for that call.

Agent Idle Time Importance - This importance factor controls how much weight is given to the length of time an agent has been ready vs. the importance of the skill set match, when choosing the next agent for this campaign. The importance factor is multiplied by the agent idle time, expressed as a percentage. The agent who has been idle the longest will have a normalized idle time of 100, and all other agents will be represented as a percentage of that agent’s idle time.

Priority Importance - This importance factor controls how much weight the call’s priority will be given when determining which call will be selected for the next available agent. The importance factor is multiplied by the value of the priority interaction property set in the voice application.

Weight Calculation

To find the best match, the system first checks required skills (if the routing rule contains this criteria). If an agent’s skill level is lower than the threshold value for at least one skill in the rule, the agent is excluded as a match for the call. If agent skills are equal to or higher than the threshold value, the system uses agent skill level and skill importance, customer time in queue and its importance, idle time and its importance, and call priority and its importance to calculate the weight, which is a number that represents the best match between a single agent and a single call. The following equation is the calculation performed by the system:

where:

∑(Skill(i) * IFactorSkill (i)) is the sum of the products derived by multiplying the agent skill level by the skill importance value set for that skill, for as many skill requirements as are defined in the interval.

TIQ * IFactorTIQ is the call time in queue multiplied by the time in queue importance value set in the interval.

IdleTime * IFactorIT is the agent idle time multiplied by the idle time importance value set in the interval.

For the purposes of this calculation both time in queue and idle time are expressed as comparative percentages; for example, given that 2 calls are in the queue, one for 60 seconds and the other for 30 seconds, the time in queue for the first call will be 100, the second call 50. The same for idle time: if an agent has been idle for 2 minutes and another has been idle for 30 seconds, the idle time is expressed as 100 and 25, respectively.

Priority * IFactorP is the call priority (the value of the priority interaction property set in the voice application) multiplied by the priority importance value set in the interval.

Criteria importance values set to 0 in a routing rule interval will not affect the weight calculation.

The higher the importance value of the criterion (compared with the other criteria in the interval), the less likely it is that criteria of lower importance will be considered. To achieve this result, it is recommended that importance values be set in powers of 100 (for example, 1, 100, 10000).

The use of powers of 100 in importance values for skills, for instance, means the most important skill group is of primary consideration, since the difference between the importance values is so great. However, if the difference between skill importance values is less, then the skills with lower importance values will also be considered.

In some cases, you may want the differential to be less, since some skills may offset other skill deficiencies. For example, in a given interval, language importance is set at 100, product importance is set to 300. That causes an agent with language skill level of 100 and product knowledge of 30 to be equal to an agent with language skills of 7 and product knowledge of 61 (using the weight equation: (100 x 100) + (300 x 30)/100 + 300 = 47.5 vs. (100 x 7) + (300 x 61)/100 + 300 = 47.5, assuming for this example that all other variables in the equation are 0).

Call Prioritization

You may want to create routing rules that give priority to certain calls in the queue, causing those calls to jump ahead of other calls in the queue. To achieve this, in the voice application, use the Set Interaction Property block to create an interaction property called Priority and assign the property a value between 0 and 100. For example, you might look up a customer’s SLA Priority using a Search block, and, based on the results, if the customer is Gold assign a Priority of 100, Silver assign a Priority of 50, and Bronze assign a priority of 1.

In the routing rules, give the Priority Importance setting a value of 100 and the Customer Time In Queue Importance setting a value of 1. This will reorder all calls by priority first and secondarily by time in queue.

Escalation Interval Time Frame

Each escalation interval is labeled with a time frame indicating where the interval occurs in the sequence. For example, typing 30 in the field to the right of the Last Interval - infinite text in the first interval results in a new label: Escalation Interval 1, ending at 30 seconds (from the time the call entered the queue), which indicates this interval is the first and ends after 30 seconds. Typing 45 in the field to the right of the Last Interval - infinite text for the second interval results in a new label: Escalation Interval 2, ending at 45 seconds (from the time the call entered the queue), which indicates the escalation interval begins after the first interval concludes, and ends 15 seconds after the first escalation concludes (total duration for the caller in queue is 45 seconds). Leaving the field at Last Interval - infinite -1 indicates the interval occurs at the end of the sequence and does not end until the caller hangs up.

At least one escalation interval must be defined. If the last escalation interval has a finite end time (that is, not -1, which designates an infinite end time), upon reaching the limit, the call will leave the queue with a No Matching Agents result code.

Skill-Based Routing: Common Approaches

If you decide to use skill-based routing, there are four possible scenarios you may want to consider:

Generic Skill-Based Routing - Using skill groups to route calls by agent skill level and/or a service type.

Group-Based Routing - Skill groups are created using agent group names as skills to enable you to route calls to the desired agent group.

Priority-Based Routing - Using skill groups to represent customer type (or account type).

Specific Agent-Based Routing - Routing to a specific agent.

Generic Skill-Based Routing

You can use skill groups to route calls by agent skill level and/or a service type (in this case, the skill in the skill group you create would be a service - refer to Services for more information about services).

If you create a services skill group (such as the Service Type skill group in the table below), skills in that skill group must have the same names as the services created on the Services page (in the Management Portal, click Agents/Skills/Services > Services) so the skill group will double as a call’s Service folder designator for statistics, allowing you to report on calls routed by skill.

  • Skill groups with skills must be created first. For example:

    Skill Group

    Skills

    LanguageEnglish, Spanish
    ProductMicrowave, Refrigerator
    Service TypeSales, Support
  • Agents must be assigned skill values 0 to 100.
  • A voice application must be modified to select skills from skill groups. This is usually done by having Request Skill blocks on each of the Menu block branches, then accessing the Route to Agent block.
  • In the Route to Agent block, routing rules must be specified by either selecting the routing rule you created on the Routing Rules page (in the Management Portal, click Agents/Skills/Services > Routing Rules) or by creating routing rules within the block. The importance level of the skills in the routing rule may diminish with each escalation interval. For example, you may create a rule with three intervals:
  • In the first interval, the system would look for the best possible agent match within the first 15 seconds, with agent skills assigned the highest level of importance.
  • Within the next 45 seconds, the second interval would be configured to find an agent with a less stringent skills match (maybe sacrificing product knowledge in favor of adequate language skills).
  • After the caller has waited 60 seconds (the total time of the first two intervals), the third interval would specify time in queue as the highest priority and the system would search for any available agent.

Group-Based Routing

For group-based routing, a skill group can be created, with agent group names as skills. For example, if you have created agent groups called Support Group and Sales Group, then create a skill group called Agent Groups containing the skills Support Group and Sales Group. Then set the skills for all support agents at: Support Group = 100 and Sales Group = 0, and for all sales agents at: Support Group = 0 and Sales Group = 100.

In the routing rules, the skill group Agent Groups must be used with the threshold set to 1. This enables you to limit the agents considered for a call to a specific group. To enhance this scheme, varying skill values could be used from 2 to 100 to denote how good a particular agent is within that group.

Priority-Based Routing

Using priority-based routing causes some calls to jump ahead of other calls in the queue. One way to achieve this is by creating a skill group using priority levels as skills.

For example, first you can create a skill group called Customer Level containing skills Gold, Silver, and Bronze. Agents are then assigned values of skills in order of importance; for example, Bronze = 30, Silver = 60, Gold = 90. Then, in the routing rules, put the skill group Customer Level above Customer Time in Queue by giving it a higher importance value. This will reorder all calls by priority first and secondarily by time in queue. To enhance this scheme, skills values can vary from agent to agent, so comparisons can easily be made within the context of the varying customer levels. For example, you may set skill levels per customer type = Bronze 1-30, Silver 31-60, Gold 61-90. If John is good at handling Bronze-level callers and Peter is good with Gold-level callers, then John’s Bronze skill will be set to a value greater than Peter’s Bronze skill and John’s Gold skill value will be set lower than Peter’s Gold skill.

Specific Agent-Based Routing

Occasionally, you may have a need to route calls to a specific agent (for instance to a specific account owner or to the supervisor handling escalation of difficult calls), rather than to a group of agents with varying skill levels. To achieve this, in the voice application, the interaction property AssignedAgentID must be set to that agent’s login name before sending a call into queue (this can be done using the Set Interaction Property block, followed by a Route to Agent block to enable the system to execute a conditional exit, should the agent be unavailable). In this case, all routing rules are ignored and the call waits for that specific agent.

In the voice application, you may want to create a contingency in the event the specific agent is not available to take the call. To achieve this, use the Custom JavaScript Code block to remove the AssignedAgentID property from consideration: objAppCtx.Config.Item("Interaction").Attributes.Delete("AssignedAgentID"; Follow this block with another Route to Agent block containing the routing rule needed to get the call to an appropriate agent. Or, you can just send the call to the agent’s voice mail using the Connect Call block.

Create and Configure Routing Rules

The following procedure contains examples for routing rule configuration.

To Create and Configure a Routing Rule:

  1. In the Management Portal, click Agents/Skills/Services > Routing Rules. On the Routing Rules page, type the name of the routing rule in the empty field at the bottom of the table. There are no naming restrictions.
  2. Click the Add button. The screen refreshes and the routing rule appears in the table.
  3. To configure the routing rule, click the link in the Rule Name column. The Routing Rules properties page opens.
  4. In the Rule Name field, you can replace the existing name with a new name for the routing rule, if needed. The new text you enter is red. Click the Update button next to the field - the text turns black.

    If you change the routing rule name after the rule has been created and included in a voice application, the name change does not change the name of the routing rule in the voice applications that use the rule. Therefore, if you change the name of a routing rule, modify all voice applications using that routing rule to reflect the name change.

  5. Click the New interval button. A default set of criteria for the interval displays: Customer Time in Queue, Agent Idle Time, and Priority.
  6. Change the Importance value for the Customer Time in Queue, Agent Idle Time, and Priority to establish the desired importance (the criterion with the highest Importance value will be at the top of the list after the Update button is clicked). For example, if, for this interval, Agent Idle Time is most important, give it the highest importance rating.
  7. Click the Update button (either the one just above the interval or the one at the bottom of the page).
  8. To add a skill requirement to the interval, click the Add Skill Requirement button. The New skill requirement dialog box opens.
  9. Select a Skill Group.
  10. Select a Default Skill.
  11. In the Threshold text box, type a skill value the system will search for when matching an agent to a call. For example, if you type 80, the matcher will look for an agent with a skill level of 80 or above for the specified skill.

    The Threshold value is the minimum skill level an agent must have to be considered for call distribution. In order to receive the call, the agent’s skill value for this skill must equal or exceed all thresholds specified for the interval.

  12. In the Importance text box, type a value.
  13. Click Add. The skill requirement values are now part of the criteria for this interval. The criteria for the interval are listed in the order of importance, the highest at the top of the list.
  14. Repeat steps 5 through 13 to create additional intervals for this routing rule, if needed.
    • If you create multiple intervals for the routing rule, you will need to use the interval field at the top of each interval to establish the time frame for the progression of intervals.

    Example: The first interval created specifies skills as the most important criteria and have a time frame ending at 30 seconds; during that 30 seconds the system will route the call to the first available agent with a skills match. After 30 seconds, the second interval, which specifies agent idle time as the criteria of highest importance and has a time frame ending at 50 seconds, will activate; during that 20 second interval, the system will route the call to the agent who has been idle the longest. After 50 seconds, you may simply want the call answered, so the third interval would have time in queue as the highest importance rating; the system will route the call to the next available agent regardless of skills or idle time. If it is also the last interval of the rule, the interval field would remain at the default: Last Interval - infinite = -1.

  15. Once all intervals for the rule have been created and the interval time frames specified, click the Update button at the bottom of the page, then click the Commit Changes button. This configuration takes effect immediately.

Delete Routing Rules

Deleting a routing rule prevents you from using the routing rule in future voice applications; however, the deletion does not remove the routing rule from the voice applications that currently use it.

To Delete a Routing Rule:

  1. On the Routing Rules page (in the Management Portal, click Agents/Skills/Services > Routing Rules), click the red x icon next to the routing rule you want to delete. A confirmation dialog box opens.
  2. Click OK. The screen refreshes and the routing rule is deleted.
  3. Click the Commit Changes button to enact the change.