Digital multimedia contact center with tier escalation and deescalation in response to changed criteria
Summary by NHIP
Tier Escalation Method
The method assigns contacts to service tier queues based on routing criteria and shifts them between tiers when criteria change. De-escalation occurs if changes fail pre-defined criteria, while escalation happens if changes satisfy criteria for a higher tier.
Claim Score by NHIP
Abstract
A tiered service model for a digital multimedia contact center assigns an entering contact to an initial service tier based on routing criteria for the contact and may escalate or de-escalate the contact to a different service tier if the routing criteria changes. The routing criteria is initially determined based on a media type associated with the contact. The digital multimedia contact center contains a set of media routers, each of which passes a contact of a particular media type to a workflow engine which executes workflows to direct the processing of contacts at service tiers that require agent activity. Agents are allocated to contacts by a dynamic automate contact distributor and the appropriate media router is used to route the contact to an agent. The workflow engine also executes workflows for agents to control the allocation of agents to contacts.

Term
Term ended
Expired 14 June 2023, 3.3 years ago.
- Priority and filed
- Granted
- Expired
- Today
12 claims: 3 independent, 9 dependent
- 1Broadest claimClaim Score 63, broad(NHIP)A computerized method for determining a service tier for a contact in a digital multimedia contact center, each tier having a queue, the method comprising:determining an initial service tier for the contact based on routing criteria for the contact and placing the contact into the queue for that tier;de-escalating the contact to a lower service tier if a change in the routing criteria does not satisfy pre-defined criteria for the initial service tier and placing the contact into the queue for the lower service tier;and escalating the contract to a higher service tier if a change in the routing criteria satisfies pre-defined criteria for the higher service tier and placing the contact into the queue for the higher service tier.
- 5A computer-readable medium comprising a storage device, having computer-executable instructions comprising:receiving a contact and assigning to a queue of an initial service tier for the contact in a digital multimedia contact center based on routing criteria for the contact, wherein each tier has a queue;de-escalating the contact to a lower service tier if a change in the routing criteria does not satisfy pre-defined criteria for the initial service tier and placing the contact into the queue for the lower service tier;and escalating the contract to a higher service tier if a changer in the routing criteria satisfies pre-defined criteria for the higher service tier and placing the contact into the queue for the higher service tier.
- 9A computer system comprising:a processing unit;a memory coupled to the processing unit through a bus;and a service tiering process executed from the memory to cause the processing unit to determine an initial service tier having a queue for a contact in a digital multimedia contact center based on routing criteria for the contact, wherein each tier has a queue, to de-escalating the contact to a lower service tier if a change in the routing criteria does not satisfy pre-defined criteria for the initial service tier and placing the contact into the queue for the lower service tier, and to escalate the contract to a higher service tier if a change in the routing criteria satisfies pre-defined criteria for the higher service tier and placing the contact into the queue for the higher service tier.
Independent claims3
151 paragraphs in 9 sections, as filed
FIELD OF THE INVENTION
0001This invention relates generally to the operations of a customer contact center, and more particularly to a contact center that processes contacts having different media types.
COPYRIGHT NOTICE/PERMISSION
0002A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawings hereto: Copyright® 1999, NUASIS Corporation, All Rights Reserved.
BACKGROUND OF THE INVENTION
0003Call centers are typically used by organizations to service customers. Traditionally, customers called into a call center using POTS (plain old telephone service) but more and more organizations are implementing other types of media access such as email, voice mail, Web browsing, etc. to expand the ways by which their customers may contact them. Current attempts to integrate the different media into a single call center have proved ineffective because of the disparate nature of the different media types. For example, telephone calls usually average a few hundred a day, while emails often run into thousands a day, and daily hits on a Web site frequently number hundreds of thousands. Additionally, the response time expected by the customer varied depending on the media type used.
0004One approach processes a contact based on its media type. This approach ignores the fact that the same media type can be used for different types of service. For example, a customer that calls a manned help line requires different handling than a customer calling an interactive voice response system. Another approach is to handle all contacts identically, regardless of media type. This approach fails to account for the different number of contacts and different expected response times for a customer independent of the various media types. Thus, a call center that processes all calls as requiring an immediate response quickly becomes overloaded with emails. Furthermore, both of these approaches involve extensive modifications to the systems that underlie the call center, such as the email system, the telephony system, etc., so that the many of the original features and benefits of the underlying systems are lost. Additionally, while some previous implementations appear to integrate analog contacts, such as voice calls, and digital contacts, such as email, the actual processing of the two types of contacts is separated.
SUMMARY OF THE INVENTION
0005The above-mentioned shortcomings, disadvantages and problems are addressed by the present invention, which will be understood by reading and studying the following specification.
0006A tiered service model for a digital multimedia contact center assigns an entering contact to an initial service tier based on routing criteria for the contact and may escalate or de-escalate the contact to a different service tier if the routing criteria changes. The routing criteria is initially determined based on a media type associated with the contact. The digital multimedia contact center contains a set of media routers, each of which passes a contact of a particular type to a workflow engine. The workflow engine starts a workflow for the contact and calls a dynamic automatic contact distributor to allocate an agent to the contact if the service tier of the contact requires agent activity. The workflow engine returns an identifier for the allocated agent to the media router, which then routes the contact to an agent desktop for the agent. The agent desktop presents the contact to the agent for processing. The workflow engine also creates a workflow for an agent to control the allocation of the agent to contacts.
0007The digital multimedia contact center operates in conjunction with existing systems dedicated to a particular media type without requiring major modifications to those systems, thus leveraging the functionality of the existing systems. For example, emails are generally handled at one service tier by the standard operations of a conventional email system unless specially marked in the email system as having been escalated to a higher service tier. Similarly, voice calls are initially assigned to a high service tier for handling by an agent but can be de-escalated to a lower service tier and routed to an existing interactive voice response system if appropriate. Thus, the digital multimedia contact center handles contacts in accordance with the contact's required level of service instead of relying solely on the media type to determine the necessary processing. Furthermore, the digital multimedia contact center implements the most appropriate processing methodology for the number of contacts expected at each service tier.
0008The present invention describes systems, clients, servers, methods, and computer-readable media of varying scope. In addition to the aspects and advantages of the present invention described in this summary, further aspects and advantages of the invention will become apparent by reference to the drawings and by reading the detailed description that follows.
BRIEF DESCRIPTION OF THE DRAWINGS
0009<figref idref="DRAWINGS">FIG. 1</figref> is a diagram illustrating a three-tiered service model for a digital multimedia contact center of the present invention;
0010<figref idref="DRAWINGS">FIG. 2</figref> is a diagram illustrating an embodiment of a system architecture underlying the digital multimedia contact center model shown in <figref idref="DRAWINGS">FIG. 1</figref>;
0011<figref idref="DRAWINGS">FIGS. 3A–C</figref> are diagrams illustrating the processing of media-specific contacts within the architecture of the digital multimedia contact center shown in <figref idref="DRAWINGS">FIG. 2</figref>;
0012<figref idref="DRAWINGS">FIGS. 4A–C</figref> are flowcharts of method to be performed by voice components in the embodiment of the digital multimedia contact center shown in <figref idref="DRAWINGS">FIG. 2</figref>;
0013<figref idref="DRAWINGS">FIGS. 5A–C</figref> are flowcharts of method to be performed by escalated email components in the embodiment of the digital multimedia contact center shown in <figref idref="DRAWINGS">FIG. 2</figref>;
0014<figref idref="DRAWINGS">FIGS. 6A–C</figref> are flowcharts of method to be performed by collaboration components in the embodiment of the digital multimedia contact center shown in <figref idref="DRAWINGS">FIG. 2</figref>;
0015<figref idref="DRAWINGS">FIGS. 7A–C</figref> are flowcharts of method to be performed by agent components in the embodiment of the digital multimedia contact center shown in <figref idref="DRAWINGS">FIG. 2</figref>;
0016<figref idref="DRAWINGS">FIG. 8A</figref> is a diagram of a contact detail data structure for use in an implementation of the invention;
0017<figref idref="DRAWINGS">FIG. 8B</figref> is a diagram of an agent data structure for use in an implementation of the invention;
0018<figref idref="DRAWINGS">FIG. 9A</figref> is a diagram of a workflow engine for use in an implementation of the invention;
0019<figref idref="DRAWINGS">FIG. 9B</figref> is a diagram of an asynchronous workflow executed by the workflow engine of <figref idref="DRAWINGS">FIG. 9A</figref>;
0020<figref idref="DRAWINGS">FIG. 10A</figref> is a diagram of one embodiment of an operating environment suitable for practicing the present invention; and
0021<figref idref="DRAWINGS">FIG. 10B</figref> is a diagram of one embodiment of a computer system suitable for use in the operating environment of <figref idref="DRAWINGS">FIG. 10A</figref>.
DETAILED DESCRIPTION OF THE INVENTION
0022In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings in which like references indicate similar elements, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical, functional and other changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
0023The detailed description is divided into four sections and a conclusion. In the first section, a system level overview of the invention is presented. In the second section, methods for an embodiment of the invention are described with reference to flowcharts. In the third section, a particular Internet Contact Center (iCC) implementation of the invention is described. In the final section, an operating environment in conjunction with which embodiments of the invention may be practiced is presented.
System Level Overview
0024A system level overview of the operation of an embodiment of the invention is described by reference to <figref idref="DRAWINGS">FIGS. 1 and 2</figref>.
0025<figref idref="DRAWINGS">FIG. 1</figref> illustrates a three-tiered service model <b>100</b> for a digital multimedia contact center. As shown, there are three service tiers: self-service tier <b>101</b>, deferred service tier <b>103</b>, and immediate assistance tier <b>105</b>. Contacts accessing the center at the self-service tier <b>101</b> do not require the assistance of an agent at the contact center, while contacts being serviced at the deferred tier <b>103</b> and the intermediate assistance tier <b>105</b> do require agent activity. A contact accessing the center at deferred tier <b>103</b> is presented to an agent in a “pull” model as a background task on the agent's computer desktop. An agent pulls a deferred contact for processing when there are no immediate assistance contacts to process. A contact at the immediate assistance tier <b>105</b> is presented in a “push” model as a foreground task. One immediate assistance contact is pushed to the agent's desk at any one time and in such a way that it is obvious to the agent that this contact must be handled immediately. As a particular contact is presented, any related customer information is also shown. The components for the different tiers are designed to handle different magnitudes of contacts. The self-service tier components will process orders of magnitude more contacts than the deferred tier components, which will process orders of magnitude more contacts than the immediate assistance tier components.
0026A contact entering the contact center is initially assigned to one of the three tiers based on the type of media used by the contact in accessing the contact center. The embodiment shown in <figref idref="DRAWINGS">FIG. 1</figref> is further described with reference to three media types: voice calls, emails, and World Wide Web, although the invention is not so limited. Voice calls are initially routed to the immediate assistance tier <b>103</b>, emails are initially routed to the deferred tier <b>102</b>, and Web contacts are initially routed to the self-service tier <b>101</b>. Subsequent routing may be performed that escalates or de-escalates the contact to another tier (shown as arrows in <figref idref="DRAWINGS">FIG. 1</figref>). The subsequent routing can be based on one or more routing criteria, including factors defined by the contact center owner or subscriber, such as priority, access phone numbers, and time-out periods, and environmental factors such as contact activity. The routing criteria associated with a contact may change as the various components in the contact center process the contact. For example, if the routing criteria of a contact passes a pre-defined threshold, the contact may be escalated or de-escalated. Thus, an email is escalated (arrow <b>111</b>) to the immediate assistance tier <b>103</b> if it has not been answered when a “time-to-reply” period elapses. A voice call is initially routed to the immediate assistance tier <b>103</b> but is de-escalated (arrow <b>115</b>) to the deferred tier <b>103</b> if the caller chooses to leave voice-mail, or de-escalated (arrow <b>113</b>) to the self service tier <b>103</b> if the contact is sent to an interactive voice response (IVR) system for more processing. A self service Web contact can be escalated (arrow <b>107</b>) into the immediate assistance tier <b>103</b> by through “Click to Chat” or “Click to Talk” buttons available on the Web site, or escalated (arrow <b>109</b>) to the deferred tier <b>103</b> if the contact chooses to send an email instead. Details of the escalation and de-escalation of each media type is described in more detail in conjunction with the flowcharts in the next section. Furthermore, although the exemplary embodiments focus on voice, email, and Web contacts for ease in understanding, it will be appreciated that the invention encompasses all potential analog and digital media types, including fax, “faxback,” video, etc., in addition to being extensible to other WANs and to LANs. It will also be appreciated that the contact is not limited by its initial media type so, for example, the contact and agent in a collaboration session could be also taking by phone, an email message could generate a return fax or phone call, or the expiration of a time-out on a collaboration request might generate an email message to the contact promising a response within a set time period.
0027The three-tier service model <b>100</b> illustrated in <figref idref="DRAWINGS">FIG. 1</figref> operates within a digital multimedia contact system, one embodiment of which is shown in <figref idref="DRAWINGS">FIG. 2</figref>. The system architecture for contact center <b>200</b> is based on a workflow engine <b>201</b> that directs the activities of the agents in the center using workflow steps. A contact workflow is initiated by events that are routed into one of a set of workflow subsystems <b>205</b> by one of a set of media routers <b>221</b>. Each media router <b>221</b> and each corresponding workflow subsystem <b>205</b> are dedicated to a contact media type. An agent workflow is initiated by events routed into an agent subsystem <b>219</b> by an agent desktop component <b>229</b>. Events that trigger a workflow include a new call arriving at the contact center or an agent logging in. The workflow for a contact remains active until the contact is terminated; the workflow for an agent remains active until the agent logs out of the contact center <b>200</b>.
0028The workflows are executed by workflow logic <b>207</b>. Events are passed between the workflow logic <b>207</b> and the workflow subsystems <b>205</b> by a message passing layer <b>203</b>. The events can also modify the execution flow of existing contact or agent workflows.
0029When executed by the workflow logic <b>207</b>, a workflow for an immediate assistance contact causes a dynamic ACD (automatic contact distributor) <b>241</b> to allocate an agent to the contact. The allocation is also reflected in the agent's workflow. The operation of the dynamic ACD <b>241</b> is described in further detail below.
0030A contact coming into the contact center <b>200</b> is initially classified in accordance with a set of previously defined classifications, e.g., Sales, Customer Service, Support, etc., by the appropriate workflow subsystem <b>205</b>. Additional information is also gathered to determine the optimal routing of the contact. Information that narrows down the set of agents to which a contact can be routed is referred to as “contact requirements.” Examples of contact requirements include product knowledge, language fluency, and previous communication with the contact (each contact is considered a new one). Origin and destination information now is consistently collected from all media types, such as calling phone number and called phone number for voice calls. Subject information may also be collected from voice contacts based on responses to IVR menu options.
0031A voice router <b>223</b> provides an interface between a voice subsystem <b>213</b> and a conventional digital telephony system (voice server <b>222</b>), such as the DOT (Distributed Open Telephony) server from Tundo Corporation that handles IP (Internet Protocol) calls. The voice subsystem <b>213</b> starts a workflow when a call arrives at the contact center <b>200</b> and communicates a request to the voice server <b>222</b> to redirect the call to an agent (or to voice mail or IVR) as determined by the workflow. The voice server <b>222</b> receives digital voice calls (referred to as voice-over-IP or VoIP) directly from a digital wide-area network (WAN) <b>220</b>, such as the Internet, or via a gateway <b>251</b>, such as the Tundo Gateway, that converts analog voice calls <b>253</b> to VoIP calls. The gateway <b>251</b> also converts VoIP calls from the digital telephony system <b>222</b> into analog voice signals for transmission back to the caller.
0032A conventional email system (email server <b>226</b>), such as the Cisco Email Manager from Cisco Systems, processes deferred contacts received from the WAN <b>220</b>. The email system uses its own in-line rules engine for processing incoming email and placing it into mailboxes to be accessed by the agents as background tasks. The agents retrieve deferred contacts from these mailboxes explicitly. An email escalator <b>227</b> provides an interface between an email subsystem <b>217</b> and the conventional email system for emails that are escalated from deferred to immediate assistance. The email escalator <b>227</b> periodically reviews the mailboxes for pending emails that meet per-determined criteria for escalation, such as time-to-reply or customer value parameters. It then collects information about the email (customer, priority etc.) and passes this to the email subsystem <b>217</b>. In one embodiment, the emails are evaluated in chronological order and the emails that meet the escalation criteria are further broken down by classification and within a particular classification, the email is passed to the email subsystem <b>217</b> on a first-in, first-out basis.
0033The email subsystem <b>217</b> determines if the contact is entitled to be escalated to an immediate assistance contact based on the contact information and starts a contact workflow if it is. When the workflow succeeds in routing the email to an agent, the agent address is returned to the email escalator <b>227</b>, which passes it to the email subsystem <b>217</b> for actual routing to the agent. In an embodiment in which voice mail is routed to an agent as an audio attachment to an email, the email escalator <b>227</b> also serves to escalate voice mails to the immediate assistance tier if appropriate.
0034A conventional Web server <b>224</b> processes self-service contacts that originate from the WAN <b>220</b>. Such a server can offer browsing and searching capabilities for a knowledge base, or a set of FAQs (frequently asked questions). A collaboration router <b>225</b> provides an interface between a collaboration subsystem <b>215</b> and a conventional collaboration system, such as the Cisco Collaboration Server from Cisco Systems, that executes on, or in conjunction with, the Web server <b>224</b>. Web pages on the Web server <b>224</b> are modified to include “Click to Chat/Talk” buttons to connect to the collaboration system. When the button is clicked by a Web contact, the collaboration system sends an event to the collaboration router <b>225</b>, which in turns sends an event to the collaboration subsystem <b>215</b>. The collaboration subsystem <b>215</b> determines if the contact is entitled to be escalated to an immediate assistance contact and initiates a contact workflow if so. Once the collaboration request has been assigned to an agent, the agent address is passed back to the collaboration router <b>225</b> for actual routing. Other agents may be included in the collaboration session as necessary.
0035An agent subsystem <b>219</b> provides an interface between one or more agent desktops <b>229</b> and the workflow logic <b>207</b> for agent events. When notified of an agent login by the corresponding agent desktop <b>229</b>, the agent subsystem <b>219</b> validates the agent before starting an agent workflow that describe the agent's work process until the agent logs out. The agent desktop <b>229</b> notifies the agent subsystem <b>219</b> of all agent state changes. The agent subsystem <b>219</b> is also responsible for watching the agent's phones for outbound call events. It passes this information to the workflow logic <b>207</b> to ensure the agent state is changed to “busy.” In addition, when an agent initiates a call, the agent subsystem <b>219</b> sends an “outbound call” event to the agent's workflow so that agent-initiated contacts can be tracked.
0036The agent desktop <b>229</b> controls the presentation of tasks on an agent's desktop. The tasks originate from the multiple conventional systems with which the contact center <b>200</b> interfaces as previously described, as well as from the workflow engine <b>201</b>. Each of the conventional systems has its own user interface. Monitoring tools may also be available to certain agents, such as those providing statistics on the operation of the contact center and individual agents. The agent desktop <b>229</b> integrates the separate user interfaces into a single coherent interface that presents the agent with immediate assistance contacts as foreground tasks and deferred contacts as background tasks. Thus, for example, the foreground mode integrates the telephony interface, the collaboration interface, and the email interface (for escalated emails). Similarly, the background mode integrates the email interface (for non-escalated emails and other deferred contacts, such as voice mail, fax, forms, etc.) and the monitoring tools, for example. The agent desktop <b>229</b> also integrates with any existing customer relation management application to provide customer information to the agent for the foreground and background tasks. The connections between the agent desktops <b>229</b> and the conventional systems <b>222</b>, <b>224</b>, <b>226</b> are not shown in <figref idref="DRAWINGS">FIG. 2</figref> for clarity in illustration.
0037In an alternate embodiment not shown, the agent desktops <b>229</b> do not communicate directly to the agent subsystem <b>219</b> but are managed through a desktop manager component that handles concurrent requests from desktops and routes responses. To concurrently handle multiple desktops, a client portion of the desktop manager executes within each agent desktop component and communicates with a server portion that queues events arriving from the agent subsystem <b>219</b> and sends them to the appropriate desktop in response to polls from the desktops. Executing the server portion of the desktop manager on a machine separate from that executing the agent subsystem, provides additional scaling capabilities to the contact center.
0038The relationship among the components of the contact center <b>200</b> described so far is most easily understood through an example. When an analog voice call <b>253</b> is received by the gateway <b>251</b>, it is converted to a VoIP call and directed by the voice server <b>222</b> to a voice media router <b>223</b>. The voice media router <b>223</b> informs the voice subsystem <b>213</b> of the incoming contact and the voice subsystem <b>213</b> creates a workflow for the contact. Assuming the contact is to remain at the immediate assistance tier <b>103</b>, the workflow requests the dynamic ACD <b>241</b> allocate an agent to the contact. The dynamic ACD <b>241</b> passes the agent information back to the voice subsystem <b>213</b>, which then sends the agent and contact information to the voice router <b>223</b>. The voice router <b>223</b>, in turn, sends the information to the voice server <b>222</b> for routing. The voice server <b>222</b> transfers the contact to the appropriate agent desktop <b>229</b> as a foreground task.
0039Returning now to <figref idref="DRAWINGS">FIG. 2</figref>, the workflow engine <b>201</b> also contains a database <b>231</b> of contact <b>233</b> and agent records <b>235</b>. A database unification layer <b>261</b> combines the information in the database <b>231</b> and information maintained by the voice <b>222</b>, Web <b>224</b>, and email <b>226</b> servers into a coherent view of the contact center. The contact and agent workflows query and update the database <b>231</b> through a database subsystem <b>211</b> that converts workflow requests into calls for the database unification layer <b>261</b>. In an alternate embodiment not shown in <figref idref="DRAWINGS">FIG. 2</figref>, the contact and agent workflows query the database unification layer <b>261</b> directly. In yet another alternate embodiment, the database unification layer is incorporated into the database subsystem <b>211</b>.
0040The database unification layer <b>261</b> has access to, and is accessible by, all the other components of the contact center to allow reporting and analysis of the activities of the contact center regardless of the media type used by the contacts. The connections between the database unification layer <b>261</b> and the other components are not shown in <figref idref="DRAWINGS">FIG. 2</figref> for clarity in illustration. The information can be retrieved through the database unification layer <b>261</b> by a monitoring tool (not shown) to graphically and/or numerically illustrate the state of the contact center (number of contacts awaiting service, how many agents are on break, etc.). For instance, the monitoring tool may display the number of unserviced contacts broken down by classification. Additionally, a conventional reporting application can be employed to obtain information through the database unification layer <b>261</b> for standardized reports. Agents, supervisors and managers may each have access to a set of such reports to gauge the efficiency of the contact center, a group, or individual agent. The database unification layer <b>261</b> also provides for the collection of billing information and for the tracking of contacts through the contact center, both across media types.
0041In the embodiment shown in <figref idref="DRAWINGS">FIG. 2</figref>, the dynamic ACD <b>241</b> uses unordered lists of waiting contacts <b>237</b> and available agents <b>239</b> to match a contact with an agent. The workflow engine <b>201</b> causes the dynamic ACD <b>241</b> to create and manage the unordered lists of contacts <b>237</b> and agents <b>239</b>. Although shown as separate from the database <b>231</b> in <figref idref="DRAWINGS">FIG. 2</figref>, it will be appreciated that the unordered lists <b>237</b>, <b>239</b> may be database structures that are managed by the database subsystem <b>211</b> as instructed by the workflow engine <b>201</b> and the dynamic ACD <b>241</b>.
0042As previously described, contact requirements (e.g., product knowledge, language fluency, previous communication) are used to determine the set of agents to which a contact can be routed. Information used to decide the appropriateness of an agent within the set is referred to as “agent attributes” and may include such parameters as seniority and length of time waiting for a contact. Furthermore, agents may be dedicated to one or more contact classifications. When an immediate assistance contact requests an agent, the dynamic ACD <b>241</b> searches for an appropriate agent from the list <b>239</b> of available agents by filtering the agents against the contact classification and any requirements, and prioritizes the resulting agents according to their attributes. If an agent is available, the dynamic ACD <b>241</b> passes the information for the agent back to the appropriate subsystem to route the contact to the agent and removes the agent from the available agent list <b>239</b>. If no appropriate agent is available, the contact is entered into the waiting contact list <b>237</b> until an appropriate agent becomes available to take the contact. Similarly, when an agent requests a contact, the waiting contact list <b>237</b> is filtered by classification and “agent requirements” (e.g., media type, territory) and prioritized according to contact attributes such as time in queue and business value. The matching process is invoked by a step in the contact workflow for an immediate assistance contact or in the agent workflow for an available agent as explained further below.
0043As illustrated in <figref idref="DRAWINGS">FIG. 2</figref>, there may be multiple instances of each of the media routers <b>221</b>. There is also an instance of the agent desktop <b>229</b> running on each agent workstation in the contact center. Although only a single set of workflow subsystems <b>205</b> is shown, it will be appreciated that workflow engine <b>201</b> may contain multiple instances of one or more of the workflow subsystems <b>205</b> depending on workload. Additionally, multiple workflow engines <b>201</b> may be present within a contact center <b>200</b>.
0044Furthermore, the architecture permits distribution of the various components among multiple computers, thus enabling scalability of the contact center <b>200</b>. As described previously, each component provides services for other components. For instance, the dynamic ACD <b>241</b> provides an agent allocation service and the collaboration subsystem <b>215</b> provides a collaboration workflow service. In one embodiment, a service manager (not shown) provides a central location for registration and discovery of the contact center service providers. When a component needs a service (such as the initialization of a workflow), it calls the service manager to find the location of that service. The service manager reviews a list of all registered providers of that service and selects the appropriate providers (e.g., shortest routing to requester). Finally it chooses the best provider based on the unused capacity of each service. Thus, the contact center <b>200</b> may continue to start services on new or existing machines as necessary to deal with its workload.
0045The system level overview of the operation of an embodiment of the invention has been described in this section of the detailed description. A tiered service model that allows the escalation and de-escalation of a contact has been described, along with its operation within a digital multimedia contact center. The digital multimedia contact center handles contacts in accordance with the contact's required level of service instead of relying solely on the media type to determine the necessary processing. Because different levels of service incur different quantities of contacts, different processing methodologies are appropriate within the contact center. Thus, workflows are used to handle immediate assistance contacts regardless of media type because a workflow engine excels at processing relatively small numbers of contacts in real-time. A workflow engine also gives the subscriber fine-grained control over the handling of the high priority contacts that require immediate assistance. On the other hand, deferred contacts number least an order of magnitude greater than immediate assistance contacts and are handled most efficiently through an inline rule engine such as commonly implemented in an email (and/or voice mail) system. Finally, because the greatest number of contacts are self-service contacts which require no agent intervention, processing techniques such as interactive voice response, automatic email response, and knowledge base/FAQ logic on Web servers are used.
0046While the invention is not limited to any particular number of service tiers, the invention has been described in terms of a three tier model. The invention has further been described using an example that mixes voice calls, emails, and Web contacts within the same contact center but the invention is not so limited. Additionally, the invention can be practiced with any underlying architecture that allows the escalation and de-escalation of contacts through a tiered service model.
Methods of Embodiments of the Invention
0047In the previous section, a system level overview of the operations of embodiments of the invention was described. In this section, the particular methods of one embodiment of the multimedia copy contact center <b>200</b> are described in terms of computer software with reference with a series of flowcharts and also a series of tier diagrams. The flowcharts and tier diagrams are grouped according to related components within the contact center. Thus, <figref idref="DRAWINGS">FIG. 3A</figref> and flowcharts <figref idref="DRAWINGS">FIGS. 4A–C</figref> illustrate the processing of the voice components. <figref idref="DRAWINGS">FIG. 3B</figref> and flowcharts <b>5</b>A–C illustrate the processing of the email escalator components. <figref idref="DRAWINGS">FIG. 3C</figref> and flowcharts <b>6</b>A–C illustrate the processing of the collaboration components. The processing of the agent components are illustrated only through flowcharts in <figref idref="DRAWINGS">FIGS. 7A–C</figref>.
0048The methods to be performed by a computer constitute computer programs made up of computer-executable instructions. Describing the methods by reference to a flowchart enables one skilled in the art to develop such programs including such instructions to carry out the methods on suitably configured computers (the processor of the computer executing the instructions from computer-readable media) acting as one or more of the components of the contact center <b>200</b> in <figref idref="DRAWINGS">FIG. 2</figref>. The computer-executable instructions may be written in a computer programming language or may be embodied in firmware logic. If written in a programming language conforming to a recognized standard, such instructions can be executed on a variety of hardware platforms and for interface to a variety of operating systems. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. Furthermore, it is common in the art to speak of software, in one form or another (e.g., program, procedure, process, application, module, logic . . . ), as taking an action or causing a result. Such expressions are merely a shorthand way of saying that execution of the software by a computer causes the processor of the computer to perform an action or a produce a result.
0049As shown in <figref idref="DRAWINGS">FIG. 3A</figref>, the voice components receive a voice phone call and direct it to either an agent for immediate assistance <b>305</b> or to an interactive voice response system <b>301</b> for self-service. If directed initially to an agent <b>305</b>, the workflow engine may de-escalate the contact (represented by arrow <b>311</b>) to voice mail <b>303</b> if an agent is not available within a given period of time. In addition, the workflow engine may de-escalate an immediate assistance contact (represented by arrow <b>313</b>) to interactive voice response (IVR) <b>301</b> if the call priority is less than a pre-determined amount or if the caller chooses self-service. A self-service contact may be escalated by a voice mail manager (represented by arrow <b>309</b>) if the user chooses to leave voice mail. Alternatively, when a self-service contact requests active assistance from an agent, the workflow engine <b>201</b> and the dynamic ACD <b>241</b> escalate the contact into the immediate assistance <b>305</b> as represented by arrow <b>307</b>. In an embodiment in which the voice mail recording is attached to an email for subsequent processing by an agent, the email with the voice mail attachment may be escalated through a combination of the email escalator, the workflow engine, and the dynamic ACD (represented by arrow <b>315</b>) as explained below in conjunction with FIGS. <b>3</b>B and <b>5</b>A–C.
0050Turning now to <figref idref="DRAWINGS">FIGS. 4A–C</figref>, the flowchart in <figref idref="DRAWINGS">FIG. 4A</figref> illustrates the acts performed by the voice router <b>223</b> component when executing a voice router method <b>400</b>. The voice router method <b>400</b> receives notification of a call from the voice server <b>222</b> (block <b>401</b>). As part of the information received from the gateway, the voice router method <b>400</b> receives the originating and destination phone numbers for the call, which it then sends to the voice subsystem <b>213</b> (block <b>403</b>). The voice subsystem determines how to route the call, as will be described further below, and sends the routing information to the voice router. The voice router method <b>400</b> receives the routing information (block <b>405</b>) and then sends the routing information to the voice server <b>222</b> for routing (block <b>407</b>).
0051Turning now to <figref idref="DRAWINGS">FIG. 4B</figref>, a voice subsystem method <b>420</b> executed by the voice subsystem component <b>213</b> is described. The voice subsystem method <b>420</b> receives the originating and destination phone numbers from the voice router (block <b>421</b>), collects additional contact information and creates a contact record for the contact (block <b>423</b>). The voice subsystem method <b>420</b> then evokes an appropriate voice workflow for the contact from the workflow engine <b>201</b> (block <b>425</b>). One of the steps within the voice workflow will be the determination of service tier, i.e., immediate assistance or a self-service. Assuming the contact is a self-service contact, the voice subsystem method <b>420</b> receives an IVR request from the voice workflow at block <b>427</b> and then sends the IVR information to the voice recorder at block <b>429</b> so that the voice router will route the voice call to interactive voice response. On the other hand, if the workflow determines that the contact is an immediate assistance contact (block <b>431</b>), the voice subsystem method <b>420</b> receives an agent request from the workflow and requests an agent from the dynamic ACD (block <b>433</b>) in response. The dynamic ACD attempts to match an agent with the contact as previously described. Assuming no agent is available within a pre-determined period of time, the workflow causes additional options to be presented to the contact. In one instance, the contact may choose to be routed to voice mail, at which point the workflow engine sends a remove-contact event to the voice subsystem method <b>420</b>, which is received at block <b>435</b>. In response, the voice subsystem method <b>420</b> requests that the contact be removed from the list by the dynamic ACD (block <b>437</b>). If, however, an agent is available, the dynamic ACD sends the agent information to the voice subsystem method <b>420</b>, which in turn sends the agent information to the voice router (block <b>439</b>) so that the voice router may appropriately route the contact to the chosen agent. The voice subsystem method <b>420</b> continues to monitor the contact to determine if the call is answered within a reasonable period of time (block <b>441</b>). If it is, then the voice subsystem method <b>420</b> injects a handle-agent event into voice workflow at block <b>443</b> so that the workflow will continue to handle the contact as explained further below. Alternatively, if the call is not answered, the voice subsystem method <b>420</b> returns to block <b>433</b> and requests another agent from the dynamic ACD. In one embodiment, the voice subsystem method <b>420</b> generates events which create and update contact information regarding the voice call in the database <b>231</b>.
0052<figref idref="DRAWINGS">FIG. 4C</figref> illustrates one embodiment of a voice workflow <b>450</b> that is executed by the workflow logic <b>207</b> for a voice contact. When the voice workflow <b>450</b> is initiated, it obtains contact information through the IVR process at block <b>451</b> (shown in phantom) if it is unable to determine the contact information from the originating phone number. The contact is classified based on its information at block <b>453</b>. A determination is made as to the level of service to be given to this contact (block <b>455</b>). If the contact is not entitled to immediate assistance, the voice workflow <b>450</b> requests the contact be routed to the IVR system by the voice subsystem (block <b>477</b>). The voice workflow <b>450</b> continues to monitor the contact because a contact at the IVR self-service tier <b>301</b> may choose to leave a voice mail or wait for an agent during the IVR session by inputting certain digits. The input digits are captured as events by the voice workflow <b>450</b> at block <b>479</b> and, depending on the event, the voice workflow <b>450</b> escalates the contact to the deferred assistance tier <b>303</b> by transferring the contact into the voice mail system (block <b>471</b>) or to the immediate assistance tier <b>305</b> by requesting an agent for the contact (block <b>457</b>). In one embodiment, the email system manager serves as the voice mail manager and the processing represented by block <b>471</b> is performed by the workflow. The workflow records the contact's message, attaches the recording to an email message addressed to a general mailbox, and sends the email to the email subsystem <b>217</b> for transmission to the email server <b>226</b>.
0053If the contact is entitled to immediate assistance, an agent is requested from the voice subsystem at block <b>457</b> and the caller is put on hold to wait for events from the voice subsystem (block <b>459</b>). If a handle-agent event is injected into the voice workflow <b>450</b> by the voice subsystem because an agent allocated to this contact has answered the phone, the handle-agent event is detected at block <b>461</b> and contact information is sent to the voice subsystem (block <b>463</b>). The voice workflow <b>450</b> then loops waiting for events and responding appropriately to those events, including updating the contact record, until the call is terminated as represented by block <b>465</b>. Once the call is terminated, the voice workflow <b>450</b> sends a left-session event to the agent subsystem at block <b>467</b> that causes the agent to become available to receive a new contact.
0054If the contact chooses to be sent to voice mail prior to being routed to an agent (block <b>461</b>), the voice workflow <b>450</b> sends a remove-contact event to the voice subsystem at block <b>469</b> to remove the contact from the list managed by the dynamic ACD. The voice workflow <b>4501</b> transfers the contact to the voice mail manager to record the message (block <b>471</b>) and terminates the call after the messages is recorded (block <b>473</b>). The voice mail is then sent to a general mailbox to be acted upon by an agent at a later point (block <b>475</b>). In one embodiment, the voice message is attached to an email message and placed into the mailbox by the email system.
0055Referring now to <figref idref="DRAWINGS">FIG. 3B</figref> and <figref idref="DRAWINGS">FIGS. 5A–C</figref>, the email escalator component of the multimedia contact center <b>200</b> is described. As shown in <figref idref="DRAWINGS">FIG. 3B</figref>, a deferred email <b>323</b> is escalated into a high priority email <b>325</b> through a combination of the email escalator, the workflow engine, and the dynamic ACD (represented as arrow <b>327</b>). Alternatively, an email message may be handled through an automatic response option in the conventional email system and such an email is de-escalated by the email server <b>226</b> (represented as arrow <b>329</b>) into an auto response contact <b>321</b>. As automatic response options are common in conventional email systems, the de-escalation process is not further described.
0056<figref idref="DRAWINGS">FIG. 5A</figref> illustrates an email escalator method <b>500</b> performed by the email escalator <b>227</b>. The email escalator method <b>500</b> constantly reviews the email system mailboxes or queues (block <b>501</b>) to determine if any pending emails should be escalated based on factors previously described. If an email is to be escalated (block <b>503</b>), it is placed in a high priority queue (block <b>505</b>) and the email information is sent to the email subsystem <b>217</b> at block <b>507</b>. As will be explained in conjunction with <figref idref="DRAWINGS">FIG. 5B</figref>, the email subsystem <b>217</b> matches the contact to an agent and returns the agent identifier, which is received by the email escalator method <b>500</b> at block <b>509</b>. The email escalator method <b>500</b> routes the email (via the email system) to the agent desktop (block <b>511</b>) as a foreground task. In one embodiment, the email is presented on the desktop already opened. Once the agent has determined that he or she is ready to handle the email, the email escalator method <b>500</b> receives an agent-ready event from the agent desktop (block <b>513</b>) and sends that event to the email subsystem at block <b>515</b>. The agent workflow will not assign the agent to any other contacts until the email is handled. In another embodiment, the email escalator method <b>500</b> instructs the email subsystem to identify an email that is close to being escalated and to give the agent a visual clue, such as color or a special icon, that the email must be handled immediately.
0057A component acting as the email subsystem <b>217</b> executes a email subsystem method <b>520</b> to perform the functions illustrated in <figref idref="DRAWINGS">FIG. 5D</figref>. The email subsystem method <b>520</b> receives the email information from the email escalator at block <b>521</b> and invokes the workflow logic <b>207</b> at block <b>523</b>. In one embodiment, when the email subsystem method <b>520</b> receives the email information at block <b>523</b>, it creates the contact record for the email and marks it as escalated. In an alternate embodiment, the email manager a contact record is created for each email received at the contact center and the email subsystem method <b>520</b> marks the existing contact record as escalated at block <b>523</b>.
0058The workflow requests an agent from the email subsystem at block <b>525</b>. The email subsystem method <b>520</b> requests the agent from the dynamic ACD at block <b>527</b>. When an agent is allocated to the contact, the agent identifier is returned from the dynamic ACD to the email subsystem method <b>520</b>, which, in turn, at block <b>529</b> returns the agent identifier to the email escalator to cause the contact to be routed to be identified agent. The email subsystem method <b>520</b> injects a handle-agent event into the email workflow at block <b>531</b> in response to receiving the agent-ready event from the email escalator. In one embodiment, the email subsystem method <b>520</b> generates events which create and update contact information regarding the escalated email in the database <b>231</b>.
0059A method <b>540</b> for a contact workflow for an escalated email is illustrated in <figref idref="DRAWINGS">FIG. 5C</figref>. When the escalated email workflow <b>540</b> begins, it requests an agent from the email system at block <b>541</b>, which causes the events previously described to occur. When the escalated email workflow <b>540</b> receives the handle-agent event at block <b>543</b>, the workflow sends the email to the agent desktop at block <b>545</b> via the agent subsystem <b>219</b>. As the agent is working with the escalated email message, the agent may generate events that cause the escalated email workflow <b>540</b> to perform certain functions, including updating the contact record, represented generally at block <b>547</b>. When the agent is finished with the escalated email message, the escalated email workflow <b>540</b> sends a left-session event to the agent subsystem at block <b>549</b>.
0060<figref idref="DRAWINGS">FIG. 3C</figref> illustrates the escalation that is performed for a contact that initially appears at the contact center <b>200</b> through a self-service Web site <b>341</b>. By choosing to send an email, the contact can be escalated (represented by arrow <b>349</b>) through the email manager into a deferred email contact <b>343</b>. Alternatively, if the contact clicks on a collaboration/chat button, it is escalated by a combination of the workflow engine and the dynamic ACD (represented by arrow <b>347</b>) into an immediate assistance contact <b>345</b>. As the sending of email is handled by the conventional email system, the escalation from a self-service contact <b>341</b> into a deferred email contact <b>343</b> is not further discussed.
0061Turning now to <figref idref="DRAWINGS">FIGS. 6A–C</figref>, the escalation of a contact from a self-service Web contact <b>341</b> to an immediate assistance collaboration contact <b>345</b> is described beginning with collaboration router method <b>600</b> performed by the collaboration router <b>325</b>. The collaboration router method <b>600</b> receives the contact information from the web server (block <b>601</b>) and sends the contact information to the collaboration subsystem <b>215</b> (block <b>603</b>) to have an agent allocated to the contact. When the collaboration router method <b>600</b> receives the agent identifier from the collaboration subsystem at block <b>605</b>, then routes the collaboration session to the agent desktop for the identified agent (block <b>607</b>) via the collaboration server.
0062A collaboration subsystem method <b>620</b> executed by the collaboration subsystem <b>215</b> is next described in conjunction with <figref idref="DRAWINGS">FIG. 6D</figref>. The collaboration subsystem method <b>620</b> receives the contact information from the collaboration router at block <b>621</b> and invokes a collaboration workflow for the contact at block <b>623</b>. A contact record for the collaboration contact is also created at block <b>623</b>. The collaboration subsystem method <b>620</b> receives an agent request from the collaboration workflow (block <b>625</b>) and requests an agent from the dynamic ACD (block <b>627</b>). When the dynamic ACD returns the agent identifier to the collaboration subsystem method <b>620</b>, it returns the agent identifier to the collaboration router (block <b>629</b>) for routing the collaboration session to the appropriate agent's desktop. The collaboration subsystem method <b>620</b> also injects a handle-agent event into the collaboration workflow at block <b>623</b>. Events resulting from the collaboration session are injected into the workflow by the collaboration subsystem method <b>620</b> when the session terminates (block <b>633</b>). In one embodiment, the collaboration subsystem method <b>620</b> generates events which create and update contact information regarding the collaboration session in the database <b>231</b>.
0063Turning now to <figref idref="DRAWINGS">FIG. 6C</figref>, a collaboration workflow method <b>640</b> that is executed by the workflow logic <b>207</b> as a collaboration workflow for a contact is described. When the collaboration workflow method <b>640</b> begins, it requests an agent from the collaboration subsystem at block <b>641</b>. The collaboration workflow method <b>640</b> receives a handle-agent event from the collaboration subsystem at block <b>643</b>. The handle-agent event informs the workflow that the agent is now ready for the collaboration session and collaboration workflow method <b>640</b> sends the contact information to the agent desktop (block <b>645</b>) via the agent <b>219</b> subsystem. The collaboration workflow method <b>640</b> updates the contact record with the events received from the collaboration subsystem when the session is terminated (block <b>647</b>). The collaboration workflow method <b>640</b> also sends a left-session event into the agent subsystem at block <b>649</b>.
0064The methods used by the multimedia contact center <b>200</b> for agents are now described with reference to the flowcharts in <figref idref="DRAWINGS">FIGS. 7A–C</figref>. <figref idref="DRAWINGS">FIG. 7A</figref> illustrates an agent desktop method <b>700</b> that presents tasks on an agent desktop <b>229</b>. The agent desktop method <b>700</b> receives a login event when an agent logs into the contact center (block <b>701</b>). The agent desktop method <b>700</b> sends the agent information into the agent subsystem <b>219</b> at block <b>703</b>. As part of their processing, the agent subsystem <b>219</b> and the agent workflow <b>207</b> make the agent available for contacts. The agent desktop method <b>700</b> waits for messages from the agent and the agent subsystem at block <b>705</b>. If the agent desktop method <b>700</b> receives the routed contacts (block <b>707</b>), it passes the contact information onto to appropriate underlying system (such as the email system and the collaboration system) at block <b>709</b>. When the appropriate system has terminated the contact, the agent desktop method <b>700</b> receives a wrap-up event from the agent subsystem (block <b>711</b>), which causes it to put the agent into a wrap-up state (block <b>713</b>). The agent desktop method <b>700</b> sends an end-of-wrap up event to the agent subsystem at block <b>715</b> when the agent has finished the contact wrap up procedures.
0065The agent desktop method <b>700</b> also handles the transition of the agent into various states such as break, logout, etc. If the agent is requesting a break (block <b>717</b>), the agent desktop method <b>700</b> sends the break request to the agent subsystem (block <b>719</b>), which forwards it onto the agent workflow for a decision (as described further below). If the break request is allowed (block <b>721</b>), the agent desktop method <b>700</b> waits for the agent to return from break and sends an off-break event to the agent subsystem to inform it that the agent is again available (block <b>723</b>).
0066If the agent is logging out (block <b>725</b>), the agent desktop method <b>700</b> sends an agent-logout event into the agent subsystem at block <b>729</b>. All other messages are sent to the agent subsystem at block <b>727</b>. One of skill in the art will readily understand the processing necessary to transition the agent into other states without further illustration.
0067Referring now to <figref idref="DRAWINGS">FIG. 7B</figref>, an agent subsystem method <b>730</b> executed by the component acting as the agent subsystem <b>219</b> is described. The agent information is received from the agent desktop at block <b>731</b> when the agent logs into the contact center. The agent subsystem method <b>730</b> invokes an agent workflow from the workflow engine <b>201</b> at block <b>733</b> and waits for events from the agent workflow and the agent desktop <b>229</b> (block <b>735</b>). If the event is a contact request from the agent workflow (block <b>736</b>), the agent subsystem method <b>730</b> checks to see if there is a pending break request from the agent desktop (block <b>737</b>). If not, the agent subsystem method <b>730</b> requests a contact for the agent from the dynamic ACD at block <b>739</b>. Once the dynamic ACD returns a contact, the agent subsystem method <b>730</b> injects a handle contact event into the agent workflow (block <b>740</b>). When the agent or the contact terminates the call or the session, the agent subsystem method <b>730</b> receives a left-session event from the corresponding contact workflow, i.e., the voice workflow, the email workflow, or the collaboration workflow, at block <b>741</b>, and injects the event into the agent workflow at block <b>742</b>. The agent subsystem method <b>730</b>, in conjunction with the current session or call, also receives a wrap-up event from the agent workflow (block <b>743</b>), which it sends to the agent desktop (block <b>745</b>). When the agent desktop has determined that the agent is completely wrapped up the contact, the agent subsystem method <b>730</b> receives the end-wrap-up event from the agent desktop at block <b>746</b>, and in turn, injects the event into the agent workflow at block <b>747</b>. If a break request is pending (block <b>737</b>), the agent subsystem method <b>730</b> waits until the agent workflow makes a decision on the break request (block <b>748</b>). If allowed, the agent subsystem method <b>730</b> waits at block <b>735</b> for an off-break event from the agent desktop. If not allowed, the agent subsystem method <b>730</b> requests a contact from the dynamic ACD at block <b>739</b>.
0068If the agent subsystem method <b>730</b> receives a break request from the agent desktop (block <b>749</b>), it sends an on-break event to the agent workflow (block <b>770</b>) and waits for a response, which it forwards to the agent desktop at block <b>751</b>. If the break is allowed by the agent workflow (block <b>752</b>), the agent subsystem method <b>730</b> requests the agent be removed from the agent list by the dynamic ACD at block <b>753</b> and waits a block <b>735</b> for an off-break event from the agent desktop. When the off-break event is received (block <b>754</b>), the agent subsystem method <b>720</b> injects the off-break event into the agent workflow at block <b>755</b> to cause the workflow to request a contact for the now-available agent.
0069If a logout event is received (block <b>756</b>), the agent subsystem method <b>730</b> requests the agent be removed from the agent list by the dynamic ACD (block <b>759</b>) and injects a logout event into the agent workflow (block <b>760</b>). The handling of other events is illustrated generically at block <b>757</b>, where the event is injected into the agent workflow, and at block <b>758</b>, where the agent subsystem method <b>730</b> forwards any response received from the agent workflow to the agent desktop. One of skill in the art will readily understand the processing necessary to handle different types of events without further illustration.
0070An agent workflow method <b>770</b> for an agent workflow is now described in conjunction with <figref idref="DRAWINGS">FIG. 7C</figref>. The agent workflow method <b>770</b> begins by requesting a contact for the agent from the agent subsystem at block <b>771</b>. The agent workflow method <b>770</b> then waits for agent events at block <b>773</b>. If a handle-contact event is received (block <b>753</b>), the agent has been allocated to a contact and the agent workflow method <b>770</b> waits for a left-session event from the corresponding contact workflow that indicates the contact session has terminated (block <b>777</b>). When the left-session event arrives, the agent workflow method <b>770</b> sends a wrap-up event to the agent subsystem at block <b>778</b> and waits for an end-wrap-up event that indicates the agent is now available (block <b>781</b>). The agent workflow method <b>770</b> loops back to block <b>771</b> to request a new contact for the agent.
0071If an on-break event is received by the agent workflow method <b>770</b> (block <b>761</b>), the agent workflow method <b>770</b> determines if the break can be allowed based on the status of the call center (block <b>785</b>). In either case, a message is sent to the agent subsystem to notify the agent desktop of the decision (block <b>785</b>). If the break is allowed (block <b>785</b>), the agent workflow waits for an off-break event to be received at block <b>786</b>. If the break is not allowed, the agent workflow method <b>770</b> loops to block <b>773</b> to wait for a contact.
0072If an agent logout event is received by the agent workflow method <b>770</b> (block <b>779</b>), the agent workflow method <b>770</b> terminates. In an embodiment not shown, the agent logout event is a request that can be denied based on the state of the contact center, such as when the contact center is overloaded, or allowed at an appropriate time, such as when the agent workflow requests a new contact. All other events are handled by the agent workflow method <b>770</b> as generically illustrated by block <b>791</b>. One of skill in the art will readily understand the processing necessary to handle different types of events within an agent workflow without further illustration.
0073It will be appreciated that the workflows described in conjunction with the flow charts <b>4</b>C, <b>5</b>C, <b>6</b>C and <b>7</b>C are simplified examples of the actions available through the workflow logic <b>207</b> and are not intended to limit the invention to only those actions and sequences illustrated. A detailed description of one embodiment of the workflow logic <b>207</b> and the workflow actions is given in the next section.
0074In addition, one of skill in the art will readily conceive of alternate logic flows with more or fewer processes or different processes that achieve the results of these method and such alternatives are considered within the scope of the invention. For example, instead of having the contact workflows inject the left-session events directly into the agent workflow, in one alternate embodiment, the contact workflow sends a contact-ended event to the contact subsystem and thence to the appropriate media router, which causes the router to send the left-session event to the agent subsystem for injection into the agent workflow. In another alternate embodiment, the termination of the contact workflow causes the contact subsystem to send the contact-ended event to the appropriate media router, causing the router to send the left-session event to the agent subsystem and thence to the agent workflow.
0075The particular methods performed by components of one embodiment of the digital multimedia contact center of the present invention have been described in terms of media-specific processing diagrams and flowcharts. The methods performed by a voice router, a voice subsystem, and workflow logic for a voice contact have been shown by reference to flowcharts <b>4</b>A–C including all the acts from <b>401</b> until <b>407</b>, from <b>421</b> until <b>443</b>, and from <b>451</b> until <b>475</b>, respectively. The methods performed by an email escalator, an email subsystem, and workflow logic for an escalated email contact have been shown by reference to flowcharts <b>5</b>A–C including all the acts from <b>501</b> until <b>515</b>, from <b>521</b> until <b>531</b>, and from <b>541</b> until <b>549</b>, respectively. The methods performed by a collaboration router, a collaboration subsystem, and workflow logic for a collaboration contact have been shown by reference to flowcharts <b>6</b>A–C including all the acts from <b>601</b> until <b>607</b>, from <b>621</b> until <b>633</b>, and from <b>641</b> until <b>649</b>, respectively. The methods performed by an agent desktop, an agent subsystem and workflow logic for an agent have been shown by reference to flowcharts <b>7</b>A–C including all the acts from <b>701</b> until <b>729</b>, from <b>731</b> until <b>760</b>, and from <b>771</b> until <b>791</b>, respectively.
Internet Contact Center (iCC) Implementation
0076In this section of the detailed description, a particular implementation of the invention is described. Companies subscribe to the services of the iCC to manage their customer contacts. The iCC is sited remotely from the agents for the subscriber, who may be at various locations. The agent desktops <b>229</b> are Web browser-based that connect to the agent subsystem(s) <b>219</b> in the remote iCC. The subscriber's customers contact the iCC directly through the Internet or POTS and are then routed to the appropriate agent desktop through a virtual private network. The browser-based agent desktops enables the use of various plug-in applets that extend the basic capabilities of the agent desktop without extensive re-programming. Additionally, a combination Java applet/servlet can be used to implement the desktop manager described previously.
0077Messaging
0078Communication between the workflow engine <b>201</b> and the media routers <b>221</b>/agent desktop <b>229</b> is handled through a set of interfaces using Java RMI (remote method invocation). Three generic interfaces are provided in a messaging library. All contact workflow subsystems, e.g., voice subsystem <b>213</b>, collaboration subsystem <b>215</b> and email subsystem <b>217</b>, are required to implement at least a generic contact service interface, such as “ContactWorkflowServiceInterface” described below. All agent workflow subsystems, e.g. the agent subsystem <b>219</b>, are required to implement at least a generic agent service interface, such as “AgentWorkflowServiceInterface” described below Each media router <b>221</b> is required to implement at least a generic media router interface, such as “MediaRouterInterface” described below. New interfaces specific to the service requested can be defined that inherit from existing interfaces. Thus, for example, a voice service interface implements the generic contact service interface along with interfaces for telephony commands. Global variables pass information between the workflow subsystems <b>205</b> and the workflow logic <b>207</b>. The global variables contain the values needed by the workflow logic <b>207</b> in the context of a particular workflow, and requests made by the workflow logic <b>207</b> to the workflow subsystems <b>205</b> through various workflow steps described further below.
0079A media router <b>221</b> uses the ContactWorkflowServiceInterface of a particular contact workflow subsystem to 1) start a contact workflow and receive a contact identifier for the workflow, 2) inject an event into an existing workflow identified by a contact identifier, and 3) determine if the contact workflow subsystem is handling a specified contact. To start a workflow for a contact, a media router <b>221</b> invokes a “startWorkflow” method in the ContactWorkflowServiceInterface of the desired contact workflow subsystem, passing in an identifier for the media router interface of the media router (client), and the attributes of the contact (attributes), and receives an identifier for the newly created contact workflow in return (contactID), e.g., <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0080">startWorkflow(client, contactID, attributes). <br /> To inject an event into an existing workflow, a media router <b>221</b> invokes an “injectEvent” method in the ContactWorkflowServiceInterface of the appropriate contact workflow subsystem, identifying the contact workflow (contactID) and the event to be injected into the workflow (event), e.g., </li><li id="ul0002-0002" num="0081">injectEvent(contactID, event). <br /> To determine if a particular contact workflow subsystem is handling a specific contact, a media router calls a “handlesContact” method in the ContactWorkflowServiceInterface of the contact workflow subsystem, passing in the identifier of the contact workflow (contactID) and receives a boolean value in return, e.g., </li><li id="ul0002-0003" num="0082">handlesContact(contactId).</li></ul></li></ul>
0083An agent desktop <b>229</b> uses the AgentWorkflowServiceInterface to 1) start an agent workflow and receive an agent identifier for the workflow, 2) inject an event into an existing workflow identified by an agent identifier, and 3) determine if a particular agent workflow subsystem is managing a specified agent. As described previously, when multiple agent workflow subsystem are present, an agent desktop is assigned to one of the agent workflow subsystems by a service manager. To start an agent workflow, an agent desktop invokes a “startWorkflow” method in theAgentWorkflowServiceInterface of the appropriate agent workflow subsystem, passing in the attributes of the agent (attributes), and receives an identifier for the newly created agent workflow in return (agentID), e.g., <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0084">startWorkflow(agentID, attributes). <br /> To inject an event into an existing workflow, an agent desktop invokes an “injectEvent” method in the AgentWorkflowServiceInterface of the appropriate agent workflow subsystem, identifying the agent workflow (agentID) and the event to be injected into the workflow (event), e.g., </li><li id="ul0004-0002" num="0085">injectEvent(agentID, event). <br /> To determine if a particular agent workflow subsystem is handling a specific agent, an agent desktop calls a “handlesAgent” method in the AgentWorkflowServiceInterface of the agent workflow subsystem, passing in the identifier of the agent workflow (agentID) and receives a boolean value in return, e.g., </li><li id="ul0004-0003" num="0086">handlesAgent(agentId).</li></ul></li></ul>
0087The MediaRouterInterface allows contact workflow subsystems to route contacts to the agents allocated by the dynamic ACD and to terminate a contact session. To route a contact to an agent, a contact workflow subsystem invokes an “assignContactToAgent” method in the MediaRouterInterface of the appropriate media router, passing in the workflow identifier for the contact (contactID) and the workflow identifier for the agent (agentID) and receiving a boolean in return that indicates whether the routing was successful, e.g., <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0000"><ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0088">assignContactToAgent(contactID, agentID). <br /> To terminate a contact session, a contact workflow subsystem invokes a “terminateContact” method in the iCCMediaRouterInterface of the appropriate media router, passing in the workflow identifier for the contact (contactID), e.g., </li><li id="ul0006-0002" num="0089">terminateContact(contactID).</li></ul></li></ul>
0090Database Unification Layer
0091The database unification layer <b>261</b> implements a unified schema consisting of information replicated from a number of different sources including the databases used by the third-party systems, and the internal iCC database <b>231</b> as described previously. Each different source is defined in a sub-schema including: <ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0000"><ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0092">Billing</li><li id="ul0008-0002" num="0093">Customer Relationship Management (CRM)</li><li id="ul0008-0003" num="0094">Entitlement (Billing option, maximum agents, maximum contacts, . . . )</li><li id="ul0008-0004" num="0095">Provisioning (Agents, User IDs, Passwords, Classifications, Skills, Proficiencies, . . . )</li><li id="ul0008-0005" num="0096">Business Logic (Priority Expressions, Attributes, Stored Procedures, . . . )</li><li id="ul0008-0006" num="0097">Active State (Agent State, Session State, Contact State, Contact Center State, Customer State).</li></ul></li></ul>
0098The database unification layer provides access to the information in the various databases through Java classes, such as CRM, Provisioning, Entitlement, Rules, Contact Detail Record (CDR), Contact Center State.
0099The unified schema is synchronized with the vendor-specific sources by a set of database triggers. For instance, many conventional email systems use event handlers that watch for messages entering and changing state, and create and update CDR records as necessary, e.g. when an email message is responded to or forwarded to another agent. Updating one of the sources with information in the unified schema is accomplished through the Java classes.
0100One embodiment of a data structure <b>800</b> for a CDR is illustrated in <figref idref="DRAWINGS">FIG. 8A</figref>. The contact represented by the CDR <b>800</b> is identified through a contact ID field <b>801</b>. The media type through which the contact entered the iCC is specified in a media type field <b>803</b>. Assuming the contact has been classified, the classification for the contact is stored in a contact class ID field <b>805</b>. If the iCC is implemented in conjunction with a standard customer relationship management system, the CRM case identifier is stored in a case ID field <b>807</b> to allow tracking of the contact. The agent assigned to handle the contact is identified through an assigned agent ID field <b>809</b>. One or more fields <b>811</b> collectively record the history of the contact as it is process in the iCC. Each field <b>811</b> contains a contact state <b>813</b> and a timestamp <b>815</b>. Thus, the change in state of the contact can be tracked chronologically for the life of the contact. Exemplary contact states used by the iCC are shown in Table 1 below and it will be appreciated that more or fewer states may be used.
0101<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217pt" align="center" /><thead><row><entry namest="1" nameend="1" rowsep="1">TABLE 1</entry></row></thead><tbody valign="top"><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>iCC Contact States</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="offset" colwidth="21pt" align="left" /><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="119pt" align="left" /><tbody valign="top"><row><entry /><entry>State</entry><entry>Comment</entry></row><row><entry /><entry namest="offset" nameend="2" align="center" rowsep="1" /></row><row><entry /><entry>Initially Created</entry><entry /></row><row><entry /><entry>Escalated</entry></row><row><entry /><entry>Being Addressed</entry></row><row><entry /><entry>On Hold</entry></row><row><entry /><entry>Archived</entry><entry>after wrap-up</entry></row><row><entry /><entry>In Wrapup</entry></row><row><entry /><entry>Terminated</entry><entry>no agent assigned</entry></row><row><entry /><entry>Abandoned</entry><entry>contact quits before being helped</entry></row><row><entry /><entry>Queued</entry></row><row><entry /><entry>Demoted</entry></row><row><entry /><entry namest="offset" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0102One embodiment of a data structure <b>820</b> for an agent record is illustrated in <figref idref="DRAWINGS">FIG. 8B</figref>. The agent represented by the agent record <b>820</b> is identified by an agent ID field <b>821</b>. Assuming the agent has been classified, the classification for the agent is stored in an agent class ID field <b>823</b>. The contact identifier for the current contact the agent is handling is stored in an assigned contact ID field <b>825</b>. One or more fields <b>827</b> collectively record the history of the agent while he or she is logged into the iCC. Each field <b>827</b> contains an agent state <b>829</b> and a timestamp <b>831</b>. Thus, the change in state of the agent can be tracked chronologically during the workday of the agent. The agent states used by the iCC are shown in Table 2 below and it will be appreciated that more or fewer states may be used.
0103<tables id="TABLE-US-00002" num="00002"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217pt" align="center" /><thead><row><entry namest="1" nameend="1" rowsep="1">TABLE 2</entry></row></thead><tbody valign="top"><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>iCC Agent States</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="offset" colwidth="21pt" align="left" /><colspec colname="1" colwidth="63pt" align="left" /><colspec colname="2" colwidth="133pt" align="left" /><tbody valign="top"><row><entry /><entry>State</entry><entry>Comment</entry></row><row><entry /><entry namest="offset" nameend="2" align="center" rowsep="1" /></row><row><entry /><entry>Logged Out</entry><entry /></row><row><entry /><entry>On Break</entry></row><row><entry /><entry>Available</entry><entry>Logged in and not assigned a contact</entry></row><row><entry /><entry>Busy</entry></row><row><entry /><entry>Wrap Up</entry><entry>Post-contact processing</entry></row><row><entry /><entry namest="offset" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0104Soft ACD
0105The iCC uses a software-implemented ACD to manage the allocation of all contacts and agents. The Soft ACD exists as a set of stored procedures in the contact center database that refer to special database tables used as the unordered lists of available agents and waiting contacts. The unordered lists may be further logically subdivided, e.g., by classification.
0106The Soft ACD also loads business logic and provisioning information (described below) when required. Each classification within the organization (e.g., Sales, Support, Customer Service, etc.) is associated with a particular set of business logic. If any of this information changes, the Soft ACD is notified, it reloads this information, and immediately applies the new information to the iCC. While it is running, the Soft ACD maintains the state (classifications, requirements, and attributes) of each entry in the lists.
0107When a running workflow requests an agent or contact, the appropriate subsystem passes the request onto the Soft ACD as previously described. The Soft ACD determines the best match for the agent or contact by filtering the opposite list on classification and in light of any requirements specified in the request, and prioritizing the filtered entries using one or more “priority expressions.” Each priority expression contains a set of weighted contact/agent attributes that produce a priority from 0 to 100 when an entry is evaluated. The attributes and their weights exist as classes in the business logic sub-schema in the database unification layer and are described next. It should be noted that the Soft ACD dynamically performs the filtering and prioritizing anew for each request for a match.
0108While a contact or agent is waiting on a list, the requesting workflow is free to continue executing, but when an actual allocation occurs, a resource allocator notifies the corresponding subsystem, which then interrupts the requesting workflow to route the contact.
0109Business Logic
0110The business logic used by the iCC for a subscriber is defined through an email manager, a workflow editor, and an administrative interface. The email manager is used to create email rules that route email contacts into various predefined mailboxes. These rules may reference text in the from, to, subject and body of the message as well as make database queries. Mailbox queues are separate message areas maintained by the email server. Agents retrieve messages from these queues. Individual queues can be set up, e.g., for each agent or for separate products, and additions or deletions to the existing set of queues can be made as necessary. For example, the subscriber could initially define one queue per product per classification (“SalesPrinters” or “SupportPrinters”) and add more as business grows. The system administrator grants access to these queues on a per agent basis. An additional queue is defined for escalated email messages as previously described. After defining the queues, the rules which route messages into those queues are defined. Rules can also be specified that demote certain email messages into self-service by routing them to the auto-responder function.
0111The workflow editor defines a workflow for handling a contact or an agent. A subscriber may defined any number of agent and contact workflows through the workflow editor. For example, each agent might have a particular workflow based on the agent's login identifier. The workflows and their related invocation information are stored for reference by the workflow engine <b>201</b> in an LDAP directory server or other directory structure that defines hierarchical directory entries. For example, a subscriber might define the following hierarchy in which the entries at levels (a) and (b) are the invocation information for the workflows specified at levels (i).
0112<tables id="TABLE-US-00003" num="00003"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217pt" align="left" /><thead><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>1) asubscriber.com</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="14pt" align="left" /><colspec colname="1" colwidth="203pt" align="left" /><tbody valign="top"><row><entry /><entry>a) iCC</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="28pt" align="left" /><colspec colname="1" colwidth="189pt" align="left" /><tbody valign="top"><row><entry /><entry>i) configurations</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="42pt" align="left" /><colspec colname="1" colwidth="175pt" align="left" /><tbody valign="top"><row><entry /><entry>(1) wfVoice</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="56pt" align="left" /><colspec colname="1" colwidth="161pt" align="left" /><tbody valign="top"><row><entry /><entry>(a) 1234</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="70pt" align="left" /><colspec colname="1" colwidth="147pt" align="left" /><tbody valign="top"><row><entry /><entry>(i) Workflow “SalesContact.WFE”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="56pt" align="left" /><colspec colname="1" colwidth="161pt" align="left" /><tbody valign="top"><row><entry /><entry>(b) 1000</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="70pt" align="left" /><colspec colname="1" colwidth="147pt" align="left" /><tbody valign="top"><row><entry /><entry>(i) Workflow “SupportContact.WFE”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="42pt" align="left" /><colspec colname="1" colwidth="175pt" align="left" /><tbody valign="top"><row><entry /><entry>(2) wfEmail</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="56pt" align="left" /><colspec colname="1" colwidth="161pt" align="left" /><tbody valign="top"><row><entry /><entry>(a) sales@asubscriber.com</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="70pt" align="left" /><colspec colname="1" colwidth="147pt" align="left" /><tbody valign="top"><row><entry /><entry>(i) Workflow “SalesContact.WFE”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="56pt" align="left" /><colspec colname="1" colwidth="161pt" align="left" /><tbody valign="top"><row><entry /><entry>(b) support@asubscriber.com</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="70pt" align="left" /><colspec colname="1" colwidth="147pt" align="left" /><tbody valign="top"><row><entry /><entry>(i) Workflow “SupportContact.WFE”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="42pt" align="left" /><colspec colname="1" colwidth="175pt" align="left" /><tbody valign="top"><row><entry /><entry>(3) wfWebCollaboration</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="56pt" align="left" /><colspec colname="1" colwidth="161pt" align="left" /><tbody valign="top"><row><entry /><entry>(a) http://asubscriber.com/sales</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="70pt" align="left" /><colspec colname="1" colwidth="147pt" align="left" /><tbody valign="top"><row><entry /><entry>(i) Workflow “SalesContact.WFE”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="56pt" align="left" /><colspec colname="1" colwidth="161pt" align="left" /><tbody valign="top"><row><entry /><entry>(b) http://asubscriber.com/support</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="70pt" align="left" /><colspec colname="1" colwidth="147pt" align="left" /><tbody valign="top"><row><entry /><entry>(i) Workflow “SupportContact.WFE”</entry></row><row><entry /><entry namest="offset" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0113The administrative interface uses the classes in the business logic sub-schema to define logins, passwords, agent skills and proficiencies, call center classifications, service level objectives, email overdue/escalation thresholds, priority expressions, attributes, attribute weightings, etc. When the administrative interface starts up, it reads the system and subscriber business logic from the database using the business logic classes. When entities are changed, the relevant data is written back to the database through these same business logic classes. The administrative interface presents the subscriber with various graphical user interface (GUI) screen to assist the user in defining the subscriber business logic.
0114Through one of the GUI screens, the subscriber sets up the call center classifications, which define gross distinctions between contacts or between agents. The same set of classifications is used for both contacts and agents. Within a particular classification, the subscriber defines service level objectives for each media type. Service level objectives are defined as the percentage of contacts of a particular media type which must be handled in a specific time. Thus, the GUI screen for defining service level objectives presents the user with a list of the media types, an input area for a percentage value, and an input area for an elapsed time value.
0115Each agent has a set of skills and a proficiency within each skill, which are specified and modified through the administrative interface. When a contact requests an agent, certain skills/proficiencies may be specified as contact requirements. The requirements may also include aging information for relaxing those requirements after a certain amount of time has elapsed without the contact being helped. For instance, the aging information might say that for the first 30 seconds a particular voice call will accept a proficiency of 5 for a particular skill, after 30 seconds a proficiency of 2 will be acceptable. This is referred to as “aging” a requirement.
0116The iCC comes pre-configured with a number of system defined attributes including: <ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0000"><ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0117">TimeInQueue—the time a contact has been waiting for a resource (available through a database stored procedure and calculated on the fly by the Software ACD.)</li><li id="ul0010-0002" num="0118">IsEmail—is this contact an email?</li><li id="ul0010-0003" num="0119">IsVoice—is this contact a voice call?</li><li id="ul0010-0004" num="0120">IsCollaboration—is this contact a web collaboration?</li><li id="ul0010-0005" num="0121">MediaServiceLevel—percentage of contacts of this media type handled within the specified media-specific service objective</li><li id="ul0010-0006" num="0122">LastAgent—User ID of last agent this customer talked to.</li></ul></li></ul>
0123Subscriber-defined attributes that determine a contact-agent match are specified through the administrative interface. Attribute characteristics include name, type (Call Center, Agent, Contact), value type (numeric, symbolic), values, default values, value normalization, and corresponding stored procedure. The subscriber defines the set of attributes using a GUI screen that prompts the user for input by displaying permitted choices or through visual clues, such as a choice of normalization curves. The stored procedure for an attribute calculates a value for the attribute when the attribute is used in a priority expression. The stored procedures can have been previously created or may be created when the attribute is created.
0124The agent and contact priority expressions are created through a graphical user interface that allows an administrator to drag-and-drop desired attributes into an expression and set their weighting through slider bars. There is one priority expression for agents and one for contacts within each classification. When a new priority expression is specified, a new stored procedure is generated in a database scripting language, such as_PL/SQL, compiled, and added to the database. One exemplary priority expression is shown in the following pseudocode:
0125For each attribute: <ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0000"><ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0126">Call the attribute's stored procedure passing ContactID and CustomerID;</li><li id="ul0012-0002" num="0127">If value returned is −1, use the attribute's default value;</li><li id="ul0012-0003" num="0128">If the attribute is symbolic, convert to a normalized value;</li><li id="ul0012-0004" num="0129">Multiply result by specified weighting and add this to the accumulated total.</li></ul></li></ul>
0130For a more specific example, assume a subscriber specified two classifications “Sales” and “Support” and a contact attribute called “BusinessValue” (i.e., the value of this contact to the subscriber's business). For the Sales classification, the subscriber created a contact priority expression of: <br />BusinessValue*0.2+TimeInQueue*0.1+IsEmail*0.1+IsVoice*0.4+IsCollaboration*0.2<br /> and for the Support classification, a contact priority expression of: <br />BusinessValue*0.1+TimeInQueue*0.1+IsEmail*0.1+IsVoice*0.6+IsCollaboration*0.1.
0131When the Soft ACD is prioritizing the waiting contacts for assignment to an agent, it evaluates the expression for each contact of the appropriate classification by calling the stored procedure associated with the BusinessValue attribute and multiplying the value returned by 0.2 for a Sales contact or 0.1 for a Support contact. The weighted business value of the contact is then added to the appropriately weighted values of the system defined attributes to calculate the priority for the contact.
0132The Soft ACD can prioritize each agent/contact before deciding on the appropriate match or alternately may employ an optimization scheme in which the first agent/contact that reaches a pre-determined priority value is chosen.
0133Provisioning Information
0134The underlying components of iCC must set up and configured before the center is ready for operation. The email manager allows administrators to define agents, agent passwords, mailboxes, as well as the rules by which contacts are routed to these mailboxes. An administration interface to the collaboration server is used to define agents, agent passwords, and agent extensions. The telephony server is set up by creating dial plans and associating phone numbers with applications, and agents with phone extensions.
0135Workflow Engine
0136The iCC uses workflows to process contact, manage agents, and control the overall contact center functions. Workflow steps are the basic building blocks of control in the iCC workflow engine. The workflow steps available to a designer depend on the type of workflow being developed. For example, voice workflow steps include answer, collect digits, and record. Exemplary agent workflow steps include allow break, handle contact, and wrap up. Some workflow steps are applicable to all contact workflows, such as classify contact, request agent, and deliver contact. Control steps, e.g. end, wait, and if, are available for all workflows, along with a send email step. Additional steps for the contact and agent workflows will be readily apparent to one of skill in the art.
0137Instead of hard-coded scripts typically used to implement workflows, the iCC workflow engine <b>900</b> dynamically creates a script for a workflow from two files as described in conjunction with <figref idref="DRAWINGS">FIG. 9A</figref>. Definitions for prototype nodes <b>911</b>, <b>913</b>, <b>915</b>, <b>917</b>, <b>919</b> are stored in a template file <b>903</b>. Each node is associated with workflow code that implements a high-level, compound script action, such as “play menu with interruptible prompts” or “play music until an agent is available,” that are available to the workflow engine <b>900</b>. The script actions are built from workflow steps. For ease of explanation, the script actions represented in <figref idref="DRAWINGS">FIG. 9A</figref> are simple, single commands, e.g., node A <b>911</b> represents the function “if(x boolean y),” where “x,” “boolean,” and “y” are parameters that will be replaced by values specified by an instance of the node A <b>911</b>. It will be appreciated that the invention is not limited by the example or by the workflow steps shown herein.
0138When in configuration mode <b>901</b>, the workflow engine <b>900</b> (or a supporting application) enables a user, such as a system administrator, to create a workflow <b>905</b> by selecting the appropriate nodes from the template file <b>903</b>, specifying the appropriate values for the parameters in the script command, and linking the nodes together to form a directed graph that represents the desired workflow. Thus, for example, when node A′ <b>921</b> is executed, the function “if(number<10)” is evaluated, with a true result causing edge <b>931</b> to be followed to execute node B′ <b>923</b> and a false result causing edge <b>933</b> to be followed to execute node C′ <b>925</b>. A configuration file <b>907</b> is created from the directed graph and specifies the structure for the workflow <b>905</b>. The configuration file <b>907</b> contains an identifier for each corresponding prototype node, along with the values, edge information and other settings (configuration data) associated with each node in the graph. It will be appreciated that any of the common input methodologies used to obtain user input can be employed to create the directed graph for the workflow, including a graphical user interface that gives the user drag-and-drop capabilities to allow the placement and rearrangement of nodes and edges, and dialog boxes that request the appropriate parameters.
0139When the workflow <b>905</b> is to be executed by the workflow engine <b>900</b> in run-time mode <b>909</b>, the workflow engine <b>900</b> references the configuration file <b>907</b> and reconstructs the directed graph for the workflow <b>905</b> in memory by merging the corresponding prototype nodes from the template file <b>903</b> with the configuration data associated with the nodes in the configuration file <b>907</b>. The workflow engine initiates a new thread of execution to execute the workflow script represented by the directed graph. Thus, the workflow engine <b>900</b> abstracts out the code and connectors when the user creates a workflow and subsequently reconstructs the workflow from the abstractions when it is to be executed.
0140Unlike typical workflow implementations, all iCC workflow steps can execute asynchronously by storing its result to a prioritized message queue in its thread of execution. Additionally, step may spawn another execution thread to create a multithreaded workflow. Similar classes of steps may share one queue with one execution thread for all requests of that type from a single workflow or across workflows. As previously described, various workflow steps request a service from a subsystem. The subsystems inject service events into the workflow by placing event notifications in the message queue. The retrieval of messages from the queue is implemented using three special workflow steps: RegisterEvent, UnRegisterEvent, and GetMessage.
0141RegisterEvent and UnRegisterEvent modify handlers for events. By default, an event is handled in-line in the node that caused the event. RegisterEvent specifies a target node that will handle the event instead (referred to as “chaining”). Handlers are stacks: when a handler is registered using RegisterEvent, the target node for that event is pushed onto the stack; when UnRegisterEvent is called, the stack is popped.
0142The GetMessage step fetches a message from the queue. When the message is an event notification for which a registration (via RegisterEvent) has been made, the workflow engine branches to the target node to handle the event. If the event was not explicitly registered, the current node is pushed onto the stack to handle the event.
0143An example of the asynchronous processing of the workflow steps is illustrated in <figref idref="DRAWINGS">FIG. 9B</figref>. A workflow <b>904</b> begins at node AA <b>941</b>. As part of its code, node AA <b>941</b> requests (arrow <b>951</b>) that the database subsystem retrieve a record from the unified database <b>957</b>. When the record is retrieved, the database subsystem stores (arrow <b>953</b>) an event notification in a message queue <b>959</b>. Instead of waiting for the database subsystem to retrieve the record, the node AA <b>941</b> registers itself as the target node to handle the event. The workflow continues processing, executing node BB <b>943</b> and node CC <b>945</b>, before reaching node DD <b>947</b>, which requests (arrow <b>955</b>) messages from a queue <b>959</b>. Assuming that the event notification is in the queue <b>959</b>, it will be returned (arrow <b>955</b>) to node DD <b>947</b>, which in turns, returns (edge <b>967</b>) the event notification to node AA <b>941</b> for handling. Once node AA <b>941</b> has received the record, it passes (edge <b>969</b>) it onto node EE <b>949</b> for further processing.
0144In one embodiment, the template and configuration files are XML documents, with the nodes represented by XML elements, and the code and configuration information stored as XML attributes for the corresponding XML elements. The code and configuration information are written in the JPython scripting language. A JPython-aware execution proxy merges the information from the template and configuration files, and provides an interface between the thread of execution for the workflow and the actual workflow steps. Because the execution proxy insulates the thread of execution from the workflow steps, steps may use multiple scripting languages simultaneously, allowing the developer of the prototype nodes to chose the best code to perform a given function.
Operating Environment
0145The following description of <figref idref="DRAWINGS">FIGS. 10A–B</figref> is intended to provide an overview of computer hardware and other operating components suitable for implementing the invention, but is not intended to limit the applicable environments. One of skill in the art will immediately appreciate that the invention can be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
0146<figref idref="DRAWINGS">FIG. 10A</figref> shows several computer systems <b>1</b> that are coupled together through a network <b>3</b>, such as the Internet. The term “Internet” as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (web). The physical connections of the Internet and the protocols and communication procedures of the Internet are well-known to those of skill in the art. Access to the Internet <b>3</b> is typically provided by Internet service providers (ISP), such as the ISPs <b>5</b> and <b>7</b>. Users on client systems, such as client computer systems <b>21</b>, <b>25</b>, <b>35</b>, and <b>37</b> obtain access to the Internet through the Internet service providers, such as ISPs <b>5</b> and <b>7</b>. Access to the Internet allows users of the client computer systems to exchange information, receive and send e-mails, and view documents, such as documents which have been prepared in the HTML format. These documents are often provided by web servers, such as web server <b>9</b> which is considered to be “on” the Internet. Often these web servers are provided by the ISPs, such as ISP <b>5</b>, although a computer system can be set up and connected to the Internet without that system being also an ISP as is well known in the art.
0147The web server <b>9</b> is typically at least one computer system which operates as a server computer system and is configured to operate with the protocols of the World Wide Web and is coupled to the Internet. Optionally, the web server <b>9</b> can be part of an ISP which provides access to the Internet for client systems. The web server <b>9</b> is shown coupled to the server computer system <b>11</b> which itself is coupled to web content <b>10</b>, which can be considered a form of a media database. It will be appreciated that while two computer systems <b>9</b> and <b>11</b> are shown in <figref idref="DRAWINGS">FIG. 10A</figref>, the web server system <b>9</b> and the server computer system <b>11</b> can be one computer system having different software components providing the web server functionality and the server functionality provided by the server computer system <b>11</b> which will be described further below.
0148Client computer systems <b>21</b>, <b>25</b>, <b>35</b>, and <b>37</b> can each, with the appropriate web browsing software, view HTML pages provided by the web server <b>9</b>. The ISP <b>5</b> provides Internet connectivity to the client computer system <b>21</b> through the modem interface <b>23</b> which can be considered part of the client computer system <b>21</b>. The client computer system can be a personal computer system, a network computer, a Web TV system, or other such computer system. Similarly, the ISP <b>7</b> provides Internet connectivity for client systems <b>25</b>, <b>35</b>, and <b>37</b>, although as shown in <figref idref="DRAWINGS">FIG. 10A</figref>, the connections are not the same for these three computer systems. Client computer system <b>25</b> is coupled through a modem interface <b>27</b> while client computer systems <b>35</b> and <b>37</b> are part of a LAN. While <figref idref="DRAWINGS">FIG. 10A</figref> shows the interfaces <b>23</b> and <b>27</b> as generically as a “modem,” it will be appreciated that each of these interfaces can be an analog modem, ISDN modem, cable modem, satellite transmission interface (e.g. “Direct PC”), or other interfaces for coupling a computer system to other computer systems. Client computer systems <b>35</b> and <b>37</b> are coupled to a LAN <b>33</b> through network interfaces <b>39</b> and <b>41</b>, which can be Ethernet network or other network interfaces. The LAN <b>33</b> is also coupled to a gateway computer system <b>31</b> which can provide firewall and other Internet related services for the local area network. This gateway computer system <b>31</b> is coupled to the ISP <b>7</b> to provide Internet connectivity to the client computer systems <b>35</b> and <b>37</b>. The gateway computer system <b>31</b> can be a conventional server computer system. Also, the web server system <b>9</b> can be a conventional server computer system.
0149Alternatively, as well-known, a server computer system <b>43</b> can be directly coupled to the LAN <b>33</b> through a network interface <b>45</b> to provide files <b>47</b> and other services to the clients <b>35</b>, <b>37</b>, without the need to connect to the Internet through the gateway system <b>31</b>.
0150<figref idref="DRAWINGS">FIG. 10B</figref> shows one example of a conventional computer system that can be used as a client computer system or a server computer system or as a web server system. It will also be appreciated that such a computer system can be used to perform many of the functions of an Internet service provider, such as ISP <b>105</b>. The computer system <b>51</b> interfaces to external systems through the modem or network interface <b>53</b>. It will be appreciated that the modem or network interface <b>53</b> can be considered to be part of the computer system <b>51</b>. This interface <b>53</b> can be an analog modem, ISDN modem, cable modem, token ring interface, satellite transmission interface (e.g. “Direct PC”), or other interfaces for coupling a computer system to other computer systems. The computer system <b>51</b> includes a processor <b>55</b>, which can be a conventional microprocessor such as an Intel Pentium microprocessor or Motorola Power PC microprocessor. Memory <b>59</b> is coupled to the processor <b>55</b> by a bus <b>57</b>. Memory <b>59</b> can be dynamic random access memory (DRAM) and can also include static RAM (SRAM). The bus <b>57</b> couples the processor <b>55</b> to the memory <b>59</b> and also to non-volatile storage <b>65</b> and to display controller <b>61</b> and to the input/output (I/O) controller <b>67</b>. The display controller <b>61</b> controls in the conventional manner a display on a display device <b>63</b> which can be a cathode ray tube (CRT) or liquid crystal display. The input/output devices <b>69</b> can include a keyboard, disk drives, printers, a scanner, and other input and output devices, including a mouse or other pointing device. The display controller <b>61</b> and the I/O controller <b>67</b> can be implemented with conventional well known technology. A digital image input device <b>71</b> can be a digital camera which is coupled to an I/O controller <b>67</b> in order to allow images from the digital camera to be input into the computer system <b>51</b>. The non-volatile storage <b>65</b> is often a magnetic hard disk, an optical disk, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory <b>59</b> during execution of software in the computer system <b>51</b>. One of skill in the art will immediately recognize that the term “computer-readable medium” includes any type of storage device that is accessible by the processor <b>55</b> and also encompasses a carrier wave that encodes a data signal.
0151It will be appreciated that the computer system <b>51</b> is one example of many possible computer systems which have different architectures. For example, personal computers based on an Intel microprocessor often have multiple buses, one of which can be an input/output (I/O) bus for the peripherals and one that directly connects the processor <b>55</b> and the memory ×<b>59</b> (often referred to as a memory bus). The buses are connected together through bridge components that perform any necessary translation due to differing bus protocols.
0152Network computers are another type of computer system that can be used with the present invention. Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory <b>59</b> for execution by the processor <b>55</b>. A Web TV system, which is known in the art, is also considered to be a computer system according to the present invention, but it may lack some of the features shown in <figref idref="DRAWINGS">FIG. 10B</figref>, such as certain input or output devices. A typical computer system will usually include at least a processor, memory, and a bus coupling the memory to the processor.
0153It will also be appreciated that the computer system <b>51</b> is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software. One example of an operating system software with its associated file management system software is the Windows family of operating systems from Microsoft Corporation of Redmond, Wash., and the associated file management systems. The file management system is typically stored in the non-volatile storage <b>65</b> and causes the processor <b>55</b> to execute the various acts required by the operating system to input and output data and to store data in memory, including storing files on the non-volatile storage <b>65</b>.
CONCLUSION
0154A tiered service model providing escalation and de-escalation of contacts in a multimedia digital contact center has been described. Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the present invention.
0155The terminology used in this application with respect to networks is meant to include all of network environments, including private wide-area networks and local-area networks. Therefore, it is manifestly intended that this invention be limited only by the following claims and equivalents thereof.
APPENDIX A
0156William E. Alford, Reg. No. 37,764; Farzad E. Amini, Reg. No. 42,261; William Thomas Babbitt, Reg. No. 39,591; Carol F. Barry, Reg. No. 41,600; Jordan Michael Becker, Reg. No. 39,602; Lisa N. Benado, Reg. No. 39,995; Bradley J. Bereznak, Reg. No. 33,474; Michael A. Bernadicou, Reg. No. 35,934; Roger W. Blakely, Jr., Reg. No. 25,831; R. Alan Burnett, Reg. No. 46,149; Gregory D. Caldwell, Reg. No. 39,926; Andrew C. Chen, Reg. No. 43,544; Thomas M. Coester, Reg. No. 39,637; Donna Jo Coningsby, Reg. No. 41,684; Florin Corie, Reg. No. 46,244; Dennis M. deGuzman, Reg. No. 41,702; Stephen M. De Klerk, Reg. No. 46,503; Michael Anthony DeSanctis, Reg. No. 39,957; Daniel M. De Vos, Reg. No. 37,813; Sanjeet Dutta, Reg. No. 46,145; Matthew C. Fagan, Reg. No. 37,542; Tarek N. Fahmi, Reg. No. 41,402; George Fountain, Reg. No. 37,374; James Y. Go, Reg. No. 40,621; James A. Henry, Reg. No. 41,064; Libby N. Ho, Reg. No. 46,774; Willmore F. Holbrow III, Reg. No. 41,845; Sheryl Sue Holloway, Reg. No. 37,850; George W Hoover II, Reg. No. 32,992; Eric S. Hyman, Reg. No. 30,139; William W. Kidd, Reg. No. 31,772; Sang Hui Kim, Reg. No. 40,450; Walter T. Kim, Reg. No. 42,731; Eric T. King, Reg. No. 44,188; George Brian Leavell, Reg. No. 45,436; Kurt P. Leyendecker, Reg. No. 42,799; Gordon R. Lindeen III, Reg. No. 33,192; Jan Carol Little, Reg. No. 41,181; Robert G. Litts, Reg. No. 46,876; Joseph Lutz, Reg. No. 43,765; Michael J. Mallie, Reg. No. 36,591; Andre L. Marais, under 37 C.F.R. § 10.9(b); Paul A. Mendonsa, Reg. No. 42,879; Clive D. Menezes, Reg. No. 45,493; Chun M. Ng, Reg. No. 36,878; Thien T. Nguyen, Reg. No. 43,835; Thinh V. Nguyen, Reg. No. 42,034; Dennis A. Nicholls, Reg. No. 42,036; Daniel E. Ovanezian, Reg. No. 41,236; Kenneth B. Paley, Reg. No. 38,989; Gregg A. Peacock, Reg. No. 45,001; Marina Portnova, Reg. No. 45,750; William F. Ryann, Reg. 44,313; James H. Salter, Reg. No. 35,668; William W. Schaal, Reg. No. 39,018; James C. Scheller, Reg. No. 31,195; Jeffrey Sam Smith, Reg. No. 39,377; Maria McCormack Sobrino, Reg. No. 31,639; Stanley W. Sokoloff, Reg. No. 25,128; Judith A. Szepesi, Reg. No. 39,393; Vincent P. Tassinari, Reg. No. 42,179; Edwin H. Taylor, Reg. No. 25,129; John F. Travis, Reg. No. 43,203; Joseph A. Twarowski, Reg. No. 42,191; Tom Van Zandt, Reg. No. 43,219; Lester J. Vincent, Reg. No. 31,460; Glenn E. Von Tersch, Reg. No. 41,364; John Patrick Ward, Reg. No. 40,216; Mark L. Watson, Reg. No. 46,322; Thomas C. Webster, Reg. No. 46,154; and Norman Zafman, Reg. No. 26,250; my patent attorneys, and Firasat Ali, Reg. No. 45,715; Justin M. Dillon, Reg. No. 42,486; Thomas S. Ferrill, Reg. No. 42,532; and Raul Martinez, Reg. No. 46,904, my patent agents, of BLAKELY, SOKOLOFF, TAYLOR & ZAFMAN LLP, with offices located at 12400 Wilshire Boulevard, 7th Floor, Los Angeles, Calif. 90025, telephone (310) 207-3800, and James R. Thein, Reg. No. 31,710, my patent attorney with full power of substitution and revocation, to prosecute this application and to transact all business in the Patent and Trademark Office connected herewith.
APPENDIX B
Title 37, Code of Federal Regulations, Section 1.56 Duty to Disclose Information Material to Patentability
0157(a) A patent by its very nature is affected with a public interest. The public interest is best served, and the most effective patent examination occurs when, at the time an application is being examined, the Office is aware of and evaluates the teachings of all information material to patentability. Each individual associated with the filing and prosecution of a patent application has a duty of candor and good faith in dealing with the Office, which includes a duty to disclose to the Office all information known to that individual to be material to patentability as defined in this section. The duty to disclosure information exists with respect to each pending claim until the claim is cancelled or withdrawn from consideration, or the application becomes abandoned. Information material to the patentability of a claim that is cancelled or withdrawn from consideration need not be submitted if the information is not material to the patentability of any claim remaining under consideration in the application. There is no duty to submit information which is not material to the patentability of any existing claim. The duty to disclosure all information known to be material to patentability is deemed to be satisfied if all information known to be material to patentability of any claim issued in a patent was cited by the Office or submitted to the Office in the manner prescribed by §§1.97(b)–(d) and 1.98. However, no patent will be granted on an application in connection with which fraud on the Office was practiced or attempted or the duty of disclosure was violated through bad faith or intentional misconduct. The Office encourages applicants to carefully examine:
0158(1) Prior art cited in search reports of a foreign patent office in a counterpart application, and
0159(2) The closest information over which individuals associated with the filing or prosecution of a patent application believe any pending claim patentably defines, to make sure that any material information contained therein is disclosed to the Office.
0160(b) Under this section, information is material to patentability when it is not cumulative to information already of record or being made or record in the application, and
0161(1) It establishes, by itself or in combination with other information, a prima facie case of unpatentability of a claim; or
0162(2) It refutes, or is inconsistent with, a position the applicant takes in:
0163(i) Opposing an argument of unpatentability relied on by the Office, or
0164(ii) Asserting an argument of patentability.
0165A prima facie case of unpatentability is established when the information compels a conclusion that a claim is unpatentable under the preponderance of evidence, burden-of-proof standard, giving each term in the claim its broadest reasonable construction consistent with the specification, and before any consideration is given to evidence which may be submitted in an attempt to establish a contrary conclusion of patentability.
0166(c) Individuals associated with the filing or prosecution of a patent application within the meaning of this section are:
0167(1) Each inventor named in the application;
0168(2) Each attorney or agent who prepares or prosecutes the application; and
0169(3) Every other person who is substantively involved in the preparation or prosecution of the application and who is associated with the inventor, with the assignee or with anyone to whom there is an obligation to assign the application.
0170(d) Individuals other than the attorney, agent or inventor may comply with this section by disclosing information to the attorney, agent, or inventor.
Contents9
24 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24
Every citation, both waysCites: the store holds 73 of 74
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9247064B2 | Cited by | United States of America | Search report |
| US8027457B1 | Cited by | United States of America | Applicant |
| US9191512B1 | Cited by | United States of America | Applicant |
| US2010145718A1 | Cited by | United States of America | Pre-grant |
| US9854006B2 | Cited by | United States of America | Applicant |
| US9547876B2 | Cited by | United States of America | Applicant |
| US2006140381A1 | Cited by | United States of America | Pre-grant |
| US2004105121A1 | Cited by | United States of America | Pre-grant |
| USRE46538E | Cited by | United States of America | Applicant |
| US7593515B2 | Cited by | United States of America | Applicant |
| USRE46521E | Cited by | United States of America | Applicant |
| US9961206B1 | Cited by | United States of America | Applicant |
| US2009041217A1 | Cited by | United States of America | Pre-grant |
| USRE46852E | Cited by | United States of America | Search report |
| US10674011B1 | Cited by | United States of America | Applicant |
| US7787155B2 | Cited by | United States of America | Search report |
| US8588398B1 | Cited by | United States of America | Applicant |
| US2006147024A1 | Cited by | United States of America | Pre-grant |
| US8995646B2 | Cited by | United States of America | Search report |
| US2006262922A1 | Cited by | United States of America | Pre-grant |
| US2015016600A1 | Cited by | United States of America | Pre-grant |
| US7457254B2 | Cited by | United States of America | Search report |
| US8583466B2 | Cited by | United States of America | Search report |
| US9886455B1 | Cited by | United States of America | Applicant |
| US2007038499A1 | Cited by | United States of America | Pre-grant |
| US2008273686A1 | Cited by | United States of America | Pre-grant |
| US9674360B2 | Cited by | United States of America | Search report |
| US2014369485A1 | Cited by | United States of America | Pre-grant |
| US10218848B2 | Cited by | United States of America | Applicant |
| US9426294B1 | Cited by | United States of America | Applicant |
| US8929536B2 | Cited by | United States of America | Applicant |
| AU2013308513B2 | Cited by | Australia | Search report |
| US2009041226A1 | Cited by | United States of America | Pre-grant |
| US2013282744A1 | Cited by | United States of America | Pre-grant |
| US9565310B2 | Cited by | United States of America | Search report |
| WO2014036511A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| USRE46457E | Cited by | United States of America | Applicant |
| USRE46438E | Cited by | United States of America | Applicant |
| US8023637B2 | Cited by | United States of America | Applicant |
| US8473303B2 | Cited by | United States of America | Applicant |
| US8667052B2 | Cited by | United States of America | Search report |
| US7783023B2 | Cited by | United States of America | Applicant |
| US8958538B1 | Cited by | United States of America | Search report |
| US2015142720A1 | Cited by | United States of America | Pre-grant |
| US2008183461A1 | Cited by | United States of America | Pre-grant |
| US7949121B1 | Cited by | United States of America | Search report |
| US7596217B2 | Cited by | United States of America | Applicant |
| USRE46776E | Cited by | United States of America | Applicant |
| USRE46853E | Cited by | United States of America | Search report |
| US10623356B2 | Cited by | United States of America | Applicant |
| US9065915B1 | Cited by | United States of America | Applicant |
| US2012096024A1 | Cited by | United States of America | Pre-grant |
| US2006041657A1 | Cited by | United States of America | Pre-grant |
| US2008222240A1 | Cited by | United States of America | Pre-grant |
| US7738650B2 | Cited by | United States of America | Applicant |
| US10311364B2 | Cited by | United States of America | Search report |
| US2009086959A1 | Cited by | United States of America | Pre-grant |
| USRE46387E | Cited by | United States of America | Applicant |
| USRE47138E | Cited by | United States of America | Applicant |
| US2007041567A1 | Cited by | United States of America | Pre-grant |
| WO0135601A1 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO0161529A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| EP1016998A2 | Cites | European Patent Office (EPO) | Applicant |
| EP1032188A1 | Cites | European Patent Office (EPO) | Applicant |
| JP2000244568A | Cites | Japan | Applicant |
| US2001024497A1 | Cites | United States of America | Search report |
| US2003018702A1 | Cites | United States of America | Applicant |
| US2003133558A1 | Cites | United States of America | Applicant |
| US2003195753A1 | Cites | United States of America | Applicant |
| US2004054743A1 | Cites | United States of America | Search report |
| US2004066923A1 | Cites | United States of America | Applicant |
| US2004141508A1 | Cites | United States of America | Search report |
| US2004221053A1 | Cites | United States of America | Search report |
| US5282243A | Cites | United States of America | Applicant |
| US5390295A | Cites | United States of America | Applicant |
| US5491795A | Cites | United States of America | Applicant |
| US5530744A | Cites | United States of America | Applicant |
| US5613068A | Cites | United States of America | Applicant |
| US5848143A | Cites | United States of America | Applicant |
| US5903642A | Cites | United States of America | Applicant |
| US6046741A | Cites | United States of America | Applicant |
| US6046762A | Cites | United States of America | Applicant |
| US6049603A | Cites | United States of America | Applicant |
| US6094479A | Cites | United States of America | Applicant |
| US6122364A | Cites | United States of America | Applicant |
| US6141341A | Cites | United States of America | Applicant |
| US6144667A | Cites | United States of America | Applicant |
| US6188673B1 | Cites | United States of America | Applicant |
| US6188761B1 | Cites | United States of America | Applicant |
| US6201804B1 | Cites | United States of America | Applicant |
| US6212565B1 | Cites | United States of America | Applicant |
| US6219648B1 | Cites | United States of America | Applicant |
| US6225998B1 | Cites | United States of America | Applicant |
| US6266058B1 | Cites | United States of America | Applicant |
| US6289001B1 | Cites | United States of America | Applicant |
| US6298383B1 | Cites | United States of America | Applicant |
| US6301480B1 | Cites | United States of America | Applicant |
| US6330326B1 | Cites | United States of America | Applicant |
| US6337858B1 | Cites | United States of America | Applicant |
| US6366577B1 | Cites | United States of America | Applicant |
50 members in 9 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 77494401 | United States of America | A | |
| US20010774944 | – | – | – |
Members50
| Document | Office | Kind | |
|---|---|---|---|
| CA2434922A1 | Canada | A1 | |
| WO02065741A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2003018702A1 | United States of America | A1 | |
| WO02065741A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1371217A2 | European Patent Office (EPO) | A2 | |
| IL157154A0 | Israel | A0 | |
| US2004032431A1 | United States of America | A1 | |
| US2004032862A1 | United States of America | A1 | |
| US2004032863A1 | United States of America | A1 | |
| WO2004017161A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004017260A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004017543A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2004017550A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004017584A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2004017620A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2003257054A1 | Australia | A1 | |
| AU2003257054A8 | Australia | A8 | |
| AU2003257115A1 | Australia | A1 | |
| AU2003263957A1 | Australia | A1 | |
| AU2003263961A1 | Australia | A1 | |
| AU2003272210A1 | Australia | A1 | |
| AU2003272210A8 | Australia | A8 | |
| AU2003273225A1 | Australia | A1 | |
| AU2003273225A8 | Australia | A8 | |
| US2004054743A1 | United States of America | A1 | |
| WO2004017161A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2004017584B1 | World Intellectual Property Organization (WIPO) | B1 | |
| WO2004017550A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2004017260A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US2004141508A1 | United States of America | A1 | |
| MXPA03006823A | Mexico | A | |
| JP2005504452A | Japan | A | |
| EP1527581A1 | European Patent Office (EPO) | A1 | |
| EP1546841A2 | European Patent Office (EPO) | A2 | |
| EP1546841A4 | European Patent Office (EPO) | A4 | |
| US7012888B2 | United States of America | B2 | |
| US2006109783A1 | United States of America | A1 | |
| AU2002235455B2 | Australia | B2 | |
| NZ527095A | New Zealand | A | |
| US7230946B2 | United States of America | B2 | |
| US7254641B2This record | United States of America | B2 | |
| US7274787B1 | United States of America | B1 | |
| US2008034354A1 | United States of America | A1 | |
| US7382773B2 | United States of America | B2 | |
| CA2434922C | Canada | C | |
| US7568001B2 | United States of America | B2 | |
| US7664014B2 | United States of America | B2 | |
| US8171420B2 | United States of America | B2 | |
| US2012185795A1 | United States of America | A1 | |
| US8745576B2 | United States of America | B2 |
125 transactions on the USPTO file
Allowed after 3 non-final rejections and 1 RCE.
- Non-final rejections
- 3
- Final rejections
- 0
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Payment of Maintenance Fee, 12th Year, Large Entity | |
| Recordation of Patent Grant Mailed | |
| Patent Issue Date Used in PTA CalculationAllowed | |
| Issue Notification MailedAllowed | |
| Dispatch to FDC | |
| Application Is Considered Ready for Issue | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Received | |
| Mail Examiner's Amendment | |
| Examiner's Amendment Communication | |
| Mail Notice of AllowanceAllowed | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Information Disclosure Statement considered | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Date Forwarded to Examiner | |
| Disposal for a RCE / CPA / R129 | |
| Correspondence Address Change | |
| Mail-Record Petition Decision of Granted to Withdraw from Issue | |
| Petition Entered | |
| Reverse Issue Fee | |
| Issue Fee Payment Received | |
| Mail-Petition Decision - Dismissed | |
| Information Disclosure Statement considered | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Request for Continued Examination (RCE) | |
| Workflow - Request for RCE - Begin | |
| Petition Entered | |
| Change in Power of Attorney (May Include Associate POA) | |
| Mail Notice of AllowanceAllowed | |
| Mail Formal Drawings Required | |
| Mail Examiner's Amendment | |
| Examiner's Amendment Communication | |
| Formal Drawings Required | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Information Disclosure Statement considered | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Information Disclosure Statement considered | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement considered | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Information Disclosure Statement considered | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Date Forwarded to Examiner | |
| Response to Election / Restriction Filed | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Mail Restriction Requirement | |
| Restriction/Election Requirement | |
| Date Forwarded to Examiner | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Response after Non-Final Action | |
| Request for Extension of Time - Granted | |
| IFW TSS Processing by Tech Center Complete | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed |
25 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 07254641
- Publication, DOCDB
- 7254641
- Publication, EPODOC
- US7254641
- Application
- 9774944
- Application, DOCDB
- 77494401
- Application, EPODOC
- US20010774944
Titles
- English
- Digital multimedia contact center with tier escalation and deescalation in response to changed criteria
Patent term adjustment
- A delay
- +933 daysthe office missed an examination deadline
- B delay
- +129 dayspendency past three years
- Applicant delay
- −197 days
- Net adjustment
- 865 days
Classification
- CPC, 1
- H04M3/523
- IPC, 6
- H04M3 00
- G06F15 173
- G06Q10 00
- G06F15 00
- G06F19 00
- H04M3 523
- USPC, 3
- 709240000
- 379266010
- 709242000