Abstract:
In one embodiment, a method is provided for routing calls within an automatic contact distribution system comprising assessing at least two evaluators programmed to collect information about identified sets of attributes associated with a call. The system then initiates the collection of information to enable the evaluators to assign a value to those attributed for which information exists. A comparison is then performed of the values assigned to the attributes in each evaluator. The call is then routed to the agent selected by the comparison.

Description:
FIELD OF THE INVENTION  
       [0001]     The field of the invention relates generally to communication systems and more particularly to automatic call distributors.  
       BACKGROUND OF THE INVENTION  
       [0002]     Systems which automatically distribute customer contacts or calls (generically referred to as “ACD”) are often employed in telemarketing environments in which agents stationed at agent telephone sets answer many different types of telephone calls and other types of customer contacts (e.g., VolP, emails, facsimile, chat room dialog, instant messages, other Internet contacts, etc.) from customers during a work day. As referred to herein, an ACD may be referred to as an automatic call distributor or an automatic contact distributor because the ACD handles a variety of communication media. In other words, the ACD handles many forms of communication, not just telephone calls in which a potential customer speaks with an agent. The term “ACD” may apply to any type of transaction processing system, and need not apply only to dedicated telemarketing systems or automatic call distributors. In some known ACD&#39;s, the agent may receive certain information about the type of customer call (i.e. contact) on a visual display at the agent set when a call or contact is distributed to the agent. An ACD is any such system which performs these functions and, for example, may employ a wide variety of architectures including integrated centralized systems, distributed systems, systems using one or more personal computers or servers, etc.  
         [0003]     ACDs may process inbound or outbound calls (i.e. customer contacts). Typically, a controller monitors the workload of the ACDs agents. When the workload of inbound calls fall below some threshold value, the controller may begin to initiate outbound calls, distributing outbound calls to agents based upon some criteria (e.g. idle time).  
         [0004]     In addition to placing and distributing calls, an ACD may also identify and display documents on agent terminals as an aid to processing the calls. In the case of incoming calls, the calls may be received along with dialed number identification service (DNIS) and/or automatic number identification (ANI) information. ANI may be used to identify a caller at the same instant as the call is delivered to the ACD. The controller of the ACD may use the ANI information to retrieve and display customer records on a terminal of the agent selected to handle the call at the same instant that the call is delivered to the agent.  
         [0005]     In addition, textual information may be displayed on a terminal of the assigned agent that guides the agent through a sales presentation. DNIS information may be used to identify an intended call target and to select an appropriate sales presentation for use by the agent based upon the intended call target.  
         [0006]     While automatic call distributors work relatively well, they are not particularly well suited to routing calls based upon multiple attributes or based upon attributes about multiple entities or resources associated with the call. Current routing capabilities are also not well suited to creating and utilizing user definable and expandable attribute lists to match the customer with an agent while further taking into consideration business and environmental attributes in a combinational fashion.  
         [0007]     Current ACDs also typically do not allow routing based on the prioritization of multiple attributes or for creating dependencies between the attributes for the different entities or resources associated with the call. Accordingly, a need exists for a better method for creating and analyzing user definable and expandable attributes about multiple entities or resources associated with a call and then analyzing those attributes based upon priority and dependency criteria so as to route calls, whether incoming or outgoing, to an agent who is highly qualified to handle the call.  
         [0008]     In this way the overall quality of the services provided by the company through its call-in customer service can be improved. For example, calls can be not merely handled by a “repair” agent, but by an agent who specializes in repair of its equipment owned by the caller. Further, by the maintenance of databases containing updateable information about the business customer, the need for the customer to engage a digit selection process is reduced. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0009]      FIG. 1  is a functional block diagram illustrating one embodiment of a system for creating and comparing the profiles used to properly route incoming and outgoing calls;  
         [0010]      FIG. 2  is block diagram showing illustrating and embodiment of a model for the processing of the individual attributes in each profile; 
     
    
     SUMMARY  
       [0011]     In one embodiment, a method is provided for routing calls within an automatic contact distribution system comprising assessing at least two evaluators programmed to collect information about identified sets of attributes associated with a call. The system then initiates the collection of information to enable the evaluators to assign a value to those attributed for which information exists. A comparison is then performed of the values assigned to the attributes in each evaluator. The call is then routed to the agent selected by the comparison.  
       DETAILED DESCRIPTION  
       [0012]     While the present invention is susceptible of embodiments in various forms, there is shown in the drawings and will hereinafter be described some exemplary and non-limiting embodiments, with the understanding that the present disclosure is to be considered an exemplification of the invention and is not intended to limit the invention to the specific embodiments illustrated. In this disclosure, the use of the disjunctive is intended to include the conjunctive. The use of the definite article or indefinite article is not intended to indicate cardinality. In particular, a reference to “the” object or “a” object is intended to denote also one of a possible plurality of such objects.  
         [0013]     Various apparatus and method embodiments are described with reference to  FIGS. 1 and 2  for routing incoming and outgoing calls utilizing multiple users defined and expandable attributes about multiple entities or resources associated with the call. These attributes may in some embodiments be divided into three groups—attributes concerning the customer (caller); attributes concerning the organization or business operating the ACD, including attributes regarding the agents; and attributes concerning the environment in which the ACD operates. These groups of attributes can be referred to as keys.  
         [0014]     The attributes within the business and environmental keys may be compared with attributes in the caller&#39;s key to find matches indicating which agent is suited to handle the call. Once the match is made, the call may then be routed to that agent. In another embodiment, agent selection may be made by comparison of the customer key with either of the business key or the environmental key.  
         [0015]     The value for each attribute may be continually updated as additional or different information becomes available, thus allowing accurate, up to date keys for comparison of attributes for the caller and the business and as filtered through the attributes reflecting the current environmental resources available to handle the call.  
         [0016]     A company&#39;s key performance indicators (KPI&#39;s) as well customer and/or agent preferences may be used to determine the attributes used and to attach priorities to certain attributes within each of these keys. For example, if the company strives to have a customer service department that provides the most technically qualified agent, even if it means slightly longer hold times, then attributes concerning the technical nature of the call (from the customer key) and the technical capabilities of the available agents (from the business key) and the technical resources available from the environmental key) may be ranked higher than information on hold times (from the environmental key). There may however be a maximum hold time after which time the call may be matched with an agent with a lower technical match score. One possible alternative is to create a maximum hold time attribute with a maximum hold time threshold value and to associate a high priority value to that attribute when the time the call is on hold or waiting in queue exceeds the maximum hold time threshold value.  
         [0017]     Further, certain attributes by their very nature or by definition may be considered linked with other attributes or to be dependant upon certain other attributes. For example, if a call is place by video phone and a video phone response is requested, this attribute from the customer key may be linked to attributes in the environmental and business keys such that only agents with video phone capabilities are considered during the matching process.  
         [0018]     In another alternative embodiment, if at the time a video phone call is received no agents with video phone capability are available, or waiting for such a match would exceed a pre-set maximum allowed hold time, then that attribute could be eliminated or ignored during the matching process. If the company does not place a priority on matching video phone calls with video phone agents as compared to other attributes, then this attribute either could not be measured or would not be given high priority or dependency value.  
         [0019]     These various alternative methods provide the company with great flexibility in providing superior customer service in line with its KPI&#39;s, its customer&#39;s preferences and agent preferences.  
         [0020]      FIG. 1  shows one embodiment of a system  10  for creating and comparing profiles. This system  10  includes three evaluators, a customer evaluator  12 , a business evaluator  14  and an environmental evaluator  16 . In one embodiment, each evaluator contains a preprogrammed set of attributes associated with the subject of each evaluator. The evaluators collect information about each of these attributes from various internal and external sources available and assign a value  32  to the attribute based upon that information. If there is no information on a particular attribute, then no value  32  is assigned.  
         [0021]     The system  10  may be implemented in any suitable manner but typically including a combination of hardware and software. For example, the system  10  may comprise a digital processor (e.g. known microcomputers) either integral with or separate from the router, programmed to perform the functions illustrated in  FIG. 1  and  FIG. 2 , and described herein.  
         [0022]     The attributes within each evaluation may be user defined and expandable as more criteria are found to be relevant to the agent selection process.  
         [0023]     Attributes may be chosen to tailor the agent selection process to help the company meet its KPI&#39;s or other business objectives. Attributes can also be chosen based upon customer or even agent preferences. The attributes selected may be different for different customers.  
         [0024]     The customer evaluator  12  collects information about the customer to create the customer key. The information may be collected from information received from the call itself, such as the customer&#39;s identity based automatic number identification (ANI) information and/or from dialed number identification service (DNIS) to access any company files regarding past contacts with the customer and other information collected from the call itself, such as the nature of the call as determined from a digit or voice response selection process. The information available for establishing attributes values  32  may be updated after each customer contact.  
         [0025]     In some embodiments, ANI may be used to identify a caller at the same instant as the call is delivered to the ACD. The controller of the ACD may use the ANI information to retrieve customer records that will supply the information for the customer evaluator  12 . This same information may then be displayed on a terminal of the agent selected to handle the call at the same instant that the call is delivered to the agent.  
         [0026]     Information to be collected in the customer evaluator  12  may include, for example: name, address, account ID, presence, location, equipment purchased, other equipment used; account history such as payments and prior purchases; profitability and the reason for the contact. There may also be attributes that record customer preferences and requirements for service call contacts. It is envisioned that many other possible attributes be associated as part of the customer evaluator. As more information is collected, the number of attributes with a value  32  may increase.  
         [0027]     The information collected in the business evaluator  14  for the business key may include, for example, attributes relating to the agents themselves, such as their skill set and the functions they can perform such as repair or technical support. Agent attributes can also include agent preferences for certain types of calls or equipment they prefer to handle and the equipment available for a particular agent to use during a call. The business evaluator  14  may also include attributes relating to the company&#39;s current KPI&#39;s, strategic KPI goals, other business goals or objectives transactional cost information and transactional times. It is envisioned that many other possible attributes be associated as part of the business evaluator. The values  32  for these attributes are subject to change with each call as new information is collected by the evaluator  14 .  
         [0028]     In some embodiment, agent selection may occur by comparison of the customer key with only the business key.  
         [0029]     A third evaluator that may also be used for the agent solution process is the environmental evaluator  16  which contains attributes about the resources available to handle the calls coming in to create the environmental key. The attributes in this evaluator could include, for example, available network bandwidth, data attack presence, the devices available to handle calls, information on the equipment such as presence and status, the type used, and its occupancy. There may also be attributes related to the system&#39;s  10  operational status and which agents are available to receive calls. It is envisioned that many other possible attributes be associated as part of the environmental evaluation. Agent attributes may be definable in the business or environmental evaluators  14 ,  16 .  
         [0030]     The values  32  for the attributes in the environmental evaluator  16  may, in some embodiments, change as calls are received, thus taking up bandwidth, equipment and other resources or as the number of callers falls off releasing more resources for use. Alternately, the attributes may change relative to the time of day or may change depending on the amount of resources within a computing or a data network.  
         [0031]     In some embodiments, agent solution may occur by comparison of the customer key with only the environmental key.  
         [0032]     Matches of callers to agents can in some embodiments be made based solely on the value  32  assigned to each attribute. For example a presence state value of an agent, as “available for voice calls” and a skill type value of “repair” are combinable to qualify an agent to handle a telephone transaction from a customer with a call type reason for contact attribute of “service call.” These would be a high positive score for this type of transaction matching.  
         [0033]     More complex matchings, still based only on attribute values  32 , may occur when more attributes are considered. As an example assume there are two callers in queue with “repair” service calls: One, to repair a stove, and the second a refrigerator, and that there are three agents available, all with a skill type of “repair.” This skill type may then be further defined so that agent one can repair only stoves, agent two can repair any home appliance and agent three only ovens. The match engine would match agent one with caller one; and, agent two with caller two. Agent two does not have a specialty for refrigerators, but is preferable to agent three who repairs ovens.  
         [0034]     Alternately, it may be desirable to match a caller with a specific piece of equipment. For example, a piece of equipment that can record video phone calls may be a preferred recording device when a video phone inbound caller needs to leave a message more so than a piece of equipment that can only record the voice portion of the call. The video phone call recording equipment may therefore be selected over the equipment that records only the voice portion of the call.  
         [0035]     In some embodiments, the values  32  for each attribute within each evaluator maybe written for each transaction as it occurs in an expandable XML format thus allowing for the values  32  for the attributes to be easily updated and for the assignment of values  32  to additional attributes as more or different information becomes available or is collected from the customer, business or about the environment. In other alternative embodiments, the values may be stored in a database record, a flat text file, a spreadsheet, a table within a computer memory, or other mechanism associative between the values and the attributes.  
         [0036]     The attributes contributing to the final match may possibly take the following form with the first attribute showing an embedded XML form for each attribute:  
                                                                                                               &lt;CUSTOMER&gt;                &lt;ATTRIBUTE 1&gt;           &lt;/ATTRIBUTE 1&gt;           &lt;ATTRIBUTE N&gt;           &lt;/ATTRIBUTE N&gt;                &lt;/CUSTOMER&gt;           &lt;BUSINESS&gt;                &lt;ATTRIBUTE 1&gt;           &lt;/ATTRIBUTE 1&gt;           &lt;ATTRIBUTE N&gt;           &lt;/ATTRIBUTE N&gt;                &lt;/BUSINESS&gt;           &lt;ENVIRONMENT&gt;                &lt;ATTRIBUTE 1&gt;           &lt;/ATTRIBUTE 1&gt;           &lt;ATTRIBUTE N&gt;           &lt;/ATTRIBUTE N&gt;                &lt;/ENVIRONMENT&gt;                      
 
         [0037]     In addition to assigning values  32  to each attribute, it is also contemplated in some embodiments that the attributes may be further defined as follows. Once the values  32  for the attributes have been collected an attribute profile is generated by the attribute generator  18 . The attribute profile is then passed through the Attribute Scorer  20 . As seen in  FIG. 2 , during the scoring process the attributes are assigned a priority  34 , a weight  36  and any dependencies  38 . These items for each attribute may be determined by, for example, the company&#39;s KPIs, by the nature of the attribute itself or by recorded customer or agent preferences.  
         [0038]     For example, a particularly valuable customer has specified that it prefers that its calls be handled by video phone, even if it has to wait longer. If the customer evaluator  12  already contains an attribute that looks to see if the call is by video phone, then the value would be set to “yes” when the customer calls in on its video phone connection. In order to honor the customer&#39;s request for video phone response, that customer key would set a high priority  34  and weight  36  and perhaps have a dependency  38  created for this attribute. Likewise the priority and weight for hold time would be reduced. This allows the customer&#39;s request for a video phone response to be honored as often as possible, even if longer wait times are required.  
         [0039]     If the customer evaluator does not have an attribute specifically for video phone, usage but has the capability of detecting this type of call, then a customer preference attribute could be created for this customer&#39;s key. This attribute would then collect information regarding the use of a video phone. It would also be linked to a high priority and weight and perhaps a dependency created to honor the customer request as often as possible. In both cases there may be a maximum hold time set after which the priority and weight given to the request for a video phone response is ignored or reduced so that the call can be handled by another agent.  
         [0040]     For a customer who has specified that video calls are preferred, but also states they do not want to wait longer for them, then the same request—for video phone calls—would result in different weight, priority and dependencies being assigned to the attribute looking for video phone use. This would allow for more flexibility in the call matching process—a video phone match if readily available, but otherwise the next best match.  
         [0041]     The attribute values  32  collected in each evaluator may then be processed by the Attribute Scorer  20  utilizing their priority  34 , weight  36  and dependencies  38  as shown in the model of  FIG. 2 . The attribute value  32  is associated with an attribute priority  34  and the weight  36  to be given to the attribute. This combination is then scanned for attribute dependencies  38  and a final attribute score value  40  is assigned.  
         [0042]     For each attribute, that may include a priority  34 , weight  36  or dependency  38  the following structure may be use to define the attribute by these features:  
                                                                                                                                                       &lt;ATTRIBUTE #&gt;                &lt;Value&gt;                Value                &lt;/Value&gt;           &lt;Priority&gt;                Priority                &lt;/Priority&gt;           &lt;Weight&gt;                Weight                &lt;/Weight&gt;           &lt;Dependency&gt;                Dependency                &lt;/Dependency&gt;                &lt;/ATTRIBUTE #&gt;                      
 
         [0043]     The attribute score values  40  for each evaluator make up the customer, business or environmental key. These keys are fed into the attribute matching engine  26  and the best matches are determined for the pool of callers and agents existing at that time. When multiple customers are being matched with multiple agents the matching engine  26  may not find the best agent match for each customer, but the best matches for the set of customers and agents.  
         [0044]     The attribute matching engine  26  may take many forms to best align the attributes along three dimensions. The matching function may be implemented through a sequential rule based processor engine, web search servers or other forms of comparing the set of attributes of the customer key against the set of attributes for the business and environmental keys.  
         [0045]     One such form would be a rule based router  30 . If using a rule based router  30  it may be programmed to evaluate each and every attribute to calculate the extent of the match, or the closeness, of each of the three groups of attributes and allocate a score that is added to a total overall score for all of the other attributes comprising the matching function.  
         [0046]     Another technique that may be used is that of selecting some of the attributes in a group, like the customer attributes, as being primarily and secondarily important to be matched against business and environment attributes. For example, if the customer has an attribute of having a SIP enabled phone on an inbound transaction, the allocation engine may be programmed to output a key code specifically requiring a SIP enabled business resource given sufficient environment resources.  
         [0047]     Alternatively, mathematical models, for example a least mean squared approach, may be used in determining the closeness of particular attributes when the count of matching attributes are the same or to determine an overall score for all of the attributes. In this approach, the difference in the attribute value with the matched business and environment values may be calculated, squared and used as the perspective measure of how well the attributes align together.  
         [0048]     Text or character based attributes may also be matched using known techniques. Matching exact words, their equivalents or matching text as being under the same subject (apples, oranges, pears all being equivalent to fruit) are all possible textual attribute matching strategies. More than one of these methods or other methods may be used at various times by the ACD.  
         [0049]     If it is desired, then the system in one embodiment can assign an allocation cost function to each routing algorithm type in relation to the amount of bandwidth required to perform the matching function as a function of the number of transactions being processed. The timer  22  and scheduler  24  functions will determine available processing capabilities of the engine. The resource evaluator  28  will collect the timer  22  and scheduler  24  information along with the current availability of other resources to be used in the matching process. Different matching functions will require different bandwidths. As the number of current transactions increase, the amount of resources available diminishes requiring the choice of a matching algorithm that can complete the match using the available bandwidth in order to achieve a routing result. Certain matching algorithms may not use as many parameters for a loser match in order to require less resource bandwidth for determining the match. The resource allocation engine should determine the current bandwidth available in the matching engine before beginning the matching procedure in order to select the matching procedure that can be processed successfully under the current circumstances.  
         [0050]     This method not only can be used to match callers with agents, but may also act to match an agent with the “best” caller from a group of callers in a queue. For example, when a queue of callers exists and one agent becomes available, rather than simply matching that agent with the next caller based upon time in the queue, this system  10  will send the company attribute key, which at this time will only have information on one agent, into the attribute matching engine with the environmental key and the customer keys for each of the customers in the queue. The agent will then be matched with the customer whose key is the best match for the agent available.  
         [0051]     To avoid one customer spending an extraordinary amount of time in queue waiting for a match, the company key may include an attribute that looks for wait times over a threshold value. When that attribute is present, it would trump all others and allow that call to be handled by the next available agent.  
         [0052]     Another way to reduce wait times for calls requiring special assistance would be to have an attribute that selects a group of all callers who have waited longer than a set amount of time and run them through the attribute matching engine ahead of other callers who have waited less than the set time. In this way callers will get matched to an agent better suited to handle the call than if simply assigned to the next available agent, yet will not be required to wait overlong for the smaller number of agents qualified to handle their call. Once the customer has been matched to an agent, the call may be routed to that agent together with any information needed to handle the call.  
         [0053]     When the ACD controller initiates the assignment of outgoing calls, a queue of outgoing calls that need to be made is created and a customer key is created for each call in the queue. This queue of calls is then processed as described above and a match made to an agent. The call is initiated by the ACD and routed to selected agent. The agent receives the call and any information needed to handle the call.  
         [0054]     A specific embodiment of method and apparatus for distributing calls has been described for the purpose of illustrating the manner in which a possible embodiment of the invention is made and used. It should be understood that the implementation of other variations and modifications of a possible embodiments of the invention and its various aspects will be apparent to one skilled in the art, and that a possible embodiment of the invention is not limited by the specific embodiments described. Therefore, it is contemplated to cover all possible embodiments of the invention and any and all modifications, variations, or equivalents that fall within the true spirit and scope of the basic underlying principles disclosed and claimed herein.