the detailed description of the invention is intended to describe relatively complete embodiments of the invention , through disclosure of details and reference to the drawings . the following detailed description sets forth numerous specific details to provide a thorough understanding of the invention . however , those of ordinary skill in the art will appreciate that the invention may be practiced without these specific details . in other instances , well - known methods , procedures , protocols , components , and circuits have not been completely described in detail so as not to obscure the invention . however , many such elements are described in the cited references which are incorporated herein by reference , or as are known in the art . for each agent , a profile is created based on manual inputs , such as language proficiency , formal education and training , position , and the like , as well as automatically , based on actual performance metrics and analysis , and used to create a skills inventory table . this process is generally performed in a high level system , such as a customer relations management system or human resources management system . a profile thus represents a synopsis of the skills and characteristics that an agent possesses , although it may not exist in a human readable or human comprehensible form . preferably , the profile includes a number of vectors representing different attributes , which are preferably independent , but need not be . the profile relates to both the level of ability , i . e . expertise , in each skill vector , as well as the performance of the agent , which may be a distinct criterion , with respect to that skill . in other words , an agent may be quite knowledgeable with respect to a product line , but nevertheless relatively slow to service callers . the profile , or an adjunct database file , may also include a level of preference that call management has for the agent to handle transactions that require particular skills versus transactions that require other skills , or other extrinsic considerations . this table or set of tables is communicated to the communications server . typically , the communications server does not create or modify the agent skills table , with the possible exception of updating parameters based on immediate performance . for example , parameters such as immediate past average call duration , spoken cadence , and other statistical parameters of a call - in - progress or immediately past concluded will be available to the communications server . these parameters , which may vary over the course of a single shift , may be used to adaptively tune the profile of the agent in real time . typically , however , long term agent performance is managed at higher levels . fig1 shows a flow chard of an incoming call routing algorithm according to a preferred embodiment of the present invention . a call is placed by a caller to a call center 301 . the call is directed , through the public switched telephone network , although , calls or communications may also be received through other channels , such as the internet , private branch exchange , intranet voip , etc . the source address of the call , for example the calling telephone number , ip address , or other identifier , is received to identify the caller 302 . while the call is in the waiting queue , this identifier is then used to call up an associated database record 303 , providing , for example , a prior history of interaction , a user record , or the like . the call waiting queue may be managed directly by the telephony server . in this case , since the caller is waiting , variable latencies due to communications with a separate call management system would generally not interfere with call processing , and therefore may be tolerated . in other instances , an interactive voice response ( ivr ) system may be employed to gather information from the caller during the wait period . in some instances , there will be no associated record , or in others , the identification may be ambiguous or incorrect . for example , a call from a pbx wherein an unambiguous caller extension is not provided outside the network , a call from a pay phone , or the like . therefore , the identity of the caller is then confirmed using voice or promoted dtmf codes , which may include an account number , transaction identifier , or the like , based on the single or ambiguous records . during the identity confirmation process , the caller is also directed to provide certain details relating to the purpose of the call . for example , the maybe directed to “ press one for sales , two for service , three for technical support , four for returns , and five for other ”. each selected choice , for example , could include a further menu , or an interactive voice response , or an option to record information . the call - related information is then coded as a call characteristic vector 304 . this call characteristic is either generated within , or transmitted to , the communications server system . each agent has a skill profile vector . this vector is developed based on various efficiency or productivity criteria . for example , in a sales position , productivity may be defined as sales volume or gross profits per call or per call minute , customer loyalty of past customers , or other appropriate metrics . in a service call , efficiency may be defined in terms of minutes per call , customer loyalty after the call , customer satisfaction during the call , successful resolution of the problem , or other metrics . these metrics may be absolute values , or normalized for the agent population , or both . the skill profile vector is stored in a table , and the profiles , which may be updated dynamically , of available or soon to be available agents , are accessed from the table ( database ) 305 . typically , the table 305 is provided or updated by a high level call center management system to the communications server system as the staffing assignments change , for example once or more per shift . intra - shift management , such as scheduling breaks , may be performed at a low or high level . the optimization entails analysis of various information , which may include the caller characteristics , the call incident characterization , availability of agents , the agent profile ( s ), and / or various routing principles . according to the present invention , the necessary information is made directly available to the communications server , which performs an optimization to determine a “ best ” target , e . g ., agent selection , for the caller . for example , if peak instantaneous efficiency is desired , for example when the call center is near capacity 306 , more advanced optimizations may be bypassed and a traditional skill based call routing algorithm 307 implemented , which optimizes a short term cost - utility function of the call center 308 . an agent who can “ optimally ” handle the call is then selected 309 , and the call routed to that agent 310 . the global ( e . g ., call center ) factors may be accounted as a separate set of parameters . thus , in order to immediately optimize the call routing , the general principle is to route the call such that the sum of the utility functions of the calls be maximized while the cost of handling those calls be minimized . other types of optimizations may , of course , be applied . according to one optional aspect of the invention , the various routing principles discussed above explicitly value training as a utility of handling a call 311 , and thus a long - term optimization is implemented 312 . the utility of caller satisfaction is also weighted , and thus the agent selected is generally minimally capable of handling the call . thus , while the caller may be somewhat burdened by assignment to a trainee agent , the call center utility is maximized over the long term , and call center agents will generally increase in skill rapidly . in order for the communications server system to be able to include these advanced factors , they must be expressed in a normalized format , such as a cost factor . as for the cost side of the optimization , the cost of running a call center generally is dependent on required shift staffing , since other costs are generally constant . accordingly , a preferred type of training algorithm serves to minimize sub - locally optimal call routing during peak load periods , and thus would be expected to have no worse cost performance than traditional call centers . however , as the call center load is reduced , the call routing algorithm routes calls to trainee agents with respect to the call characteristics . this poses two costs . first , since the trainee is less skilled than a fully trained agent , the utility of the call will be reduced . second , call center agent training generally requires a trainer be available to monitor and coach the trainee . while the trainer may be an active call center agent , and therefore part of the fixed overhead , there will be a marginal cost since the trainer agent might be assuming other responsibilities instead of training . for example , agents not consumed with inbound call handling may engage in outbound call campaigns . it is clearly apparent that the communications server system will have direct access to call center load data , both in terms of availability of agents and queue parameters . thus , in a training scheme , an optimization is performed , using as at least one factor the value of training an agent with respect to that call 312 , and an appropriate trainee agent selected 313 . in order to provide proper training , the trainer and trainee must both be available , and the call routed to both 314 . generally , the trainee has primary responsibility for the call , and the trainer has no direct communication with the caller . therefore , the trainer may join the call after commencement , or leave before closing . however , routing a call which requires two agents to be simultaneously available poses some difficulties . in general , the trainer is an agent capable of handling the entire call alone , while the trainee may not be . therefore , the trainer is a more important participant , and the initial principle in routing the training call is to ensure that a trainer is available . the trainer may then await availability of an appropriate trainee , or if none is imminently available , handle the call himself or herself . on the other hand , where a specific training campaign is in place , and a high utility associated with agent training , then the availability of a specific trainee or class of trainees for a call having defined characteristics is particularly important . in that case , when an appropriate trainee is available , the call held in that agent &# 39 ; s cue , and the call possibly commenced , awaiting a training agent &# 39 ; s availability . if the training is highly structured , it is also possible to assign the trainer and trainee agents in pairs , so that the two are always available for calls together . the system according top the present invention may also provide reinforcement for various training . thus , if a subset of agents receive classroom training on a topic , the server may target those agents with calls relating to that topic . for example , the topic may represent a parameter of a call characterization vector . in order to target certain agents for calls having particular characteristics , a negative cost may be applied , thus increasing the probability that the agent will be selected , as compared with an agent having a positive cost . by using a single cost function , rather than specific override , the system becomes resilient , since this allocation is not treated as an exception , and therefore other parameters may be simultaneously evaluated . for example , if a caller must communicate in a foreign language , and the agent does not speak that foreign language , then the system would not target the call to that agent , even if other factors weigh in favor of such targeting . the same techniques are available for outbound campaigns and / or mixed call centers . in this case , the cost of training is more pronounced , since agents idle for inbound tasks are generally assigned to outbound tasks , and thus the allocation of trainer agents and trainee agents generally results in both longer call duration and double the number of agents assigned per call . this cost may again be balanced by avoiding training during peak utility outbound calling hours and peak inbound calling hours ; however , training opportunities should not be avoided absolutely . according to one embodiment of the invention , at the conclusion of a call , the caller is prompted through an ivr to immediately assess the interaction , allowing a subjective scoring of the interaction by the caller without delay . this information can then be used to update the stored profile parameters for both caller and agent , as well as to provide feedback to the agent and / or trainer . under some circumstances , this may also allow immediate rectification of an unsatisfactory result . each agent is classified with respect to 10 skills , and each skill can have a weight of 0 to 127 . the skill weights may be entered manually by a supervisor , developed adaptively , or provided by other means . these are sent as a parameter file to the communications server . a rule vector specifies a normalized contribution of each skill to apply to the total . this rule vector , for example , represents the call characteristic vector . thus , attributes of the call and the status of the system are analyzed to generate this rule vector . there can be more than one rule vector defined in a project ( split ), or a rule can be setup in a per call basis . generally , routing with predefined rules is much more efficient than routing with rules in a per call bases . when a call needs to be routed to an agent , the rule vector is applied to the skills of the available agents and a score is derived for each agent . the agent with the highest score is assigned the call . as shown , agent 1 would be selected , since this is the highest score . in this example , it is presumed that all selections have the same cost , and therefore the utility only varies . thus , the agent with the highest utility function is the optimal selection . the conditions below are the same as in example 1 , except two new factors are provided , ac1 and ac2 . the preliminary score is calculated as the sum of the products of the rule vector and the agent vector . the final score is calculated as ( ac1 × sum )+ ac2 . in this case , ac1 represents an agent - skill weighting cost function , while ac2 represents an agent cost function . since we select the maximum value , more expensive agents have correspondingly lower cost values . in this example , a limiting criterion is imposed , that is , only agents with a skill score within a bound are eligible for selection . while this may be implemented in a number of ways , possibly the simplest is to define the range , which will typically be a lower skill limit only , below which an agent is excluded from selection , as a preliminary test for “ availability ”. as noted below , the screening criteria may be lower , upper or range limits . in this case , the screening process excludes agents 2 , 3 , and 5 , leaving agents 1 and 4 available . of these two choices , agent 1 has the higher score and would be targeted . in this example , the optimization seeks to optimize the placement of 5 incoming calls to 5 agents . as shown , each caller is represented by a different call vector , and each agent by a distinct skill vector . the optimization therefore seeks the maximum utility from the respective possible pairings . using a combinatorial analysis , the maximum value is 62 . 42 , which represents the selection of agent 1 / caller 1 ; agent 2 / caller 5 ; agent 3 / caller 4 ; agent 4 , caller 2 ; and agent 5 , caller 3 . similarly to example 4 , it is also possible to include an agent cost analysis , to provide an optimum cost - utility function . as in example 2 , the cost factors are reciprocal , since we select the largest value as the optimum . likewise , time factors are also reciprocal , since we seek to minimize the time spent per call . in this case , the cost analysis employs three additional parameters : the agent cost , a value representing the cost of the agent per unit time ; a value representing an anticipated duration of the call based on the characteristics of the caller ; and a value representing the anticipated duration of the call based on characteristics of the agent as can be seen , the maximum value is 314 . 78 , which corresponds to a selection of : agent 1 / call 5 ; agent 2 / call 1 ; agent 3 / call 4 ; agent 4 / call 2 ; and agent 5 / call 3 . therefore , it is seen that the optimum agent / caller selection is sensitive to these cost factors . it is also seen that , while the analysis can become quite complex , the formulae may be limited to evaluation of simple arithmetic functions , principally addition and multiplication , with few divisions required . thus , these calculations may be executed efficiently in a general purpose computing environment . from the above description and drawings , it will be understood by those of ordinary skill in the art that the particular embodiments shown and described are for purposes of illustration only and are not intended to limit the scope of the invention . those of ordinary skill in the art will recognize that the invention may be embodied in other specific forms without departing from its spirit or essential characteristics . references to details of particular embodiments are not intended to limit the scope of the claims . it should be appreciated by those skilled in the art that the specific embodiments disclosed above may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention . it should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims .