SYSTEM AND METHOD FOR ENHANCED SKILLS BASED ROUTING

Abstract: A method and system for providing enhanced skills based routing of telephone calls is provided. The enhanced skills based routing database. In a call center, an automated call distributor queries the skills based routing program for an appropriate agent console to service a received call. The skills based routing program determines the required product skills for the received call and determines the appropriate agent console to service the call. The determination of an appropriate agent console is based upon the proficiency system comprises a skills based routing program and a skills based routing agents for the required product skills. In one embodiment, the proficiency levels for the various agents are stored in a skills based routing database and retrieved as necessary. The proficiency levels of the agents can take into account efficiency and throughput as well as training on particular call center products.

Description: SYSTEM AND METHOD FOR ENHANCED SKILLS BASED ROUTING TECHNICAL FIELD The present invention relates generally to telephone call processing and, more particularly, to routing calls to telephone operators based upon skills and availability. BACKGROUND OF THE INVENTION Telecommunications carriers continually strive to provide increasingly faster and more reliable services when a customer places a telephone call. Most telephone calls are direct dial calls, that is, the customer places the call without expecting operator intervention and the call is connected without operator intervention. However, certain telephone calls require operator intervention for one reason or another. Generally speaking, calls that require operator intervention can be grouped into (1) operator service calls, (2) directory assistance calls, and (3) call center application calls. An operator service call is a call that typically requires billing assistance. For example, a customer may need to orally provide billing instructions to an operator, such as when the customer dials "0" followed by the number to be called (e.g., 0-555-555-5555). A directory service call is a call that typically includes a request for a phone number. A call center application call is a call that invokes the services of the call center application. A call center application is an operator service provided on behalf of (typically) an outside vendor. A call center is, broadly speaking, all of the equipment, operators, buildings, property, etc., that handles inbound and outbound calls at a particular location. A call center application typically provides products and services based upon the telephone number dialed (typically an 800 number). For example, a cookie company may pay fees to a telephone company so that a call center will handle cookie orders via an 800 telephone number. The cookie company receives orders from the call center and is responsible for filling the orders. A telecommunications carrier also typically services calls that may require automated intervention. Resources such as automated voice recognition modules may be allocated to service a call. For example, "800-COLLECT" phone calls are serviced by an automated system that utilizes voice recognition modules. When a call that requires operator intervention is dialed, it is important that the call be quickly routed to an operator who is able to assist the caller. All of the examples cited require certain, and perhaps, different skills from the operators. For example, a call that is originated in France should preferably be routed to an operator who speaks French. Also, a call that originates with a different long distance telecommunications carrier should be routed to an agent who has some knowledge of that long distance telecommunications carrier. Also, an operator-assisted collect call requires different handling procedures and knowledge from a directory assistance call, which requires the ability to switch the call to the appropriate phone number recording. Similarly, when a call that requires automated intervention is dialed, it is important that the call be quickly routed to system components with the proper resources, e.g., automated voice recognition modules. For ease of description, operators and automated resources will be referred to as "agents" and calls that require operator or automated intervention will be referred to as calls that require "agent intervention." Figure 1 illustrates a block diagram of the logical components of a typical telecommunications call center, which receives and routes telephone calls. A typical call center routes calls that require agent intervention through an Automated Call Distributor (ACD). An ACD, for example, ACD 101, is a specialized computer system that receives calls and routes the calls to agents based on routing instructions. For the purposes of this invention, an ACD includes any intelligent call switching or distribution mechanism such as a switch, a switch controller, or a device marketed by calling it an "ACD." The ACD 101 is generally coupled to a switching network 103 through a voice or data channel 106, to a call processing computer system (CP) 102, which provides the actual routing instructions, and to agent consoles 104 through voice or data channels 105. The agent consoles 104 receive calls that require agent intervention from the ACD 101. The call processing computer system 102 may comprise an adjunct computer system that provides intelligent call processing or may be integrated into the ACD 101. The components of the call center of Figure 1 are connected by some data communications transport, such as an Ethernet LAN 107, WAN, SS/7, X.25, ATM or other similar transport. When the ACD 101 receives a call from the switching network 103 through the voice or data channel 106, the ACD 101 notifies the call processing computer system 102 that the call has been received and provides information that describes the call. The call processing computer system 102 then generates routing instructions based on the call information and returns the routing instructions to the ACD 101. The ACD 101 then routes the call as instructed to one of the agent consoles 104 via a data or voice channel 105. The operator who is logged onto the agent console (or resource that is connected to the console) then services the call. Generally speaking, the call routing that is determined by an intelligent call processing computer system such as CP 102 is based upon the dialed number or other fields of the call description information, which specify a type of product for which agent services are required. Certain operators are trained to service particular products and, thus, not all agent consoles can be used to service all phone calls that require operator intervention. Also, some call center resources are available via certain data or voice channels, but not others. Hence, when no agent console is available that can service certain calls, the ACD places the calls on queues to wait for a particular set of operators or resources to service the call. Figure 2 is an example block diagram of the internal logical architecture of an ACD. The ACD 201 contains a central processor 202, inbound ports 204, which are connected to the switching network, and data communications ports 208, which are connected to agent consoles. The central processor 202 implements several logical components, which include a preliminary queue 203 and call queues 205, 206, and 207. The preliminary queue 203 is used to logically track calls before they are switched to a port or before they are queued to wait for a group of agents or services on one of the call queues 205, 206, and 207. The preliminary queue 203 and call queues 205, 206, and 207 are data structures within the ACD that are used to logically track the phone calls. A call placed on one of these queues is typically connected to a single data or voice channel used to hold the call (e.g., a holding channel that plays background music). The calls are not "switched" (in the physical sense) to another channel until they are assigned an actual port. Each agent console that is part of the call center typically has a dedicated link to one of the voice communications ports 208 on the ACD. These ports are logically grouped together based upon the products (types of calls) each agent console services. Further, each group of ports is assigned a call queue. All of the agents grouped together by virtue of their ports being connected to a shared queue are considered to be trained to service the product represented by that group. For example, Figure 2 shows three groups of ports, Group 1 , Group 2, and Group 3, each corresponding to call queues 205, 206, and 207, respectively. If call queue 205 (Call Queue 1) and Group 1 represent directory assistance calls, then all operators who have logged into the agent consoles connected to the ports grouped together as Group 1 are assumed to be trained to handle directory assistance calls. Note that a port (hence an agent console) is only assigned to a single group (and queue) at any one time. Thus, once assigned, an agent console can only service the products represented by the assigned group, even if the agent that is logged on is actually trained to service other products. In Figure 2, when the ACD 201 receives a routing instruction for a call from the call processor (e.g., CP 102 in Figure 1), the instruction typically includes a designation of a group of ports (agent consoles) that can service the call. Since each group represents a different product, the call processor 102 can determine the group designation once the requested product is determined. When an agent console of the designated group is available, the ACD 201 simply switches the inbound phone call from a holding channel to the channel corresponding to the port attached to the available console. The preliminary queue 203 is then updated to reflect that the call is no longer waiting to be assigned a port. Alternatively, when no agent console of the designated group is available, the ACD 201 logically shifts the call from the preliminary queue 203 to the proper call queue 205, 206, or 207, that corresponds to the designated group. When an agent console that belongs to the designated group becomes available, the call is switched from the holding channel to the channel that corresponds to the port attached to the available console. As a result, the efficiency of the call center and the reliability of the service provided to the customer is greatly influenced by the amount of time a telephone call spends on a call queue waiting for a particular group of agent consoles with appropriate agents. As call centers become larger and the products that they provide become more complex, the cost of training operators on multiple products increases. Each new product potentially requires a new group of dedicated ports and associated queue management. Also, the cost of duplicating skills amongst agents to ensure that an agent is available and trained to handle a customer's call in an acceptable time frame is high. If a call center cannot route a telephone call in a timely manner, the customer will become frustrated at the wait and may hang up. Further, if some portion of the call center computer systems fails, then calls may be forced to be routed to a default operator who may not even speak the language of the customer. It is also difficult to manage peak traffic levels. To provide reasonable response time, call centers are typically required to staff for the highest potential traffic volumes at a given time instead of for average traffic volumes. Also, not all operators trained in a particular product have the same level of skill and throughput. Subsequently, operating costs in such a system are quite high because resources, including operators, are not utilized effectively to maximize the overall throughput of the call center. SUMMARY OF THE INVENTION The present invention increases the overall throughput of a call center by providing an enhanced call routing method and system for routing telephone calls to agent consoles based upon the skills required to service a requested product and the proficiency of available agents. The method and system comprises a skills based routing program. The skills based routing program resides on or is connected via a data communications channel to an automated call distributor. Upon receiving an incoming call, the automated call distributor queries the skills based routing program for an agent console to which to route the received call. The skills based routing program determines a required set of product skills from a description of the received call, which description may be augmented by operator or automated intervention procedures, such as an automated menu driven selection program. The skills based routing program then determines an available agent console that is preferred to provide the determined set of product skills. In one embodiment, the skills based routing program uses an adjunct intelligent call processing computer system to determine the required set of product skills. Once an agent console is determined by the skills based routing program, an indication of the agent console is returned in a routing instruction to the automated call distributor. The automated call distributor then routes the received call directly to the indicated agent console for processing. According to one embodiment, the skills based routing program determines which agent console is preferred to provide the determined set of product skills based upon the proficiency level of each agent that is able to provide the required set of product skills. Proficiency levels can correspond to the efficiency and throughput of an agent as well as training. Because many agents may be able to service a product but at different proficiency levels, the skills based routing program can optimize the quality of the service provided to the customer while minimizing the time a call is held waiting on a queue by determining whether a less proficient agent is available to service the call when the more proficient agent is unavailable. In another embodiment, the skills based routing program determines an appropriate agent console based upon proficiency levels, but without availability information. The skills based routing program then returns a list of all agent consoles whose agents have proficiency in the set of product skills required by the received call. The automated call distributor then determines an available agent console from this list. In another embodiment, the skills based routing program uses dynamic queues to aid the routing of calls. The automated call distributor implements a set of queues by product skill set and further by proficiency. Agent consoles are then assigned to any number of these queues based upon the proficiency and training of their agents in the different sets of product skills. Upon receiving a call and determining the required set of product skills to service the call, the automated call distributor places the received call on the appropriate queue for the determined set of product skills based upon a chosen level of proficiency. In yet another embodiment, the automated call distributor moves the received call amongst different queues, based on the different proficiency levels for the determined set of product skills, until an available agent console is located. In another embodiment, the skills based routing program is used with prior ACD queuing methods. In this embodiment, the skills based routing program manages product skill determinations for received calls. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 illustrates a block diagram of the logical components of a typical telecommunications call center, which receives and routes telephone calls. Figure 2 is an example block diagram of the internal logical architecture of an ACD. Figure 3 is an example block diagram of a skills based routing system. Figure 4 is an overview block diagram illustrating the functions of a skills based routing system in providing enhanced skills based routing instructions. Figure 5 is an example block diagram of the internal logical architecture of an ACD that uses the present invention. Figure 6 is a table of an example set of database information for multiple agents trained at different proficiency levels on multiple products. Figure 7 provides an overview flow diagram of a typical message loop of a skills based routing program that serves as a gateway for messages sent between the ACD and agent consoles. Figure 8 is a flow diagram of a first method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing. Figure 9 is a flow diagram of a second method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing. Figure 10 is a block diagram of the relationship of queues to agent consoles based upon a dynamic queuing method. Figure 11 is a flow diagram of a dynamic queuing method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing. DETAILED DESCRIPTION OF THE INVENTION The present invention provides an enhanced call routing method and system for routing telephone calls to agent consoles based upon the type of call and the skills of agents available to service the call. The enhanced call routing system determines which agent console is available and has the best skills to handle the call and provides routing instructions that enable an ACD to route the call immediately to the agent console. Unlike prior systems, the call is not placed on a queue in the ACD to wait for an available agent from among a set of agent consoles designated to service only a particular type of call. Rather, in a preferred embodiment, the skills based routing system determines and assigns agent consoles to calls as needed, based upon proficiency, and does not provide routing instructions to the ACD until an appropriate agent console is available. This procedure eliminates any need for the ACD to maintain queues dedicated to particular types of calls. The enhanced skills based routing system can be used by itself to always route calls immediately to agent consoles or can be used, when no agent having proficiency in the requested product is available, in conjunction with prior methods that utilize queues. Enhanced skills based routing is based upon the skill required, as determined by the requested product (the type of phone call); which agents have that skill (training); the level of proficiency of each agent with respect to the required skill (ability); and the availability of the agent. The efficiency and throughput of each agent can be accounted for using different proficiency ratings for a particular skill. For example, two different agents may be trained to speak French but the first agent may speak French more fluently and thus be able to process calls originating in France faster than the second agent. In this case the first agent would be assigned a higher proficiency ranking than the second agent for servicing calls originating in France. The enhanced skills based routing system preferably first selects the first agent to service a call originating in France, but if the first agent is not available, the routing system preferably selects the second agent. This preference to use a less proficient agent may be maintained even when the second agent is more proficient in another language, especially an infrequently utilized language. Moreover, agent skills and proficiency levels can be designated and dynamically modified and routing algorithms can be dynamically modified to track traffic patterns and other call center management data. To implement this enhanced routing method and system, the present invention provides a skills based routing system. Figure 3 is an example block diagram of a skills based routing system. A preferred skills based routing system provides a skills based routing program, SBRP 301, and a skills based routing database, SBRDb 302. The SBRDb 302 comprises stored data and a database management facility. For the purposes of the present invention, the SBRP 301 and SBRDb 302 can be implemented as part of the ACD, as part of an adjunct call processing computer system that determines routing instructions, e.g., CP 102 in Figure 1, or as a separate computer system, as shown in Figure 3. Figure 3 shows a computer system 303, which comprises a central processing unit (CPU) 304, a display device (305), a memory 306, and other input/output devices 307. In an example embodiment, the SBRP 301 and the SBRDb 302 reside in memory 306 and execute on the CPU 304. One skilled in the art will also recognize that the SBRP 301 or the SBRDb 302 may be distributed across multiple systems and that the SBRDb 302 may reside at a location remote from the SBRP 301, or in any other such reasonable configuration. Figure 4 is an overview block diagram illustrating the functions of a skills based routing system in providing enhanced skills based routing instructions. The ACD 401 receives an incoming call from the switching network. The ACD 401 then sends a routing query with information that describes the incoming call to the skills based routing program SBRP 405. In determining where to route the call, the skills based routing program, SBRP 405, sends a skill query to the call processing computer system, CP 403, to determine what product skills are required to process the incoming call. The information that describes the incoming call may also be augmented by any known intervention mechanism, such as operator intervention or an automated attendant, e.g., an answering system that lets the caller choose one of several options. The call processing computer system 403 of Figure 4 can be any intelligent call processing computer system that is capable of providing routing instructions based upon data describing the incoming call. One such intelligent call processing computer system is described in copending U.S. Patent Application Serial No. 08/752,965, filed December 2, 1996, entitled "INTELLIGENT SERVICES NETWORK ADJUNCT PROCESSOR," which is hereby incorporated by reference. That patent application describes how a call processing computer system (a call processor) uses tables to categorize calls based upon the call information provided by the ACD in a routing query. For example, the call processor described therein determines the requested product (skill requirements) based upon the dialed telephone number. More specifically, the call processor determines whether the dialed number is an 800 number, or begins with a particular area code, the long distance origination carrier if the dialed number is a long distance call, whether the call is an international call, or the telephone number of the customer (an ANI). Returning to Figure 4, once the call processor 403 returns an indication to the SBRP 405 of the required product skills, the SBRP 405, based upon the SBRDb database 406 information, determines which agent would be best suited to service the incoming call and sends the appropriate routing instruction back to the ACD 401. In a preferred embodiment, the routing instructions are also based upon the availability of an agent, so that once the ACD receives routing instructions, the ACD can immediately forward the call to the appropriate agent console. The ACD 401 forwards the call directly to the agent console 404 that is indicated by the routing instruction. As mentioned, the SBRP 405 can reside in a separate computer system, in the ACD 401, or within the call processing computer system 403. The determination of the availability of an agent console and the various methods for determining the enhanced routing instructions are discussed in further detail below with reference to Figures 7-10. Figure 5 is an example block diagram of the internal logical architecture of an ACD that uses the present invention. The central processor 501 moves an inbound call, which has been placed on the preliminary queue 502, directly to the appropriate port 503 of the agent console that is indicated by the SBRP. In comparison with the diagram of the prior system illustrated in Figure 2, one can observe that there are no additional (group) queues in the ACD upon which the inbound call is placed. To implement the enhanced skills based routing system, each agent in a call center is assigned one or more skills (which correspond to products, i.e., types of phone calls). For each skill, each agent is assigned a level of proficiency in the skill. One skilled in the art will appreciate that the levels of proficiency provide a general mechanism for ranking agents based upon any criteria. This assignment of skills and proficiencies enables the SBRP to route a call preferably to the agent who is available and is most capable of handling the call. When such an agent is not available, the SBRP can then choose to route the call to an agent that is not quite as proficient or can choose to hold the call for some period of time until an agent with the desired proficiency level becomes available. This ensures that an agent's talents and training are leveraged to the greatest extent possible. Further, a call center can adjust the methods used by the SBRP to choose whether to wait for a particular agent or to continue with a less proficient agent, potentially even on a particular telephone call basis. For example, if directory assistance type calls in general have low processing times, then the SBRP would not want to send a directory assistance call to an agent less proficient in handling directory assistance type calls, especially if the less proficient agent is highly proficient in an international origin call that typically requires a large processing time. In this case it would be more efficient (more total call volume achieved) to wait for the agent most proficient in handling directory assistance calls. The wait for that agent would be much less than the time consumed by using a less than optimal agent to process an international call, if one should arrive while the directory assistance call is being processed. Thus, total call center throughput can be optimized by careful choices. In addition, ACDs can receive traffic flow status information updates from the call center. Algorithms can be incorporated into the SBRP to dynamically adjust the determination and assignment of available agents to respond to current traffic flow. Also, the call center can utilize individual capacities better by determining how many calls and what type of calls an individual agent can handle. In order for the SBRP program to select an appropriate agent console to service a determined product, the SBRP needs to track the proficiency of each agent for each product and the availability of all agents served by the ACD. In one embodiment, the proficiency information for each agent organized by product (skill) is stored in a database, such as the SBRDb 302 in Figure 3. One skilled in the art would recognize, however, that any method for storing skill and proficiency information could be used, such as arrays, hash tables, on disk storage, network storage, distributed storage, etc. Further, the updating of such information can be performed by the SBRP or by an external program capable of updating proficiency and skill information. Figure 6 is a table of an example set of database information for multiple agents trained at different proficiency levels on multiple products. For purposes of illustration, for each product (e.g., Product 1, Product 2, . . . Product n), each agent is assigned a proficiency rating. For the purposes of example, the table indicates each level of proficiency from 1 (lowest) to 3 (highest) for each agent. For example, for the type of phone call designated by Product 2, Agent 2 has the highest proficiency rating designated by a rank of "3." Similarly, Agent 3 has the next highest proficiency rating designated by a rank of "2." Agent 1 and Agent n have equivalent proficiency ratings of rank "1." In addition to proficiency information , the SBRP needs to track the availability of each agent in order to minimize the need to place an incoming call on a queue. In one embodiment, the SBRP monitors and forwards all data sent between the ACD and an agent console, acting as a "gateway" between each agent console and the ACD. Using this method, the SBRP can detect when a call is offered to an agent console by the ACD, thereby rendering the agent unavailable. Also, the SBRP can detect when a call is completed, thereby rendering the agent again available. Some alternative methods for monitoring agent availability information are for the ACD to send status updates to the SBRP program or to integrate the SBRP program directly into the ACD such that status data structures can be checked directly. Alternatively, the SBRP program can directly control the ACD and can monitor the status of all agents. One skilled in the art will recognize that any method for tracking status information could be utilized. Figure 7 provides an overview flow diagram of a typical message loop of a skills based routing program that serves as a gateway for messages sent between the ACD and agent consoles. For purposes of the present invention the term "message" is used to generically refer to an indication. The present methods can also be implemented using non-message based, or non-event driven software, e.g., using polling to determine the presence of a query. In step 701, the SBRP routine determines whether a call offered message has been sent by the ACD. A "call offered message" is indication that occurs when a call is switched to a port. If so, the SBRP continues in step 702 to mark the designated agent console as unavailable and forwards the message to the appropriate agent console. Otherwise, in step 703, the SBRP determines whether a call completed message has been sent by an agent console. If so, the SBRP routine continues in step 704 to mark the designated agent console as available and forwards the call completed message to the ACD. Otherwise, in step 705, the SBRP determines whether a call routing query has been received (typically from the ACD) and, if so, continues in step 706, else continues back to the beginning of the message loop to continue to receive and process messages. Other processing may also be performed. In step 706, the SBRP determines the skill requirements of the inbound call, which is described in the received call routing query. As discussed above, in a typical call center, this skill determination function is performed by an intelligent call processing computer system, which is typically an adjunct computer system that offloads processing from the ACD. Once the type of call, hence the required skills, has been determined, then in step 707, the SBRP determines which agent is best suited to service the call based upon the proficiency and availability of agents able to service the determined type of call. The SBRP then continues whatever processing is required and returns to the beginning of the message loop in step 701. The present invention provides several methods for determining the appropriate agent to service an inbound call, as called for in step 707 of Figure 7. In a preferred embodiment, the SBRP always returns an indication of an available agent console to the ACD, although the indication may be delayed when no appropriate console is available. According to this method, when a routing instruction is received, the ACD is assured that the inbound call can be placed immediately on the appropriate port for the indicated agent console knowing the agent will be available to service the inbound call. Using this method, queues assigned to dedicated groups of ports are completely avoided. This method is reflected in the architectural overview illustrated by Figure 5. A second method includes returning a list of all agent consoles that are proficient in a determined product and that may be available. Using this method, the SBRP makes little if no attempt to ensure availability of the agent consoles indicated. A third method involves the utilization of dynamic queues. According to this method, agent consoles are assigned to as many queues as reflect the skills and proficiencies of the agent. Any of these methods may be combined or may be implemented on top of an existing system that utilizes dedicated group queuing. Figure 8 is a flow diagram of a first method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing. In step 801, the SBRP consults a skills database, such as that shown in Figure 6, to determine which agent has the highest level of proficiency in the skills required by the type of product determined by the call processing computer system. In step 802, the SBRP determines whether this agent is available. If so, then the SBRP returns identification of this agent to the ACD. If it is determined in step 802 that the agent is not available, then the SBRP determines in step 803 whether there are additional agents with proficiency in the determined product and, if so, continues back to step 801 to determine the agent with the next highest proficiency rating, otherwise continues in step 804. Note that "next highest proficiency" indicates a choice to be determined by any selection algorithm, including algorithms tailored to weighing individual skills with traffic flow information (e.g., how many calls of a particular type are processed per minute). In step 804, the SBRP has determined that there are no agents proficient in the skills required for the product. The SBRP then holds the routing query in its own queue until one of the agents with proficiency in the determined product becomes available. Recall that the SBRP is notified when a call is completed. Hence, the SBRP is notified when one of the agents with proficiency in the determined product becomes available. The SBRP can then determine whether there are any calls holding that can be serviced by the newly available agent. Thus the SBRP can determine when step 804 is completed. Step 804 can also be implemented to wait until an agent at a particular proficiency level is available. Once an agent becomes available, an identification of the available agent console is then returned. For example, referring to the database table illustrated in Figure 6 above, if the SBRP receives a routing query from the ACD and the call processing computer system has determined that the product designated by the call is Product 2, then the SBRP would query the database table for agents having the skills required by Product 2. Since Agent 2 has the highest proficiency rating of rank "3" for Product 2, the SBRP would determine whether Agent 2 is available. If not, the SBRP would then try Agent 3, which has the next highest proficiency rating of rank "2." Similarly, if Agent 3 is unavailable, then the SBRP would try either Agent 1 or Agent n, both of which have been rated with the next highest proficiency rating of rank "1." In a situation such as that between Agent 1 and Agent n, where agents have equivalent proficiency ratings, any method for selecting between them can be used such as a round robin, random choice, queue, or any other type of selection method. There are several variations of the method illustrated by Figure 8, which can be used to minimize the time a query is held in a waiting queue and to optimize the proficiency of the service provided to the customer. For example, a step of setting a timer can be inserted after step 802. Using a timer, the SBRP can decide to hold the routing query for the timer period until an agent with a higher proficiency rating becomes available before trying (in steps 803 to 801) a next agent with a lower proficiency rating. During this timed period, it is preferred that the SBRP is repeatedly determining whether an agent with the higher proficiency rating is available. As discussed with reference to step 804, the SBRP, upon receiving notification that an agent console is available, determines whether the newly available agent console can service one of the calls being held on the waiting queue. Similarly, the SBRP can decide to implement a timed waiting period using a timer between certain levels of proficiency and not between others. For example, the SBRP can determine that only after trying two levels of proficiency will it set a timer to hold the query for a certain length of time before a lower proficiency rating is attempted. Also, the SBRP has great flexibility in determining which proficiency level should be re-tried when a timer expires. For example, if a timer is set after attempting to find available agents at two levels of proficiency, for example, proficiency levels 3 and 2, then the SBRP can decide to try the highest level of proficiency, which is level 3, or can continue at the current level which is level 2, when the timer expires. Many variations are possible and all reasonable variations are contemplated by the present invention. For example, when the SBRP queries the database for a level 3 agent and finds none available, it can set a timer. If a level 3 agent becomes available during that time, then the call is routed to the agent console that corresponds to that level 3 agent. Alternatively, if no level 3 agents become available prior to expiration of the timer, then the SBRP can query the database for an available level 2 agent. Then, if no level 2 agent is available the SBRP can set a second timer. Thereafter, if no level 2 agents become available prior to expiration of the second timer, then the SBRP can query the database for a level 1 agent. Alternatively, at the expiration of the second timer (when no level 2 agent was available), the SBRP can instead choose to look again for a level 3 agent, which may have been made available during the search for a level 2 agent. One skilled in the art will recognize that any combination for returning to any level of proficiency is possible. Figure 9 is a flow diagram of a second method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing. In Figure 9, it is assumed that the SBRP does not have accessible information regarding the availability of particular agents. Accordingly, the method of Figure 9 compiles a complete list of agents that meet the skill selection criteria for the ACD to try. Specifically, in step 901, the SBRP compiles a list of all agents proficient in the requested product, and returns this list (typically to the ACD). The method of Figure 9 orders the agents in the list according to their proficiency in the requested product. Thus, the ACD preferably tries each agent in the list in order until an available agent console is found. The method of Figure 9 could be implemented by providing subsequent lists of some maximum number of agents to the ACD until an available agent is found by the ACD. However, a preferred method provides one list of potential agents rather than multiple subsequent lists. This technique avoids delays due to competing requests for SBRP attention when servicing many phone calls. A third method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing utilizes a system of queues. However, in contrast to the queues of prior systems, the queues of this method are dynamic. Specifically, rather than an agent console being assigned to a single group having exactly one queue as exists in prior systems, preferably each agent console is a member of each group that corresponds to a product for which the corresponding agent is proficient. Figure 10 is a block diagram of the relationship of queues to agent consoles based upon a dynamic queuing method. The proficiencies for each product of each agent console shown in Figure 6 are reflected in Figure 10. For example, Agent 3 in Figure 6 has a top-level proficiency (3) in the skills required for Product 1, has medium proficiency (2) for the skills required by Product 2, and has some proficiency (1) for the skills required by Products 3 and n. The dynamic queue method would logically assign the agent console that corresponds to Agent 3 (via its port) on four different queues 1001, 1002, 1003, 1004 (the queues for Products 1, 2, 3, and n, respectively). The darker lines of Figure 10 correspond to the queue assignments for Agent 3. Further, it is contemplated that the queues may organize agent consoles in proficiency order. One embodiment utilizes a separate queue for each level of proficiency within the product. (This embodiment is illustrated in Figure 10). Another embodiment implements one queue per product but maintains proficiency information related to its assigned agent consoles. Thus, although still using queuing techniques, the method shown in Figure 10 is more cost-effective than prior systems because calls will correspond to a queue based upon the proficiency of an operator at different skills. Figure 11 is a flow diagram of a dynamic queuing method for determining an appropriate agent to service an inbound call based upon enhanced skills based routing. Specifically, in step 1101, the SBRP determines which agent has the highest level of proficiency for the product skill designated by the call processing computer system. In step 1102, the routine determines whether the agent is available and, if so, returns the identification of this agent to the ACD. Otherwise, the routine continues in step 1103. In step 1103, the SBRP places the call in a queue corresponding to the product and proficiency level. Optionally, a timer is set. In step 1104, the SBRP determines whether the call was serviced and, if so, returns, otherwise continues in step 1105. In step 1105, the SBRP determines whether there are additional agents having proficiency in the requested product and, if so, continues in step 1101 with the agent having the next highest level of proficiency, otherwise continues in step 1106. In step 1106, the SBRP begins again with a queue of choice and begins looking with the highest level of proficiency. One skilled in the art will also recognize that the variations of timers and selection methods discussed with reference to Figure 8 are also applicable here. Further, one could optionally place an unserviced call on a single general queue after some period of time has elapsed. Also, the agents could update their skills dynamically and thereby cause the logical queue assignments to be updated. Further, one skilled in the art will recognize that the queuing method of Figure 11 can be used in conjunction with the other methods illustrated in Figures 8 and 9. It is also envisioned that the methods of Figures 8, 9, and 11 can be intermixed. Other variations are possible. Although the present invention has been described in terms of specific embodiments, it is not intended that the invention be limited to these embodiments. Equivalent methods, structures, processes, steps, and other modifications within the spirit of the invention fall within the scope of the invention. The scope of the present invention is defined by the claims, which follow.

Claims: CLAIMS 1. A method in a call processing system for routing a call using skills based routing, the call processing system having a plurality of agent consoles, each assigned a level of proficiency for at least one product skill, at least one of the plurality of agent consoles assigned levels of proficiency for multiple product skills, the method comprising: receiving a call from a switching network, the received call having associated call identification information; determining a required product skill from the associated call identification information; determining an agent console that is preferred to provide the determined product skill based upon the proficiency levels of the agent consoles and whether the preferred agent console is available; when the preferred agent console is available, designating the preferred agent console; when the preferred agent console is not available, designating an agent console that is less preferred to provide the determined product skill based upon the proficiency levels of the agent consoles; and routing the received call directly to the designated agent console for processing. 2. The method of claim 1 wherein the determining of the agent console that is preferred to provide the determined product skill further comprises: determining an agent console assigned the highest level of proficiency for the determined product skill; and wherein the designating of the agent console that is less preferable further comprises: determining an agent console assigned the next highest level of proficiency for the determined product skill. 3. The method of claim 2, further comprising repeating the determining of the agent console assigned the next highest level of proficiency for the determined product skill until an agent console is determined that is available to process the call or until there is no remaining next highest level of proficiency. 4. The method of claim 2, further comprising: when no agent console is available at a chosen level of proficiency for the determined product skill, holding the received call on a queue until an agent console is made available at a chosen level of proficiency; and setting the available agent console to be the designated agent console. 5. The method of claim 1, further comprising: when no agent console is available at a chosen level of proficiency for the determined product skill, holding the received call on a queue until an agent console is made available at a chosen level of proficiency; and setting the available agent console to be the designated agent console. 6. The method of claim 1 wherein the determining of the agent console that is preferred to provide the determined product skill performs a lookup in a table, the table associating agent consoles with product skills and storing proficiency information for each agent console, to identify an agent console with a chosen level of proficiency. 7. The method of claim 1 wherein the determining of the agent console that is preferred to provide the determined product skill comprises: determining an agent console assigned a chosen level of proficiency for the determined product skill; and determining whether the determined agent console assigned the chosen level of proficiency is available to process the received call; and wherein the designating of the agent console that is less preferred comprises: setting a timer to a waiting period and, when the waiting period is expired, designating an agent console assigned another level of proficiency for the determined product skill. 8. The method of claim 1 wherein the determining of the agent console that is preferred to provide the determined product skill and whether the preferred agent console is available further comprises: returning a list, ordered by proficiency level, of potential agent consoles able to provide the determined product skill; and trying each potential agent console in proficiency level order to locate an agent console from the list that is available to service the received call. 9. The method of claim 8, further comprising, when an available agent console is not located, repeating the returning of the list of possible agent consoles and trying each possible agent console, wherein each returned list returns a new list of agent consoles able to provide the determined product skill ordered by next preferred proficiency levels, until an available agent console is located or until there are no remaining potential agent consoles to try. 10. The method of claim 1, the call processing system having an application processor connected by a communications network, wherein the determining of the required product skill and determining of the agent console that is preferred to provide the determined product skill are performed by a skills based routing program executing on the application processor. 11. The method of claim 10 wherein the determining of the agent console is performed by a database lookup using a skills based routing database. 12. The method of claim 1 wherein the determining of the agent console that is preferred to provide the determined product skill is performed by a skills based routing program executing on an automatic call distributor processor. 13. The method of claim 12 wherein the determining of the agent console is performed by a database lookup using a skills based routing database. 14. The method of claim 1 wherein the determining of the required product skill from the received call identification information uses at least one of a type of call, an area code, a called number, a carrier identifier, and a calling number to identify the product skill required. 15. A method in a call processing system for routing a telephone call using a skills based routing program, the call processing system having a plurality of agent consoles each able to provide at least one set of product skills at an assigned level of proficiency, the method comprising: providing a plurality of queues, each queue indicating a proficiency level and a set of product skills, such that there is one queue for each proficiency level assigned to each set of product skills, each queue having assigned to it all agent consoles from among the plurality of agent consoles that can provide the indicated set of product skills at the indicated proficiency level; receiving a call from a switching network, the received call having call identification information; determining a set of product skills from the received call identification information; and placing the received call on the queue associated with the highest proficiency level for the determined set of product skills. 16. The method of claim 15, the call processing system having an automated call distributor processor, wherein the plurality of queues are managed by the automated call distributor processor. 17. The method of claim 15, further comprising: setting a timer to a waiting period and, when the waiting period is expired, moving the queued call to the queue associated with a next chosen level of proficiency for the determined set of product skills; and repeating the step of setting the timer and moving the queued call until an agent console becomes available. 18. The method of claim 15 wherein the assignments of agent consoles to queues can be dynamically changed while the call processing system is running. 19. The method of claim 15 wherein the determining of the set of product skills is performed by an application processor connected to the call processing system by a communications network. 20. The method of claim 15 wherein the determining of the set of product skills from the received call identification information uses at least one of a type of call, an area code, a called number, a carrier identifier, and a calling number to identify the product skills required. 21. A method in a call processing system for routing a call using skills based routing, the call processing system having a plurality of agent consoles, each assigned a level of proficiency for at least one product skill, the method comprising: receiving a call from a switching network, the received call having call identification information; determining a product skill from the received call identification information; determining an agent console able to provide the determined product skill with the highest level of proficiency; when it is determined that the agent console with the highest level of proficiency is not available to service the call, determining an agent console able to provide the determined product skill with a next highest level of proficiency; repeating the step of determining the agent console able to provide the determined product skill with the next highest level of proficiency until an agent console is determined that is available to service the call or until there is no remaining next highest level of proficiency for the determined product skill; and when no agent console is available at all levels of proficiency for the determined product skill after a selected period of time, holding the received call on a queue. 22. The method of claim 21 wherein the determining of the agent console are performed by a skills based routing program executing on an application processor and the placing of the received call on the queue is performed by an automated call distributor connected to the application processor via a communications network. 23. The method of claim 21 wherein the determining of the product skill from the received call identification information uses at least one of a type of call, an area code, a called number, a carrier identifier, and a calling number to identify the product skill required. 24. A skills based call processing system for routing telephone calls to agent consoles, comprising: a plurality of agent consoles, each assigned a proficiency level for at least one product skill; a skills based routing program that, upon receiving a query for a received call, determines a product skill appropriate to the received call; determines, from the plurality of agents consoles, an agent console able to provide the determined product skill based upon a chosen proficiency level; and returns an indication of the determined agent console; and an automated call distributor for receiving calls that, when a call is received, queries the skills based routing program for an agent console; receives the indication of the determined agent console from the skills based routing program; and routes the received call directly to the indicated agent console, without holding the received call on a queue dedicated to a type of phone call. 25. The call processing system of claim 24, the skills based routing program having an associated skills based routing database, wherein the determination of the agent console able to provide the determined product skill based upon the chosen proficiency level is made using the associated skills based routing database. 26. The call processing system of claim 24 wherein the skills based routing program executes on an application processor that is attached to the automatic call distributor through a communications network. 27. The call processing system of claim 24 wherein the determination of the agent console is made by determining whether an agent console with a chosen level of proficiency for the determined product skill is available, and when it is determined that no agent console with the chosen level of proficiency is available, searching for an available agent console with another chosen level of proficiency for the determined product skill until an available agent console is found. 28. The call processing system of claim 27 wherein, when it is determined that no agent console with the chosen level of proficiency is available, holding the received call on a non-console-specific queue until an agent console with the chosen level of proficiency becomes available. 29. The call processing system of claim 27 wherein a timer is set to wait for an agent console to become available at a chosen level of proficiency before searching for an available agent console with another chosen level of proficiency. 30. The call processing system of claim 24 wherein the skills based routing program determines a list of agent consoles able to provide the determined product skill, the list ordered by proficiency level, returns the determined list as the indication of the determined agent console, and wherein the automated call distributor, upon receiving the indication, locates an available agent console using the determined list in proficiency level order and routes the received call to the located agent console.

Inventors: MUMFORD GREGORY L, MUMFORD, GREGORY, L.
Applicants: MCI COMMUNICATIONS CORP, MCI COMMUNICATIONS CORPORATION
Application year: 1998
Main classification: H04M3
IPC codes: H04M3