Smart Capacity for Workload Routing
The intelligence-driven workload routing system addresses inefficiencies in existing communication systems by dynamically assigning agent capacity based on real-time workload analysis, optimizing resource use and preventing overload.
Patent Information
- Application Number
- JP2023076035
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-04-25
- Filing Date
- 2023-05-02
- Publication Date
- 2024-12-16
- Estimated Expiration
- 2040-04-24
AI Technical Summary
Existing communication systems lack the ability to distinguish between different levels of complexity or difficulty in user conversations, leading to inefficient workload distribution among agents, as they rely on predetermined slot numbers and quotas without considering the actual workload requirements.
An intelligence-driven workload routing system that utilizes a workload model to analyze various factors associated with user communications, dynamically assigning and updating agent capacity based on real-time workload measurements to optimize resource allocation.
This system improves agent efficiency and system throughput by efficiently distributing communications, reducing performance bottlenecks and ensuring balanced use of computing resources, while maintaining user satisfaction levels.
Smart Images

Figure 0007600305000001 
Figure 0007600305000002 
Figure 0007600305000003
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001]
[0001] This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 838,522, filed April 25, 2019, the disclosure of which is incorporated herein by reference in its entirety for all purposes. [Technical field]
[0002]
[0002] The present disclosure relates generally to facilitating routing of communications. More specifically, techniques are provided for routing requests to appropriate resources with sufficient capacity in a network using modeled load capacity and capacity routing. [Background technology]
[0003]
[0003] Many communication systems focus on appropriately routing requests to available resources within the system. In a network that connects individual users to agent resources, a team of individuals, each of whom may be assigned different roles and tasks based on their respective capabilities and capacity, may be connected through workload routing. Contact center operations are performed by manual means, with routing performed by human operators to connect users to appropriate agents. Such agents may be trained to answer questions and provide answers and basic services on behalf of the brand. Such communication may not occur in person or even over the phone, but rather by electronic means such as email, text, online applications, and messaging applications. For a given system, such agents may be trained to handle a variety of common questions and problems. However, each conversation may differ in terms of difficulty, complexity, number of problems, and user actions.
[0004] To maximize agent efficiency, a routing system may be used with each agent assigned to handle multiple user connections (e.g., conversations or communication streams) simultaneously. Currently available systems may identify a predetermined number of slots for each agent and evaluate each agent's capacity based on the extent to which the predetermined number of slots are filled. Such systems that rely on set slot numbers and / or quotas lack the ability to distinguish between different levels of complexity or difficulty. Thus, two agents may be identified as having a similar level of capacity, but one of the agents may actually be handling a more complex conversation that requires more time and detailed analysis. At best, some systems may add or subtract a predetermined slot fraction to conversations flagged as particularly easy or particularly difficult. However, such predetermined slot fractions cannot identify the expected workload with any greater precision and remain unable to distinguish between different levels of difficulty.
[0005]
[0005] Evaluating conversations to ascertain expected workload (e.g., in terms of time and engagement level) can be complicated because not all conversations are performed the same: Different individuals from different backgrounds use language differently, and therefore there is no standardized way to evaluate each of their conversations. Summary of the Invention
[0006]
[0006] The term example and similar terms are intended to broadly refer to all of the subject matter of the present disclosure and the following claims. Statements containing these terms should be understood not to limit the subject matter described herein or to limit the meaning or scope of the following claims. The examples of the disclosure covered herein are defined by the following claims, not this Summary. This Summary is a high-level overview of various aspects of the disclosure and introduces some of the concepts that are further described in the Detailed Description section below. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used alone to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire disclosure, any or all drawings, and the claims.
[0007]
[0007] Examples described herein provide intelligence-driven routing of communications to available workload capacity. Systems and methods for intelligence-driven routing of workload capacity may include storing in a memory a workload model for a set of different factors associated with user communications. The workload model may then be used to route the workload of agents responding to requests by users for communications. The workload capacity routing may consider different factors for routing new requests among agents and for distributing and monitoring the capacity of agents engaged in the system in response to data being received and processed within the system without delay other than communication, processing, or other such resource delays. Each factor may be associated with a measurement of workload. An incoming request for a user communication may be received. Such a received request may include information regarding one or more of the factors. A workload measurement may be identified for the requested user communication based on comparing the received request information to the stored workload model. An agent may then be identified as available to process the identified workload measurements based on having a current workload capacity to process the identified workload measurements. A communication slot defined by the identified workload measurements may be activated for the identified agent. Incoming requests may be routed to the identified agent, and the current workload capacity of the identified agent may be dynamically updated based on the identified workload measurements.
[0008]
[0008] Examples described herein improve the performance of a communication system and devices within the system, such as agent devices, by efficiently distributing communications among devices in the system. For example, communication distribution within such a user communication system may not follow a regular pattern and may include communication intensities that are not strictly evident from the amount of data in the system. Smart analysis of workload may identify patterns of user communication intensity using different factors to predict and identify resource load patterns before capacity issues arise, and route and distribute workload within such systems to avoid capacity issues (e.g., a particular agent being overwhelmed or overloaded by a sudden shift in communication intensity while other agents have significant excess capacity).
[0009]
[0009] The workload model may associate each user component and agent component with respect to a different set of factors. Each factor may represent a measurement of workload defined in a manner tailored to an industry type or system type. In a call center, for example, the workload may be defined by standard units (e.g., call slots) or by percentages. While a conventional implementation of a call center system may automatically route calls to agents each tasked with handling a predefined number of slots, the present example may dynamically assign a number of slots to each agent and activate slots for agents as needed. Such aspects improve the operation of the communication system, the network, and individual devices within the system by optimizing the use of processing and network resources, thus improving the throughput of the system and avoiding system imbalances and disproportionate use of computing resources that reduce performance.
[0010]
[0010] The present disclosure is described in conjunction with the accompanying drawings. [Brief description of the drawings]
[0011] [Figure 1] FIG. 1 illustrates a block diagram of an example network system for use with the examples described herein. [Diagram 2]
[0012] FIG. 2 illustrates a block diagram of another example network system for use with the examples described herein. [Diagram 3]
[0013] FIG. 3 shows a representation of a protocol stack mapping of connection components for use with the examples described herein. [Figure 4]
[0014] FIG. 4 shows a representation of a multi-device communication switching system for use with some examples described herein. [Diagram 5]
[0015] FIG. 5 illustrates a block diagram of a connection routing system for use with the examples described herein. [Figure 6]
[0016] FIG. 6 illustrates an implementation of an agent workspace interface for agents handling multiple user communications simultaneously that may be used with smart capacity workflow routing according to examples described herein. [Figure 7A]
[0017] FIG. 7A illustrates an aspect of a dashboard interface implementation including information about multiple agents that may be used for smart capacity workflow routing, according to examples described herein. [Figure 7B]
[0018] FIG. 7B illustrates an aspect of a dashboard interface implementation including information about multiple agents that may be used for smart capacity workflow routing, according to examples described herein. [Figure 8A]
[0019] FIG. 8A illustrates an aspect of a dashboard interface implementation that includes information regarding multiple user communications that may be used for smart capacity workflow routing, according to examples described herein. [Figure 8B]
[0020] FIG. 8B illustrates an aspect of a dashboard interface implementation including information regarding multiple user communications that may be used for smart capacity workflow routing, according to examples described herein. [Figure 9]
[0021] FIG. 9 illustrates an implementation of a dashboard interface for smart capacity workload routing according to examples described herein. [Figure 10]
[0022] FIG. 10 illustrates an aspect of a methodology for dynamic and intelligence-driven routing of workload capacity according to certain examples described herein. [Figure 11]
[0023] FIG. 11 is an illustration of dynamic workload capacity based request routing according to certain examples described herein. [Figure 12]
[0024] FIG. 12 shows an example process for switching between a bot and a terminal device during a communication session. [Figure 13]
[0025] FIG. 13 shows a flowchart illustrating a method for smart capacity workload routing according to examples described herein. [Figure 14]
[0026] FIG. 14 illustrates an example computing device that may be used to implement various components of the system according to examples described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012]
[0027] In the accompanying drawings, similar components and / or features may have the same reference label. Furthermore, various components of the same type may be distinguished by following the reference label with a dash and a second label that distinguishes between the similar components. If only a first reference label is used in this specification, the description is applicable to any one of the similar components having the same first reference label, regardless of the second reference label.
[0013]
[0028] The following description only provides example(s) of the example and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the following description of the example(s) of the example provides one of ordinary skill in the art with an enabling description for implementing the example of the example. It will be understood that various changes may be made in the arrangement and function of elements without departing from the spirit and scope as set forth in the appended claims.
[0014]
[0029] As described above, examples include systems, methods, instructions, and other implementations for workload routing using smart capacity. Elements of such examples analyze factors present in user requests for communication over various communication channels. Agents available in the system to respond to such requests are associated with various factors and current workload capacity. Workload may be assigned or measured based on factors associated with the incoming request, and this measured workload is assessed against the available workload capacity of agents in the system to select and route the request to a particular agent. The use of factors from the request as described herein in a workload model to match workload measurements for new communications with agent capacity improves network communications and the operation of devices in such networks by efficiently using processing and communication resources and balancing capacity to prevent parts of the system from being overwhelmed by high intensity communications with unexpected users. Compared to a system that simply distributes user connections evenly by number of connections, there is less capacity bottleneck and performance issues caused by parts of the system being overwhelmed. Instead, the described workload model and smart capacity routes new connections in response to user requests based on the workload model to improve network efficiency and avoid performance and quality issues that can result from parts of the system being overwhelmed.
[0015]
[0030] 1 illustrates a block diagram of an example of a network communication system that implements and supports certain examples and features described herein for workload routing. A particular example relates to establishing a connection channel between a network device 105, which may be operated by a user 110, and a client device 130 associated with a client 125. In a particular example, the network communication system may include a terminal device 115, which may be operated by an agent 120. In such a system, a connection routing system 150 may store a network model and route incoming requests for user communications from the user(s) 110 to the agent(s) 120 in the system in order to efficiently route such requests over the network 170.
[0016]
[0031] In one particular example, the user 110 may be an individual attempting to contact the client 125 via the telephone device 132. The client 125 may be an entity that provides, operates, or runs a service, or an individual employed or assigned by such an entity to perform tasks available to the client 125 as described herein. The agent 120 may be an individual, such as a support agent tasked with providing support or information regarding the service to the user 110. Of a large number of agents, a subset of agents may be appropriate to provide support or information for a particular client 125. The agent 120 may or may not be affiliated with the client 125. Each agent may be associated with one or more clients 125. In some non-limiting examples, the user 110 may be an individual attempting to make an appointment via a mobile phone, the client 125 may be a company that provides medical services, and the agent 120 may be a representative employed by the company. In various examples, the user 110, the client 125, and the agent 120 may be other individuals or entities.
[0017]
[0032] While FIG. 1 shows only a single network device 105, terminal device 115, and client device 130 coupled to database 127, the communication system may include a plurality or large number (e.g., tens, hundreds, or thousands) of each of one or more of these types of devices. In various implementations, different nodes of the communication system may include repeated copies of client device 130, telephone device 132, and other devices coupled to one or more shared databases 127 for client 125. Similarly, while FIG. 1 shows only a single user 110, agent 120, and client 125, the communication system of FIG. 1 may include a plurality or large number of each of one or more of such entities. Thus, it may be necessary to determine which terminal device should be selected to communicate with a given network device. To further complicate matters, a remote server 140 may also be configured to receive and respond to select network-device communications.
[0018]
[0033] The connection routing system 150 may facilitate strategic routing of communications. A communication may include a message having a content (e.g., defined based on input from an entity, such as typed or spoken input). A communication may also include additional data, such as data about the sending device (e.g., IP address, account identifier, device type, and / or operating system), a destination address, an identifier of the client, an identifier or online history data of a web page or web page element (e.g., a web page or web page element being visited when the communication is generated or otherwise associated with the communication), a time (e.g., time and / or date), and / or a destination address. Other information may also be included in the communication. In some cases, the connection routing system 150 routes the entire communication to another device. In some cases, the connection routing system 150 modifies the communication or generates a new communication (e.g., based on the original communication). The new or revised communication may include at least some (or all) of the message (or a processed version thereof), additional data (e.g., relating to the sending device, web page or online history, and / or time), and / or other data identified by connection routing system 150 (e.g., a particular account identifier or account data associated with the device). The new or revised communication may include other information as well.
[0019]
[0034] Part of facilitating strategic routing may include establishing, updating, and using one or more connection channels between the network device 105 and one or more terminal devices 115. For example, upon receiving a communication from the network device 105, the connection routing system 150 may first estimate which client (if any) the communication corresponds to. Upon identifying the client, the connection routing system 150 may identify a terminal device 115 associated with the client for communication with the network device 105. In some instances, the identification may include evaluating a profile of each of a plurality of agents (or experts or delegates), each agent (e.g., agent 120) in the plurality of agents associated with a terminal device (e.g., terminal device 115). The evaluation may relate to content in the network device message.
[0020]
[0035] In some cases, the connection routing system 150 may determine whether any connection channel has been established between the network device 105 and a terminal device associated with the client (or remote server 140), and if so, whether such a channel should be used to exchange a series of communications including that communication.
[0021]
[0036] Upon selecting a terminal device 115 for communicating with the network device 105, the connection routing system 150 may establish a connection channel between the network device 105 and the terminal device 115. In some instances, the connection routing system 150 may send a message to the selected terminal device 115. The message may request acceptance of a proposed assignment to communicate with the network device 105 or may identify that such an assignment has been generated. The message may include information about the network device 105 (e.g., IP address, device type, and / or operating system), information about the associated user 110 (e.g., language spoken, duration of interacting with the client, skill level, sentiment, and / or topic preferences), the received communication, code for generating and sending the communication to the network device 105 (e.g., clickable hyperlinks), and / or instructions for generating and sending the communication to the network device 105.
[0022]
[0037] In one instance, communications between network devices 105 and terminal devices 115 may be routed through a connection routing system 150. Such a configuration may enable the connection routing system 150 to monitor communication exchanges and detect problems (e.g., as defined based on rules), such as unresponsiveness or extended latency of any device. Additionally, such a configuration may facilitate selective or complete storage of communications, which may be used later, for example, to evaluate the quality of the communication exchange and / or to support learning for updating or generating routing rules to promote specific post-communication targets.
[0023]
[0038] In some examples, the connection routing system 150 may monitor communication exchanges and perform automated actions (e.g., rule-based actions) based on the live communication. For example, when the connection routing system 150 determines that a communication is related to a particular item (e.g., a product), the connection routing system 150 may automatically send an additional message to the terminal device 115 that includes additional information about the item (e.g., the quantity of the item available, links to support documents related to the item, or other information about the item or similar items).
[0024]
[0039] In one instance, a designated terminal device 115 may communicate with network device 105 without relaying the communications through connection routing system 150. One or both of devices 105, 115 may (or may not) report certain communication metrics or content to connection routing system 150 to facilitate communication monitoring and / or data storage.
[0025]
[0040] As described above, the connection routing system 150 may route the selected communication to the remote server 140. The remote server 140 may be configured to provide information in a predetermined manner. For example, the remote server 140 may access one or more defined text passages, voice recordings, and / or files for transmission in response to the communication. The remote server 140 may select a particular text passage, recording, or file based on, for example, an analysis (e.g., semantic or mapping analysis) of the received communication.
[0026]
[0041] Routing and / or other decisions or processes performed in the connection routing system 150 may be performed based on data and / or rules defined or provided at least in part by one or more client devices 130. For example, the client device 130 may transmit a communication identifying agent prioritization, terminal device type, and / or topic / skill matching. As another example, the client device 130 may identify one or more weights to apply to various variables potentially affecting the routing decision (e.g., language compatibility, expected response time, device type and capabilities, and / or terminal device load balancing). It will be appreciated that which terminal devices and / or agents should be associated with a client may be dynamic. Communications from the client device 130 and / or terminal device 115 may provide information indicating that a given terminal device and / or agent should be added or removed as associated with the client. For example, the client device 130 may transmit a communication having an IP address and an indication as to whether a terminal device having that address should be added to or removed from a list identifying client-associated terminal devices.
[0027]
[0042] Each communication (e.g., between devices, between devices and the connection routing system 150, between the remote server 140 and the connection routing system 150, or between the remote server 140 and devices) may take place over one or more networks 170. Any combination of open or closed networks may be included in the one or more networks 170. Examples of suitable networks include the Internet, a personal area network, a local area network (LAN), a wide area network (WAN), or a wireless local area network (WLAN). Other networks may be suitable as well. The one or more networks 170 may be fully embedded within or may include an intranet, an extranet, or combinations thereof. In some instances, a network in the one or more networks 170 includes a short-range communication channel, such as a Bluetooth® or Bluetooth Low Energy channel. In one example, communication between two or more systems and / or devices may be achieved by a secure communication protocol, such as Secure Sockets Layer (SSL) or Transport Layer Security (TLS). Additionally, the data and / or transaction details may be encrypted based on any convenient, known, or to be developed methodology, such as, but not limited to, Data Encryption Standard (DES), Triple DES, Rivest-Shamir-Adleman Cipher (RSA), Blowfish Cipher, Advanced Encryption Standard (AES), CAST-128, CAST-256, Decorrelated Fast Cipher (DFC), Tiny Encryption Algorithm (TEA), eXtended TEA (XTEA), Corrected Block TEA (XXTEA), and / or RC5.
[0028]
[0043] The network devices 105, the terminal devices 115, and / or the client devices 130 may include, for example, portable electronic devices (e.g., smartphones, tablets, laptop computers, or smart wearable devices) or non-portable electronic devices (e.g., one or more desktop computers, smart appliances, servers, and / or processors). The connection routing system 150 may be housed separately from the network devices, the terminal devices, and the client devices, or may be part of one or more such devices (e.g., via installation of an application on the device). The remote server 140 may be housed separately from each device and the connection routing system 150, and / or may be part of another device or system. While each device, server, and system in FIG. 1 is shown as a single device, it will be understood that multiple devices may be used instead. For example, a set of network devices may be used to transmit various communications from a single user, or the remote server 140 may include a server stack.
[0029]
[0044] Software agents or applications may be installed and / or executable on the illustrated devices, systems, or servers. In one instance, the software agents or applications are configured such that the various illustrated elements may operate in a complementary manner. For example, a software agent on a device may be configured to collect and send data regarding device usage to a separate connected routing system, and a software application on the separate connected routing system may be configured to receive and process the data.
[0030]
[0045] Figure 2 shows a block diagram of another example of a network communication system. In general, Figure 2 illustrates various components configured and arranged to enable a network device 205 to communicate with one or more terminal devices 215 via network connections, such as a router 207 and a wide area network 270. The illustrated example includes nine terminal devices 215 included in three local area networks 235.
[0031]
[0046] In some instances, communications from network device 205 include destination data (e.g., a destination IP address) that indicates, at least partially or completely, which end device is to receive the communication. A network communication system, such as the system described in FIG. 2, may include one or more internetwork connectivity components 245 that may process the destination data and facilitate appropriate routing.
[0032]
[0047] Each internetwork connectivity component 245 may be connected to multiple networks 235 and may have multiple network cards installed (e.g., each card connected to a different network). For example, an internetwork connectivity component 245 may be connected to a wide area network 270 (e.g., the Internet) and one or more local area networks 235. In the illustrated case, for a communication to be transmitted from network device 205 to any of the terminal devices, the communication is handled by multiple internetwork connectivity components 245 in the illustrated system. Similarly, communications with client device 230 through router 233 are also handled by internetwork connectivity component 245.
[0033]
[0048] When internetwork connectivity component 245 receives a communication (or a set of packets corresponding to a communication), it may determine at least a portion of a route for passing the communication to a network associated with a destination. The route may be determined, for example, using a routing table (e.g., stored in a router), which may include one or more routes that are predefined, generated based on an incoming message (e.g., from another router or from another device), or learned.
[0034]
[0049] Examples of internetwork connectivity components 245 include routers 260 and gateways 265. Internetwork connectivity components 245 (e.g., gateways 265) may be configured to translate between network systems or protocols. For example, gateways 265 may facilitate communication between Transmission Control Protocol / Internet Protocol (TCP / IP) devices and Internetwork Packet Switching / Sequenced Packet Switching (IPX / SPX) devices.
[0035]
[0050] Further routing may still be performed upon receiving a communication at the local area network 235. Such intra-network routing may be performed via an intra-network connectivity component 245, such as a switch 280 or a hub 285. Each intra-network connectivity component 245 may be connected (e.g., wirelessly or wired via an Ethernet cable, etc.) to multiple terminal devices 215. The hub 285 may be configured to repeat all received communications for each device to which it is connected. Each terminal device may then evaluate each communication to determine whether the terminal device is a destination device or whether the communication should be ignored. The switch 280 may be configured to selectively direct communications only to the destination terminal device.
[0036]
[0051] In some instances, the local area network 235 may be divided into multiple segments, each of which may be associated with independent firewalls, security rules, and network protocols. An intra-network connectivity component 245 may be provided in each of one, more than one, or all of the segments to facilitate intra-segment routing. A bridge 290 may be configured to route communications across the segments 275.
[0037]
[0052] To properly route communications across or within a network, various components analyze destination data in the communications. For example, such data may indicate which network the communication should be routed to, which device within the network the communication should be routed to, or which communication an end device should process (vs. ignore). However, in some cases, it is not immediately clear which end devices (or even which networks) should participate in a communication from a network device.
[0038]
[0053] As an example, a set of terminal devices may be configured to provide similar types of response communications. Thus, it may be expected that a query in a communication from a network device may be responded to in a similar manner regardless of which network device the communication is routed to. While this assumption may be true at a high level, various details related to the terminal devices may result in certain routings being favored compared to others. For example, terminal devices in a set may differ from each other with respect to (for example) which communication channels are supported, geographic and / or network proximity to the network devices, and / or characteristics of associated agents (e.g., knowledge base, experience, language used, capacity, general personality or sentiment, etc.). Thus, selective routing may facilitate faster responses that respond more accurately and / or completely to network device communications. One issue is that static routing that maps network devices to terminal devices may not be able to account for variations in communication topics, channel types, agent capacities, etc.
[0039]
[0054] In FIG. 2, the connection routing system 250 may be configured to function as a relay and / or a destination address. Thus, for example, a set of network devices 205 may send communications that each identify the connection routing system 250 as a destination. The connection routing system 250 may receive each communication and may concurrently monitor a set of terminal devices (e.g., to generate metrics for each terminal device). Based on the monitoring and rules, the connection routing system 250 may identify a terminal device 215 to which it may relay each communication. Depending on the example, the terminal device's communications may be similarly directed to a certain destination (e.g., in the connection routing system 250) for further relaying, or the terminal device may initiate communication directly with the corresponding network device. These examples may facilitate efficient routing and thorough communication monitoring.
[0040]
[0055] It will be appreciated that many variations of Figure 2 are contemplated. For example, the connection routing system 250 may be associated with a connection component (e.g., the internetwork connection component 245 or the intranetwork connection component 245) such that an application corresponding to the connection routing system 250 (or a portion thereof) is installed on the component. The application may execute, for example, independently or by communicating with one or more similar or complementary applications (e.g., running on one or more other components, network devices, or remote servers).
[0041]
[0056] Figure 3 shows a protocol stack mapping representation of the operations of the connectivity components. More specifically, Figure 3 identifies the layers of operations in the Open Systems Interoperability (OSI) model that correspond to the various connectivity components.
[0042]
[0057] The OSI model may include multiple logical layers 302-314. These layers are arranged in an ordered stack such that layers 302-312 each service a higher level and layers 304-314 are each serviced by a lower layer. The OSI model includes a physical layer 302. The physical layer 302 may define the physical communication of parameters (e.g., electrical, optical, or electromagnetic). The physical layer 302 also defines connection routing protocols, such as protocols for establishing and closing connections. The physical layer 302 may further define flow control protocols and transmission modes.
[0043]
[0058] The link layer 304 may route inter-node communications. The link layer 304 may detect and correct errors (e.g., transmission errors in the physical layer 302) and control access permissions. The link layer 304 may include a medium access control (MAC) layer and a logical link control (LLC) layer.
[0044]
[0059] The network layer 306 may coordinate the transfer of data (eg, of variable length) across nodes in the same network (eg, as datagrams). The network layer 306 may translate logical network addresses into physical machine addresses.
[0045]
[0060] The transport layer 308 may control the quality of transmission and reception. The transport layer 308 may provide a protocol for transferring data, such as the Transmission Control Protocol (TCP). The transport layer 308 may perform segmentation / desegmentation of data packets for transmission and may detect and handle transmission errors that occur in layers 302-306. The session layer 310 may initiate, maintain, and terminate connections between local and remote applications. Sessions may be used as part of remote procedure communications. The presentation layer 312 may encrypt, decrypt, and format data based on data types known to be accepted by the application layer or the network layer.
[0046]
[0061] The application layer 314 may interact with software applications that control or control communications. Through such applications, the application layer 314 may identify (for example) the destination, the status or capacity of local resources, and / or the content or formatting of the communication. The various layers 302-314 may perform other functions as available and applicable.
[0047]
[0062] The intra-network connectivity components 322, 324 are shown operating at the physical layer 302 and the link layer 304. More specifically, hubs may operate at the physical layer so that operations can be controlled with respect to receiving and transmitting communications. Hubs have little or no ability to operate at a higher level since they do not have the ability to address communications or filter data. Switches, on the other hand, may operate at the link layer since they are able to filter communication frames based on addresses (e.g., MAC addresses).
[0048]
[0063] Internetwork connectivity components 326, 328, on the other hand, are shown operating at a higher level (e.g., layers 306-314). For example, a router may filter communication data packets based on address (e.g., IP address). A router may forward packets to a particular port based on address to direct the packet to the appropriate network. Gateways operate at the network layer and above and may perform similar filtering and steering, as well as further data translation (e.g., across protocols or architectures).
[0049]
[0064] The connection routing system 350 may interact with and / or operate on one, more, all, or any of the various layers in various examples. For example, the connection routing system 350 may interact with a hub to dynamically adjust which terminal or client devices the hub communicates with. As another example, the connection routing system 350 may communicate with a bridge, switch, router, or gateway to influence which terminal device the component selects as a destination (e.g., MAC, logical, or physical) address. As a further example, the connection routing system 350 may monitor, control, or direct the segmentation of data packets on the transport layer 308, the session duration on the session layer 310, and / or the encryption and / or compression on the presentation layer 312. In some examples, the connection routing system 350 may interact with various layers by exchanging communications with (e.g., sending commands to) equipment operating at a particular layer (e.g., a switch operating at the link layer 304), by routing or modifying existing communications (e.g., between a network device and a client device) in a particular manner, and / or by generating new communications containing particular information (e.g., a new destination address) based on existing communications. Thus, the connection routing system 350 may affect communication routing and channel establishment (or maintenance or termination) through communications with various devices and / or through affecting operations at various protocol stack layers.
[0050]
[0065] 4 illustrates a multi-device communication exchange system according to an example. The system includes a network device 405 configured to communicate with various types of terminal devices and client devices over various types of communication channels.
[0051]
[0066] In the illustrated case, the network device 405 may transmit a telephone or text message communication over a cellular network (e.g., via base station 410). The communication may be routed to a client location 423 or a terminal location 443. A connection routing system 430 receives the communication and identifies which client or terminal device should respond to the communication. Such a determination may depend on identifying a client to which the communication pertains (e.g., based on content analysis or user input indicating a client) and determining one or more metrics for each of the one or more terminal devices associated with the client. For example, in FIG. 4, each cluster of terminal devices 440A, 440B, and 440C may correspond to a different client or to a different node for a particular client (e.g., nodes focused on different topics, response types, or nodes associated with a particular routing path or portion of a routing path). The terminal devices may be geographically co-located or distributed. The metrics may be determined based on stored or learned data and / or monitoring events as events occur (e.g., based on capacity).
[0052]
[0067] The connection routing system 430 may communicate with various terminal and client devices and other components via one or more routers 435 or other internetwork or intranetwork connection components. The connection routing system 430 may collect, analyze, and / or store data from or relating to communications, terminal device operations, client rules, and / or user-related actions (e.g., online activity) in one or more data stores. Such data may affect communication routing.
[0053]
[0068] For example, a machine learning model may use previous data and routing results from previous operations to improve future routing selection. This improvement may be achieved with a workload model that is generated or updated using any combination of supervised learning with constructed datasets and historical data, unsupervised learning based on expectation or projection models for current routing paths in the system, and system usage targets. Any such data may be used in operations for natural language processing (e.g., natural language understanding, natural language inference, etc.) to generate natural language data or to update machine learning models. Such data may then be used by client systems or shared with applications running on network devices or servers to improve dynamic message processing (e.g., improved intent indicator data results or response message generation).
[0054]
[0069] The client device 415 may also be connected to a telephone device 425 associated with the client location. The telephone device 425 may be a landline phone associated with a telephone number, in some examples. The network device 405 may have the capability to generate and send text (e.g., SMS) messages to a telephone number associated with the telephone device 425, which may be routed to the client device 415, in some examples. The client device 415 may be capable of receiving and processing text messages. To process text messages received from the network device 405, the client device 415 may be coupled to a server 420. The server 420 may receive and respond to inquiries from the client device 415 for information regarding goods or services offered at the client location 423, such as product information, appointment schedules, business hours, location information, contact information, and the like.
[0055]
[0070] FIG. 5 illustrates a block diagram of an example of a connection routing system. A message receiver interface 505 may receive a message. In some cases, the message may be received as part of a communication sent by a source device (e.g., housed separately from the connection routing system or housed in the same housing), such as, for example, a network device. In some cases, the communication may be part of a series of communications or communication exchanges, which may include a series of messages or message exchanges being routed between two devices (e.g., a network device and a client device). The messages or communication exchanges may be part of and / or define the communication between the devices. The communication channel or operating channel may include one or more protocols (e.g., a routing protocol, a task assignment protocol, and / or an addressing protocol) used to facilitate routing and communication exchanges between the devices.
[0056]
[0071] In some cases, the message may include a message generated based on input received at a local or remote user interface. For example, the message may include a message generated based on a button or key press or a recorded audio signal. In one case, the message includes an automatically generated message, such as one generated upon detecting that a network device has provided a particular input command (e.g., a key sequence). The message may include an instruction or request, such as one to initiate a communication exchange.
[0057]
[0072] In some cases, the message may include or be associated with an identifier of the client. For example, the message may explicitly identify the client (or a device associated with the client), the message may include or be associated with a web page or app page associated with the client, the message may include or be associated with a destination address associated with the client, or the message may include or be associated with an identification of an item (e.g., a product) or service associated with the client. As an example, the network device may present an app page of a particular client, which may provide an option to send a communication to an agent. Upon receiving a user input corresponding to the message, a communication may be generated to include the message and an identifier of the particular client (e.g., a text message to a phone number).
[0058]
[0073] A processing engine 510 may process received communications and / or messages. Processing may include, for example, extracting one or more particular data elements (e.g., a message, a client identifier, a network device identifier, an account identifier, etc.). Processing may include formatting or converting the communication type (e.g., to be compatible with a particular device type, operating system, communication channel type, protocol, and / or network).
[0059]
[0074] A message evaluation engine 515 may evaluate a (e.g., extracted or received) message. The evaluation may include, for example, identifying one or more categories or tags for the message. Examples of types of categories or tags may include (for example) topic, sentiment, complexity, and urgency. The difference between categorizing and tagging a message is that a tag may be open while a category may be limited (e.g., according to a predefined set of category options). A topic may include, for example, a technical issue, a use question, or a request. A category or tag may be determined based on, for example, a semantic analysis of the message (e.g., by identifying keywords, sentence structure, repeated words, punctuation characters, and / or non-article words), user input (e.g., with one or more categories selected), and / or message-related statistics (e.g., typing speed and / or response latency).
[0060]
[0075] In some instances, the message evaluation engine 515 may determine a set of factors or metrics for the message determined in relation to a workload model used to evaluate and route requests received by the system. The metrics may include, for example, the number of characters, the number of words, the number of capital letters, the number of words in all capital letters, or the number of instances of a particular character or punctuation mark (e.g., exclamation marks, question marks, and / or periods). The metrics may include ratios such as the percentage of sentences ending with an exclamation mark (or question mark), the percentage of words in all capital letters, etc. The metrics may include subject types or keywords that may be used to assign a set of factors to the anticipated user communication.
[0061]
[0076] The message rating engine 515 may store messages, message metrics, and / or message statistics in the message data store 520. Each message may also be stored in association with other data (e.g., metadata), such as data identifying a corresponding source device, destination device, network device, terminal device, client, one or more categories, one or more stages, and / or message-related statistics. Various components of the connection routing system (e.g., the message rating engine 515 and / or the communication routing engine 525) may query the message data store 520 to retrieve query response messages, message metrics, and / or message statistics.
[0062]
[0077] The communication routing engine 525 may determine to which device a communication should be routed and how the receiving and transmitting devices should communicate. Each of these decisions may depend, for example, on whether a particular network device (or any network device associated with a particular user) has previously communicated with a terminal device in a set of client devices or terminal devices (e.g., any terminal device associated with the connection routing system or any terminal device associated with one or more particular clients). In some implementations, the communication routing system implements an analysis of agent capacity by determining a workload measure from factors associated with the message and comparing the workload measure to the current workload capacity of individual agents to assign and route requests for communications from users to agents.
[0063]
[0078] In some instances, when a network device (or other network devices associated with the same user or profile) has previously communicated with a given terminal device, communication routing may generally be biased toward the same terminal device. Other factors that may affect routing may include, for example, whether the terminal device (or corresponding agent) is available and / or the expected response latency of the terminal device. Such factors may be considered in absolute terms or relative to similar metrics corresponding to other terminal devices. Rerouting rules (e.g., client rules or general rules) may indicate how such factors should be evaluated and weighted to determine whether to forego agent consistency.
[0064]
[0079] When a network device (or other network devices associated with the same user or account) has not previously communicated with a given terminal device, the selection of the terminal device may be performed based on factors such as, for example, the extent to which the knowledge bases of various agents correspond to the topic of communication, the capacity of various agents at a given time and / or on a channel type, the type and / or capabilities of the terminal device (e.g., associated with a client), etc. In one instance, the rules may identify how to determine sub-parameters for one or more factors such as these and the weight to assign to each parameter. The parameters for each agent may be determined by combining (e.g., summing) the weighted sub-parameters. The selection of the terminal device may then be made by comparing the parameters of the terminal devices.
[0065]
[0080] With regard to determining how devices should communicate, the communication routing engine 525 may determine whether a client device or terminal device (for example) should respond to a communication via (for example) an SMS message, a voice call, a video communication, etc. The communication type may be selected based on, for example, a communication type priority list (e.g., defined at least in part by the client or user), the type of communication previously received from the network device (e.g., to promote consistency), the complexity of the received message, the capabilities of the network device, and / or the capacity of one or more terminal devices. Clearly, some communication types will result in communication whenever an event occurs (e.g., where fast message response is expected), while others may result in asynchronous communication (e.g., where delays (e.g., minutes or hours) between messages are tolerable).
[0066]
[0081] The communication routing engine 525 may interact with the account engine 530 in various contexts. For example, the account engine 530 may look up a network or terminal device identifier in the account data store 535 to identify an account corresponding to the device. Additionally, the account engine 530 may maintain data regarding previous communication exchanges (e.g., times, other device(s) involved, channel type, resolution stage, topic(s) and / or associated client identifiers), data regarding connection channels (e.g., indicating, for each of one or more clients, whether any channels exist, the terminal device associated with each channel, the establishment time, frequency of use, last use date, any channel constraints and / or types of communication supported), data regarding user or agent preferences or constraints (e.g., related to terminal device selection, response latency, terminal device consistency, agent expertise, and / or communication type preferences or constraints), and / or data regarding user or agent characteristics (e.g., age, language(s) used or preferred, geographic location, interests, etc.).
[0067]
[0082] Additionally, the communication routing engine 525 may alert the account engine 530 of various connection channel actions so that the account data store 535 may be updated to reflect current channel data. For example, upon establishing a channel, the communication routing engine 525 may notify the account engine 530 of the establishment and identify one or more of the network device, the terminal device, the account, and the client. The account engine 530 may then notify the user of the existence of the channel so that the user may be aware of the agent consistency being utilized (in some instances).
[0068]
[0083] The communication routing engine 525 may further interact with a client mapping engine 540, which may map the communication to one or more clients (and / or associated brands). In some instances, a communication received from the network device itself includes an identifier corresponding to the client (e.g., an identifier of the client, web page, or app page). The identifier may be included as part of the message (e.g., which the client mapping engine 540 may detect) or may be included as other data in a message-inclusive communication. The client mapping engine 540 may then look up the identifier in a client data store 545 to retrieve additional data regarding the client and / or the client's identifier.
[0069]
[0084] In some cases, the message may not specifically address any client. For example, the message may include a general query. The client mapping engine 540 may, for example, perform a semantic analysis on the message to identify one or more keywords and identify one or more clients associated with the keyword(s). In some cases, a single client is identified. In some cases, multiple clients are identified. The identification of each client may then be presented via the network device such that a user may select (e.g., via an associated terminal device) a client with which to communicate.
[0070]
[0085] The client data store 545 may include an identification of one or more terminal devices (and / or agents) associated with a client. The terminal routing engine 550 may retrieve or collect data relating to each of one, more than one, or all such terminal devices (and / or agents) to affect routing decisions. For example, the terminal routing engine 550 may maintain a terminal data store, which may store information such as the device type, operating system, communication type capabilities, installed application accessories, geographic location, and / or identifier (e.g., IP address) of the terminal device. Some information may be dynamically updated. For example, information indicating whether a terminal device is available may be dynamically updated based on (for example) communications from the terminal device (e.g., identifying whether the device is asleep, turned off / on, inactive / active, or identifying whether an input has been received within a period of time), communication routing (e.g., indicating whether the terminal device is involved in or assigned to be part of a communication exchange), or communications from a network device or terminal device indicating that a communication exchange has ended or started.
[0071]
[0086] It will be appreciated that in various contexts, being engaged in one or more communication exchanges does not necessarily indicate that the terminal device is unavailable to engage in another communication exchange. Various factors, such as communication type (e.g., message), client-identified or user-identified target response time, and / or system load (e.g., general or user-related), may affect how many exchanges a terminal device may be involved in.
[0072]
[0087] When the communication routing engine 525 identifies a terminal device or client device to be involved in a communication exchange or connection channel, it may notify the terminal routing engine 550, which may retrieve any relevant data about the terminal device, such as destination (e.g., IP) address, device type, protocol, etc., from the terminal data store 555. The processing engine 510 may then modify the message-containing communication (in some cases) to have a particular format, conform to a particular protocol, etc., or may generate a new communication (including the message). In some cases, the new or modified message may include additional data, such as account data corresponding to the network device, a message chronicle, and / or client data.
[0073]
[0088] The message transmitter interface 560 may then transmit the communication to a terminal device or a client device. Transmission may include, for example, wired or wireless transmission to a device contained in a separate housing. A terminal device may include a terminal device in the same or a different network (e.g., a local area network) as the connected routing system. Thus, transmitting a communication to a terminal device may include transmitting the communication to an inter- or intra-network connection component.
[0074]
[0089] FIG. 6 illustrates an agent workspace 600 of an agent (e.g., agent 120) that is simultaneously handling multiple user communications. As described above, the example system may be used to receive incoming requests for user communications from users. Such requests may be routed to agents operating within a communication system using workload balancing to improve the operation of such a system. The illustrated agent workspace 600, which may be displayed on a screen area 602 of an agent device used by the agent, includes three windows 610, 620, and 630, each corresponding to a different conversation with a different user. As shown, the center window 610 includes interface representations of incoming communications 618 and 614, and outgoing communications 616. The right window 620 and the left window 630 each include a similar interface representation of a communication history between the agent associated with the agent workspace 600 and a different user associated with each representation. Each representation would be generated in response to a request for a user communication from an associated user that is routed to an agent associated with the agent workspace 600. The agent may then use these windows to interact with and respond to information from the user as part of the user communication. Such windows may correspond to different types of messaging platforms and applications. In some implementations, different channels, including messaging channels, application-based channels, web interface channels, and audio channels, may be represented in different windows. Nonetheless, each user communication may be analyzed individually and in aggregate to identify the current aggregate workload for a particular agent. As illustrated in the windows, each communication may be associated with different topics and different issues, which may use different types and amounts of work to engage in the communication in a way that results in a high level of user satisfaction.
[0075]
[0090] Each type of system may handle different types of user communications. However, different types of user communications may involve different levels of workload. For example, one of the illustrated windows includes an inquiry about general information about a new savings account, while another of the illustrated windows includes an inquiry about fees for the user's account. The former is a general inquiry for which a standard set of response material is likely to exist, while the latter involves looking up user information. Looking up user information may involve follow-up questions to elicit user identity and credentials, verify user identity and credentials, uncover the fees at issue, and identify questions regarding such fees, and investigate responsive answers to the same. Thus, an agent tasked with handling an instance (or even multiple instances) of the former type of question (e.g., involving providing general information) may be identified as handling a higher level of workload than another agent tasked with handling an instance of the latter type (e.g., involving more extensive engagement with the user to elicit certain answers and derive a response).
[0076]
[0091] Data from such communications can be stored within the system and used for both historical analysis of workload as well as smart analysis and routing of workload for agents within the system.
[0077]
[0092] 7A and 7B illustrate an example dashboard 700 including information about a number of agents 730. FIG. 7A illustrates a left portion 710A of an example interface display, and FIG. 7B illustrates a right portion 710B of an example interface display, which will be connected by interface line A. Such dashboard information, which may be tracked for each agent regarding capacity and performance, may be used to identify current levels of capacity and make decisions regarding workload allocation. As illustrated, the information for each agent 730 may include category data 732, such as agent name, agent group, online percentage, status duration, one or more categories of skills, open slots, active slots, current load, and number of closed communications. Selection of different category data 732 may be used to tailor the information displayed in the dashboard 700. Such information may be dynamically updated (e.g., as information is received and processed at the system's devices), which also allows for dynamic updates of aggregated workload and workload capacity for each agent. The generated data may then be stored and presented in a timeline 740 as a history of capacity usage, which may be used in routing requests in the future as the workload model is updated based on performance history. Thus, as the current workload for one or more communications is updated and adjusted, such updates and adjustments result in a different aggregated workload, and thus, a different workload capacity. The illustrated dashboard 700 shows allocated communication slots, including communication slot 734.
[0078]
[0093] For example, an agent may be identified by name, agent group, skill, and as having six activated slots out of a maximum of seven slots, which represents an aggregated workload of 85%. Some systems may define target workload levels to maximize metrics related to productivity (e.g., number of closed user communications) while simultaneously maximizing user satisfaction indicators. A workload model may, for example, be directed to identifying not only how to be able to handle as many user communications as possible, but to do so in a way that maintains at least a minimum threshold for user satisfaction. Thus, the target workload may not be fully 100% of full capacity, but may be set at 80-90%.
[0079]
[0094] Dashboard 700 may additionally include an indicator in the timeline as to when an agent entered or left the system via a closed 736 or added 738 indicator. The additional information may include information regarding the end of the communication and elements of how the communication ended (e.g., with or without a resolution to the user issue).
[0080]
[0095] 8A and 8B illustrate a dashboard 800 interface including information about a plurality of user communications. FIG. 8A illustrates a left portion 810A of an example interface display, and FIG. 8B illustrates a right portion 810B of an example interface display, which will be connected by interface line B. As illustrated, the dashboard 800 includes a set of category data 820 and communication 822 entries, each user communication 822 may be associated with category data 820, which may include start time, status, user name, MCS sentiment indicator, skill category, agent name, agent group, last message time, and duration. Other implementations may include other such category data. Such information about a plurality of different user communications may be incorporated into a workload model that may be used to predict a measure of workload associated with an incoming request for a new user communication. As the number of user communications increases, the body of information about them increases as well, and may be used to refine the workload model for use in generating predictions about new and incoming user communications.
[0081]
[0096] Information about a particular communication 822 entry may, for example, be associated with certain factors of the model. For example, keywords from the incoming request, characteristics of the user, user history data, client associations to particular problems and user communications, and other such information may have associated factors. When an incoming request for a user communication is received from a user, factors identified from the request may be used to generate a workload measure for the communication. This workload measure may predict the workload associated with the user communication. The workload measure may be a time-based intensity curve (e.g., expected communication intensity over time) or general information about expected workload characteristics (e.g., communication time, maximum expected communication intensity, mean and standard deviation of expected communication intensity, or other statistical estimates that may model agent workload from a particular user communication).
[0082]
[0097] In the dashboard 800, the success of a conversation may be indicated by an examination or analysis of user communications (e.g., an indication of praise and gratitude versus criticism in a systems analysis of user communications or user feedback). In addition to the actual content of the conversation, certain other parameters and metrics may be tracked and measured to evaluate success and improve how subsequent conversations are designed. For example, information about text size, message length, timing and duration, different icons (e.g., to indicate a bot or human agent), and other such factors may be tracked to evaluate the relative success and workload history of the communication. Sentiment indicators may be assigned, for example, to quantify the degree of success of the conversation. Such sentiment indicators may be based on language and statements provided by the consumer / user during the conversation. Such indicators may be used to weight the workload model with respect to factors associated with high user satisfaction indicators and against factors associated with low user satisfaction indicators. These factors may further be used to identify target capacities for loading agents for efficient performance in a manner that takes into account the respective difficulties of several concurrent or simultaneous communications and maintains at least a certain level of user satisfaction. Aspects of such analysis may be used in a general workload model for all agents in the system. Other aspects may be used in personal workload models for individual agents, or segment workload models for agents sharing certain characteristics (e.g., areas of expertise, identified skills, agent groups, experience, system groups, etc.).
[0083]
[0098] FIG. 9 illustrates a dashboard 900 that tracks multiple communications, as well as their timing, progress / status, and satisfaction levels, for display within a user interface screen 910. As illustrated, various parameters regarding such communications may be tracked and evaluated as the communications take place. Thus, ongoing communications may be evaluated to identify whether a response may be overdue, how overdue, and what user satisfaction level has been achieved. Such data may be tracked to identify which factors may contribute to user satisfaction and which factors may detract from it. Such factors may also be used to evaluate the performance of the smart capacity system in balancing the workload, with historical data used to update the workload model and improve routing in future workload routings. In some examples, the system may set certain performance commitments or goals that entail a predetermined threshold level of user satisfaction. Thus, the workload models described herein may be developed and updated to achieve at least a threshold level of user satisfaction.
[0084]
[0099] As illustrated in dashboard 900, data 920 tracks active conversations in the system over time, including the current conversation. Data 930 tracks some resolved conversations over time. Data 940 tracks response times in agent conversations against threshold metrics to determine aggregate delays and overdue responses for all agents in the system. Such data can be analyzed to determine whether routing inefficiencies are causing system performance issues or whether additional agents are needed at a particular time (e.g., by comparing individual agent performance against aggregate agent performance to determine whether all agents are experiencing similar overdue response time issues or only certain agents). Data 950 includes user satisfaction information for a particular time period. Additional implementations of such data may chart such data over time or against other factors to identify correlations and areas where routing or agent routing may improve user response and system performance.
[0085]
[0100] FIG. 10 is a flow chart illustrating an aspect of a model for dynamic and intelligence-driven routing of workload capacity. In a given system or industry, workload may be defined differently such that a single system may use different workload models for different clients. When an agent processes user communications for different clients, different workload measures and different demand factors may be normalized to a shared workload measure, so that an aggregated workload and resulting current workload capacity may be generated and standardized for agents serving different clients (e.g., different system models or industries). An example of a workload model as illustrated in FIG. 10 includes a user component and an agent component. Specifically, the user component may include a pace at which a user may provide input or follow-up on requests 1011, 1012, 1013, 1014 routed through a queue 1020, while the agent component may include workloads 1031, 1032, 1033 identified by an agent to interact with the user. The user component may be viewed as an intensity or workload measurement for a particular user communication over time. A workload model may be generated by continuous analysis of communication data from multiple communications to identify characteristics and factors associated with the identified pace at which a user may provide input or follow-up and associated with the identified workload by an agent to interact with the user. Such characteristics and factors may include any parameter or metric that may be tracked for a communication, such as those illustrated in the example user interfaces of FIGS. 6-9. These parameters, metrics, and factors may also take into account the medium of communication (e.g., web browser, messaging application, voice, etc.) that may affect the speed of follow-up by a user (e.g., a user typing 80 words per minute on a keyboard versus a user using thumb typing on a 12-button phone).Additional factors may include communication timing, time of day, text analysis, level of difficulty, level of activity, identified topic, user or agent history, or the current stage of the communication.
[0086]
[0101] The workload model may be updated based on new communication information and stored in the memory of the device (e.g., a computer implementing the connection routing system 150, the smart capacity routing 1230, etc.). Such a workload model may associate each user component and agent component with respect to a different set of factors. Each factor may represent a measurement of workload defined in a manner tailored to the goals of an industry or a particular system. In a call center, for example, the workload may be defined by standard units (e.g., call slots) or by percentages. While a conventional implementation of a call center system may automatically route calls to agents each tasked with handling a predefined number of slots, the present method may include dynamically allocating some slots to each agent and activating (and deactivating) slots as needed. Such an example improves the operation of the communication system, the network, and individual devices by optimizing the use of processing and network resources, thus improving system throughput and also avoiding system imbalances that waste computing resources and degrade performance.
[0087]
[0102] Thus, the examples described herein include a computing machine that can actively manage capacity for hundreds of agents handling thousands of active user communications. Each user communication in the system can be monitored such that data in such communications is analyzed in real time (e.g., as the communication occurs, including network movements and processing delays). The data in the active user communications can be used to dynamically update aggregate capacity for agents in the system. In some examples, this occurs for all data, so that for agents handling multiple user communications, with each user communication involving data exchange on the network at varying frequencies, this dynamic update can involve individual agents having their capacity updated in the system every few seconds. For systems with hundreds of agents, this can involve a connection management system updating multiple different agent capacities every second. The update process can additionally involve multiple complex calculations in the context of one or more management models. For example, an aggregated capacity for an agent processing user communications with different analysis elements (e.g., because the user communications are for different problems, clients, latency conditions, etc.) may involve updates to the analysis elements and calculations for workload measures for each user communication, which is then further calculated in the context of the workload measures for each user communication being processed by the agent. Thus, an aggregated workload capacity for an individual agent may involve multiple sets of analysis elements, each with a different workload model, to determine the availability of the agent. When the system receives a new request for a user communication, the real-time state of the agent capacity, determined using the workload measures and aggregated capacity for each agent, is used to determine how to route the new incoming request for a user communication (e.g., a new session between a user and an agent).
[0088]
[0103] FIG. 11 is a diagram of a request routing method 1100 based on dynamic workload capacity. As illustrated, in step 1105, a workload model is stored in memory. Incoming requests for user communications may be received and queued in step 1110. The received requests may include information regarding one or more of the factors referenced in the workload model. In step 1115, each request received in the system is evaluated along with the agent capacity. This evaluation may include workload measurements identified for the requested user communication based on comparing the received request information to the stored workload model (e.g., matching factors identified from the message, such as communication topic, with the workload predicted by the workload model for messages having similar factors). Each agent may be evaluated to identify their current workload capacity.
[0089]
[0104] As illustrated, each agent may be handling the same or a different number of slots. However, the identified capacity for each agent may differ because each incoming user communication being handled simultaneously by an agent may be dynamically assigned a workload measurement based on a comparison to the workload model. The measurements associated with the agent may be further aggregated to identify a total aggregated workload for that designated agent. Thus, the aggregated workload may be used in step 1120 to evaluate whether a particular agent may have the capacity to handle the workload measurements associated with the incoming communication simultaneously with the set of current communications. In cases where multiple agents may have sufficient capacity, routing the incoming request may be based on comparing the respective capacities (e.g., aggregated workloads) between the agents.
[0090]
[0105] An agent may then be selected to process the incoming request in step 1125. In particular, it may be determined that the identified agent is identified as having a current workload capacity to process the identified workload measurements from step 1120, and a slot is activated for the identified agent in step 1125. Such identification may be based on evaluating the identified workload measurements for the incoming request and the aggregated workload for each agent. A communication slot may be activated for the identified agent and defined by the identified workload measurements. The incoming request may be routed to the identified agent in step 1130. Then, in step 1135, the current workload capacity of the identified agent may be updated based on the identified workload measurements. Such an update may include aggregating the identified workload for the requested user communication with one or more concurrent user communications currently being handled by the identified agent.
[0091]
[0106] In some examples, workload capacity may be routed as capacity changes during a user communication due to changing levels in workload. Such predictions may be based on various factors that may be tracked for the communication, including certain textual or language indicators. For example, a user may switch topics from a general query for standard information to a query for more detailed and personal information. In such cases, the prediction may include an adjustment to the workload measure initially identified for the communication. Such a prediction made for a particular communication may further result in dynamically adjusting the identified workload measure associated with the requested user communication as the communication is received. In turn, the adjusted workload measure may be used to dynamically adjust the aggregated workload capacity of the identified agent as the agent communicates with the assigned user and the assigned communication channel. Thus, subsequent requests may be evaluated for the identified agent based on the updated aggregated workload capacity.
[0092]
[0107] FIG. 12 illustrates an exemplary network environment in which the system 1200 for dynamic and intelligence-driven routing of workload capacity may be implemented. The requesting device 1210 may include various user devices known in the art for communicating over a communication network, including a request for a corresponding user communication as illustrated in FIG. 11. The agent device 1220 may similarly include various different computing devices known in the art for interacting with the requesting device 1210. The agent illustrated in FIG. 11 may use such an agent device 1220 to interact with an assigned requester. The smart capacity routing 1230 encompasses various computing devices (e.g., servers) configured to perform the methods described in connection with FIG. 10 and FIG. 11. The statistics engine 1240 may include various computing devices connected to the communication network (e.g., the Internet) by which the requesting device 1210 and the agent device 1220 communicate. The statistics engine 1240 may be configured to analyze information in the communication to generate features and make predictions regarding subsequent conversation intensity. Such predictions may be based on a workload model as described herein. Model training 1250 may use communication data to train the workload model to refine and improve the predictions. In some examples, model training 1250 may not only collect past communication data (e.g., using imported data) to build the model, but also incorporate current communication data to continue to improve the predictions. As described above, different independent models may be structured and used with a common workload metric to enable agents to serve different users having demand factors associated with different workload models. In other implementations, such variations are structured in a single workload model that may accommodate different users having communication demands for a wide variety of systems and problem types.
[0093]
[0108] 13 then shows a flowchart illustrating a method 1300 of smart capacity workload routing according to examples described herein. In some implementations, the method 1300 may be implemented by a device (e.g., a computer, a server, or any machine described herein, or other such suitable device) having processing circuitry configured to perform or assist in the operations of the method 1300. In some implementations, the method 1300 may be implemented as computer-readable instructions that, when executed by one or more processors of a device or system, cause the method 1300 to be executed.
[0094]
[0109] The method 1300 includes a step 1305 in which the memory stores a workload model for a set of factors associated with the user communication. The set of factors is associated with a workload measurement. In some examples, the workload model is based on a set of past user communications, where the set of past user communications is associated with a user satisfaction indicator above a predetermined minimum threshold. In some example implementations, the set of factors in the workload model includes a pace of the user communication. In some examples, the set of factors in the workload model includes an amount of work required from an agent to engage in the user communication. In some examples, the set of factors in the workload model includes at least one of a messaging medium used to request the user communication, a time associated with the request, a topic of the request, a level of difficulty of the request, or a stage of the request. In various implementations, any combination of such implementations may be used, and additional factors may be used in addition to any such combination.
[0095]
[0110] In step 1310, a device receives an incoming request for user communication (e.g., a data communication), the incoming request including information regarding one or more factors of a set of factors (e.g., as described above). The request may be received using a communication interface circuit of the device, which is passed to a processing circuit and processed for various identification and analysis operations. In some examples, there are multiple factors, and each factor is associated with a different workload measurement. The different workload measurements for the different factors may be used as part of a workload model for smart capacity routing.
[0096]
[0111] Then, in step 1315, a workload measurement for the user communication is identified based on comparing the incoming request to the workload model. In some implementations, multiple factors from the incoming request may be used in different ways within the workload model. In some implementations, multiple factors from the incoming request may be used for a single workload measurement of the workload model. In some implementations, individual factors of multiple factors of a set of factors may be used in multiple different workload measurements of the workload model (e.g., different workload measurements used to generate an aggregated workload from a workload model structured for multiple different workload measurements in the model).
[0097]
[0112] Then, in step 1320, an agent available to handle the user communication is identified. As part of this step, the agent is identified as available based on a current workload capacity for the agent and the workload model indicating the agent as having a current workload capacity to handle the workload indicated by the workload measurement. In some examples, the current workload capacity of the agent is determined based on a current aggregated workload associated with one or more concurrent user communications currently being handled by the agent. In some implementations, identifying the agent includes selecting the agent from a plurality of different agents each having a different current aggregated workload capacity, where selecting the agent is based on a comparison of the different current aggregated workload capacities for each of the plurality of different agents. In some implementations, the agent is selected from a plurality of different agents each currently handling a different number of communication slots. In some implementations, identifying the agent includes comparing the workload measurement to the available workload capacity of the agent. The workload capacity may be an aggregated workload capacity based on a set of current concurrent communications assigned to the agent. This aggregation may include communications on different communication channels (e.g., voice, text, messaging, etc.), which is adjusted as the rate of communication on the various channels changes and as communications end or change in intensity. Monitoring changes in communication intensity (e.g., based on the frequency or content of the communication, which indicates the user's expectations of responsiveness or the importance of a bursty response) may be used in dynamically adjusting the aggregated workload capacity of agents, including workload measurements for specific user communications, as the communications take place. In some examples, predictions regarding the upcoming workload for communications may be used.Such predictions may estimate future communication intensity, which may be based on topic history for the user or other users, patterns observed in user communications, models generated for user communications, agent feedback, analysis of communication content, or any other such data. Such predictions may be used to adjust workload measurements, as well as aggregate workload and workload capacity for agents. These predictions enable accurate workload routing, since agent capacity is updated as communications occur (e.g., with delays based on communication system delays, analysis delays, or other such delays as data is received and processed to update models and measurements). Various implementations may use a combination of such factors.
[0098]
[0113] In step 1325, communication slots for the agent are activated, and the communication slots are defined based on the workload measurements. In some implementations, several communication slots are available for the agent, and the maximum number of available communication slots varies based on the expected workload associated with each communication slot. In some implementations, each communication slot is associated with communication for a single user on a single channel (e.g., a voice channel or a text channel). In some implementations, a maximum number of communication slots is set for each individual user, regardless of the communication intensity of each communication, to limit the agent from being overwhelmed if multiple communications spike in intensity at the same time. In some implementations, the agent is not assigned a new request until the previous communication ends and a slot is open.
[0099]
[0114] In step 1330, the incoming request is routed to an agent. Communications associated with the request may then be monitored as described above to adjust the workload associated with the request. In some implementations, the predicted workload may be compared to the actual workload to update the agent capacity. If the workload is lower than predicted, additional requests may be routed to the agent. If multiple requests involve a lower than expected workload, a workload buffer may be expanded to accommodate spikes or shifts in workload intensity that may occur and exceed agent capacity. If the workload is higher than predicted, the new request may be routed to another agent, delayed, or other capacity routing actions may be taken. This workload routing may include requesting a schedule later communication for new requests, or deferring requests that are of low priority or intensity.
[0100]
[0115] At step 1335, the method 1300 includes updating a current workload capacity for the agent based on the workload measurement. In some examples, the current workload capacity of the agent is based on aggregating the workload for user communications with one or more concurrent user communications currently being handled by the agent.
[0101]
[0116] Although method 1300 describes a single user communication being routed, the connection management system may process any number of incoming requests for user communications and may analyze and update agent workload capacity using data from any number of agents processing any number of user communications. Thus, the exemplary system may analyze data from thousands of user communications in real time to update capacity data for hundreds of agents in the system. Other implementations may process any number of communications and agents, with new incoming requests parsed for analysis elements and routed based on availability calculated from complex, constantly updated availability data (e.g., current workload capacity for agents). Additionally, even in smaller systems, the connection management device may handle bursts of data. For example, even if the system can only handle a few dozen user communications at a time, the system may handle multiple requests for user communications simultaneously. Thus, if 10 user requests are received in a one second time period, rather than waiting for an operator to process each request, the system can process all of the requests and assign them to an appropriate agent based on each agent's real-time current workload capacity as it is updated. In such an embodiment, any queue for new incoming user communication requests can simply be a memory that stores data as it is processed and communicated through the system. Similarly, once a user communication is resolved and terminated, the system can immediately identify this and automatically update the agent's current workload capacity.
[0102]
[0117] As described above and illustrated in the various interfaces shown above, communications assigned to agents may generate data regarding agent performance, system performance, or any other such metrics. As part of such operations, the management device may use one or more processors to parse data from user communications and use performance models (e.g., matching performance expectations, user feedback history, and other such data) to match data from user communications with performance metrics. Other data may also be collected for performance, such as direct user feedback, timing and responsiveness data from user communications, and any other such data. Additionally, in systems where many agents are each processing many user communications within a period of time, comparisons between communication data for different agents may be used for performance analysis. This may involve processing circuitry parsing thousands of words of text and correlating additional analysis elements with the parsed text to create performance data and performance analysis output. This information may then be aggregated in various ways to provide feedback on agent performance, updates to workload models, updates to workload prediction calculation update models for agent capacity, and may include individualized metrics regarding agent capacity and performance. For example, one agent may have a different maximum capacity than another agent, and the generated data may be used to modify both the customized data or agent data as well as the overall set of data for all agents. This difference may also be determined from data regarding the type of agent, or any other such information regarding the agent.For example, agents may be categorized by experience, specialization, communication type, or other such information, and groups of agents based on such categories may be used to analyze and update system behavior for such groupings.
[0103]
[0118] While various steps have been described above, it will be apparent that certain steps may be repeated and intervening steps may be performed as well. In addition, different devices in the system will perform corresponding steps, and various devices may perform multiple steps simultaneously. For example, a device may perform such steps to route a request to multiple agents simultaneously, with multiple different agent devices performing corresponding operations and the agent device communicating with the user device.
[0104]
[0119] FIG. 14 illustrates a computing system architecture 1400 including various components in electrical communication with one another using a connection 1406, such as a bus, according to some implementations. The example system architecture 1400 includes a processing unit (CPU or processor) 1404 and system connections 1406 that couple various system components, including a system memory 1420, such as a ROM 1418 and a RAM 1416, to the processor 1404. The system architecture 1400 may include a cache 1402 of high-speed memory that is directly connected to, adjacent to, or integrated as part of the processor 1404. The system architecture 1400 may copy data from the memory 1420 and / or storage device 1408 to the cache 1402 for quick access by the processor 1404. In this manner, the cache may provide a performance boost that prevents the processor 1404 from being delayed while waiting for data. These and other modules may control or be configured to control the processor 1404 to perform various actions.
[0105]
[0120] Other system memory 1420 may be available for use as well. Memory 1420 may include multiple different types of memory with different performance characteristics. Processor 1404 may include any general purpose processor, as well as hardware or software services, such as service 1 1410, service 2 1412, and service 3 1414, stored in storage device 1408 and configured to control processor 1404, as well as special purpose processors where software instructions are built into the actual processor design. Processor 1404 may be a completely self-contained computing system, including multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetric or asymmetric.
[0106]
[0121] To enable user communication with the computing system architecture 1400, the input devices 1422 may represent any number of input mechanisms, such as a microphone for audio, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, voice, etc. The output devices 1424 may also be one or more of several output mechanisms known to those skilled in the art. In some cases, a multi-modal system may enable a user to provide multiple types of input to communicate with the computing system architecture 1400. The communication interface 1426 may generally govern and control user input and system output. There is no restriction to operating on any particular hardware arrangement, and thus the basic functions herein may be easily replaced with improved hardware or firmware configurations as they are developed.
[0107]
[0122] The storage device 1408 is a non-volatile memory and may be a hard disk or other type of computer-readable medium that may store data that is accessible by a computer, such as a magnetic cassette, a flash memory card, a solid-state memory device, a digital versatile disk, a cartridge, RAM 1416, ROM 1418, and hybrids thereof.
[0108]
[0123] The storage device 1408 may include services 1410, 1412, 1414 for controlling the processor 1404. Other hardware or software modules are contemplated. The storage device 1408 may be connected to a system connection 1406. In one aspect, a hardware module performing a particular function may include a software component stored in a computer readable medium in association with the necessary hardware components, such as the processor 1404, the connection 1406, the output device 1424, etc., to perform that function.
[0109]
[0124] The disclosed gift selection, attribution, and distribution system may be implemented using a computing system. An example computing system may include a processor (e.g., a central processing unit), a memory, a non-volatile memory, and an interface device. The memory may store data and / or one or more sets of code, software, scripts, etc. The components of the computer system may be coupled to each other via a bus or through some other known or convenient device. The processor may be configured to perform all or part of the methods described herein, for example, by executing code stored in the memory. One or more of the user device or computer, the provider server or system, or a suspended database update system may include components of a computing system or variations of such systems.
[0110]
[0125] The present disclosure contemplates a computer system taking any suitable physical form. By way of example and not limitation, the computer system may be an embedded computer system, a system on a chip (SOC), a single board computer system (SBC) (e.g., a computer on module (COM) or a system on module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile phone, a personal digital assistant (PDA), a server, or a combination of two or more of these. Where appropriate, the computer system may include one or more computer systems; may be single or distributed; may span multiple locations; may span multiple machines; and / or may reside in a cloud that may include one or more cloud components in one or more networks. Where appropriate, the one or more computer systems may perform one or more steps of one or more methods described or illustrated herein without substantial spatial or temporal limitations. By way of example and not limitation, the one or more computer systems may run in a batch mode that aggregates multiple events, such as each time an event occurs or across one or more steps of one or more methods described or illustrated herein. One or more computer systems may perform one or more steps of one or more methods described or illustrated herein at different times or in different locations, where appropriate.
[0111]
[0126] The processor may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or a Motorola power PC microprocessor. Those skilled in the art will recognize that the terms "machine-readable (storage) medium" or "computer-readable (storage) medium" include any type of device that can be accessed by a processor.
[0112]
[0127] The memory may be coupled to the processor, for example, by a bus. The memory may include, by way of example and not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory may be local, remote, or distributed.
[0113]
[0128] The bus may also couple the processor to non-volatile memory and drive units. Non-volatile memory is often a magnetic floppy or hard disk, a magneto-optical disk, an optical disk, a CD-ROM, a read-only memory (ROM) such as an EPROM or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written to the memory by a direct memory access process during the execution of software in the computer. Non-volatile storage may be local, remote, or distributed. Non-volatile memory is optional, since the system may be created with all applicable data available in memory. A typical computer system will usually include at least a processor, a memory, and a device (e.g., a bus) that couples the memory to the processor.
[0114]
[0129] The software may be stored in a non-volatile memory and / or a drive unit. In fact, for large programs, it may not even be possible to store the entire program in memory. It should be understood, however, that in order to execute the software, it is moved, if necessary, to a computer-readable location suitable for processing, and for purposes of illustration, that location is referred to herein as memory. Even when the software is moved to memory for execution, the processor may utilize hardware registers to store values associated with the software, and ideally a local cache, which serves to speed up execution. As used herein, a software program is assumed to be stored in any known or convenient location (from non-volatile storage to hardware registers) when the software program is referred to as being "implemented in a computer-readable medium." A processor is considered to be "configured to execute a program" when at least one value associated with the program is stored in a register readable by the processor.
[0115]
[0130] The bus may also couple the processor to a network interface device. The interface may include one or more of a modem or a network interface. It will be understood that the modem or network interface may be considered to be part of the computer system. The interface may include an analog modem, an integrated services digital network (ISDN0 modem, a cable modem, a token ring interface, a satellite transmission interface (e.g., "Direct PC"), or other interface for coupling the computer system to other computer systems. The interface may include one or more input and / or output (I / O) devices. The I / O devices may include, by way of example and not limitation, a keyboard, a mouse or other pointing device, a disk drive, a printer, a scanner, and other input and / or output devices including a display device. The display device may include, by way of example and not limitation, a cathode ray tube (CRT), a liquid crystal display (LCD), or any other applicable known or convenient display device.
[0116]
[0131] In operation, a computer system may be controlled by operating system software that includes a file routing system, such as a disk operating system. One example of operating system software having associated file routing system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Washington, and their associated file routing system. Another example of operating system software having its associated file routing system software is the Linux®™ operating system and its associated file routing system. The file routing system may be stored in non-volatile memory and / or the drive unit, and may cause the processor to perform various operations involving an operating system to input and output data and store data in memory, including storing files on the non-volatile memory and / or the drive unit.
[0117]
[0132] Some portions of the detailed description may be presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0118]
[0133] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.Unless otherwise indicated, and as will be apparent from the following description, throughout this description, descriptions using terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or "generating" or the like will be understood to refer to the actions and processes of a computer system or similar electronic computing device that manipulates and converts data, which are represented as physical (electronic) quantities in the computer system's registers and memory, into other data, which are also represented as physical quantities in the computer system's memory or registers or other such information storage, transmission or display devices.
[0119]
[0134] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform some example methods. The structure associated with a variety of these systems will be apparent from the description that follows. In addition, the techniques are not described with reference to any particular programming language, and thus the various examples may be implemented using a variety of programming languages.
[0120]
[0135] In various implementations, the system may operate as a standalone device or may be connected (e.g., networked) to other systems. In a networked deployment, the system may operate in the capacity of a server or client system in a client-server network environment, or as a peer system in a peer-to-peer (or distributed) network environment.
[0121]
[0136] The system may be a server computer, a client computer, a personal computer (PC), a tablet PC, a laptop computer, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, an iPhone, a Blackberry, a processor, a telephone, a web appliance, a network router, a switch or bridge, or any system capable of executing (sequentially or otherwise) a set of instructions that specify actions to be taken by the system.
[0122]
[0137] In general, the routines executed to implement implementations of the present disclosure may be implemented as part of an application, component, program, object, module, or sequence of instructions referred to as a "computer program" or as part of an operating system. A computer program typically includes one or more instructions stored at various times in various memory and storage devices within a computer that, when read and executed by one or more processing units or processors within the computer, cause the computer to perform operations to implement elements involved in various aspects of the present disclosure.
[0123]
[0138] Moreover, while the examples are described in the context of fully functional computers and computer systems, those skilled in the art will appreciate that the various examples may be distributed as program objects in a variety of forms, and that the present disclosure applies equally regardless of the particular type of machine-readable or computer-readable medium used to actually effect the distribution.
[0124]
[0139] Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read Only Memories (CD ROMS), Digital Versatile Disks (DVDs), etc.), and transmission type media such as digital and analog communications links, among others.
[0125]
[0140] In some circumstances, the operation of a memory device, such as a change in state from a binary 1 to a binary 0 or vice versa, may include a transformation, such as, for example, a physical transformation. In certain types of memory devices, such a physical transformation may include a physical transformation of an article to a different state or thing. For example, but not limited to, for some types of memory devices, a change in state may involve the accumulation and storage of an electric charge or the release of a stored electric charge. Similarly, in other memory devices, a change in state may include a physical change or transformation in magnetic orientation, or a physical change or transformation in molecular structure, such as from crystalline to amorphous or vice versa. The foregoing is not intended to be an exhaustive list of all examples in which a change in state from a binary 1 to a binary 0 or vice versa in a memory device may include a transformation, such as a physical transformation. Rather, the foregoing is intended as an illustrative example.
[0126]
[0141] Storage media may typically be non-transient or may include non-transient devices. In this context, non-transient storage media may include devices that are tangible, meaning that the device has a concrete, tangible physical form, although the device may change its physical state. Thus, for example, non-transient refers to a device that remains tangible despite this change in state.
[0127]
[0142] The above description and drawings are illustrative and should not be construed as limiting the subject matter to the precise form disclosed. Those skilled in the art will appreciate that many modifications and variations are possible in light of the above disclosure. Numerous details have been described to provide a thorough understanding of the present disclosure. However, in certain instances, well-known or conventional details have not been described in order to avoid obscuring the description.
[0128]
[0143] As used herein, the terms "connected," "coupled," or any variation thereof, when applied to modules of a system, refer to any connection or coupling, either direct or indirect, between two or more elements, and the coupling of connections between elements may be physical, logical, or any combination thereof. In addition, the terms "herein," "above," "below," and terms of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, terms in the above Detailed Description using singular or plural numbers may also include plural or singular numbers, respectively. The term "or" in reference to a list of two or more items encompasses all of the following interpretations of that term: any of the items in the list, all of the items in the list, or any combination of the items in the list.
[0129]
[0144] Those skilled in the art will appreciate that the disclosed subject matter may be embodied in other forms and manners not set forth below. It will be understood that the use of relationship-indicating terminology, if any, such as first, second, top and bottom, etc., is used only to distinguish one entity or action from another, without necessarily requiring or implying any such actual relationship or order between such entities or actions.
[0130]
[0145] Although processes or blocks are presented in a given order, alternative implementations may perform routines having steps or use systems having blocks in a different order, and some processes or blocks may be deleted, moved, added, sub-divided, substituted, combined, and / or modified to provide alternative combinations or sub-combinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed sequentially, these processes or blocks may instead be performed in parallel or at different times. Additionally, any numbers described herein are merely examples, and alternative implementations may use different values or ranges.
[0131]
[0146] The teachings of the disclosure provided herein may be applied to other systems, not necessarily the system described above. Elements and operations of the various examples described above may be combined to provide further examples.
[0132]
[0147] Any of the above patents and applications and other references, including any that may be listed in accompanying application papers, are incorporated herein by reference. Aspects of the present disclosure may be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide still further examples of the present disclosure.
[0133]
[0148] These and other changes may be made to the disclosure in light of the above detailed description. Although the above description describes certain examples and describes the best mode contemplated, no matter how detailed the above may be in the text, the present teachings may be implemented in many ways. The details of the system may vary widely in their implementation details while still being encompassed by the subject matter disclosed herein. As noted above, a particular term used when describing a particular feature or aspect of the disclosure should not be interpreted as implying that the term has been redefined herein to be limited to any characteristic, feature, or aspect of the disclosure with which it is associated. In general, the terms used in the following claims should not be interpreted to limit the disclosure to the implementations disclosed herein, unless the above detailed description section explicitly defines such terms. Thus, the actual scope of the disclosure encompasses not only the disclosed implementations, but also all equivalent ways of practicing or implementing the disclosure under the claims.
[0134]
[0149] Although certain aspects of the disclosure are presented below in certain claim forms, the inventors contemplate various aspects of the disclosure in any number of claim forms. Any claim intended to be treated under 35 U.S.C. § 142(f) will begin with the words "means for." Accordingly, the applicants reserve the right to add additional claims after filing to pursue such additional claim forms for other aspects of the disclosure.
[0135]
[0150] The terms used in this specification generally have their ordinary meaning in the art in the context of this disclosure and in the context in which each term is used.Certain terms used to describe this disclosure have been described above or elsewhere in this specification to provide practitioners with additional guidance regarding the description of this disclosure.For convenience, certain terms can be highlighted, for example, by using capital letters, italics, and / or quotation marks.The use of highlighting does not affect the scope and meaning of a term, and the scope and meaning of a term is the same in the same context whether it is highlighted or not.It will be understood that the same element can be described in more than one way.
[0136]
[0151] As a result, alternative wording and synonyms may be used for any one or more of the terms described herein, and no special importance is placed on whether a term is recited or explained herein. Synonyms of certain terms are provided. The recitation of one or more synonyms does not preclude the use of other synonyms. The use of examples anywhere in this specification, including examples of any term described herein, is merely illustrative and is not intended to further limit the scope and meaning of the disclosure or of any exemplified term. Similarly, the disclosure is not limited to the various examples provided herein.
[0137]
[0152] Without intending to further limit the scope of the present disclosure, examples of instruments, devices, methods, and their related results according to the examples of the present disclosure are given below. Please note that titles or subtitles may be used in the examples for the convenience of the reader, but this should not limit the scope of the present disclosure in any way. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art to which this disclosure pertains. In case of conflict, this document, including definitions, shall prevail.
[0138]
[0153] Some portions of this description describe examples in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. While these operations have been described functionally, computationally, or logically, it will be understood that they are implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has been found to be convenient at times, without loss of generality, to refer to arrangements of these operations as modules. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combination thereof.
[0139]
[0154] Any of the steps, operations, or processes described herein may be performed or implemented using one or more hardware or software modules, alone or in combination with other devices. In some examples, a software module is implemented in a computer program object that includes a computer-readable medium containing computer program code, which may be executed by a computer processor to perform any or all of the steps, operations, or processes described.
[0140]
[0155] Examples may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the purposes involved and / or it may include a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory tangible computer-readable storage medium, or any type of medium suitable for storing electronic instructions, that may be coupled to a computer system bus. Additionally, any computing system referred to herein may include a single processor or may be an architecture using a multi-processor design for increased computing power.
[0141]
[0156] Examples may also relate to objects generated by the computing processes described herein. Such objects may include information resulting from the computing processes, where the information is stored on a non-transitory, tangible, computer-readable storage medium, and may include any implementation of the computer program objects or other data combinations described herein.
[0142]
[0157] The language used herein has been selected primarily for ease of reading and instructional purposes, and may not have been selected to delineate or limit the subject matter. Thus, the scope of the disclosure is intended to be limited not by this detailed description, but by any claims issued on an application based hereon. Thus, the disclosure of the examples is intended to be illustrative, but not limiting, of the scope of the subject matter described in the following claims.
[0143]
[0158] Details have been provided in the foregoing description to provide a thorough understanding of various implementations of systems and components for a contextual connectivity system. However, those skilled in the art will appreciate that the implementations described above may be practiced without these details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form so as not to obscure the examples with unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail so as to avoid obscuring the examples.
[0144]
[0159] It should also be noted that the individual implementations may be described as a process that is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of operations may be rearranged. A process terminates when the operations are completed, but may have additional steps that are not included. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to the function returning to the calling function or to the main function.
[0145]
[0160] The client devices, network devices, and other devices may be computing systems that include, among other things, one or more integrated circuits, input devices, output devices, data storage devices, and / or network interfaces. The integrated circuits may include, among other things, one or more processors, volatile memory, and / or non-volatile memory. The input devices may include, for example, keyboards, mice, keypads, touch interfaces, microphones, cameras, and / or other types of input devices. The output devices may include, for example, display screens, speakers, haptic feedback systems, printers, and / or other types of output devices. Data storage devices, such as hard drives or flash memory, may enable computing devices to store data temporarily or permanently. Network interfaces, such as wireless or wired interfaces, may enable computing devices to communicate with a network. Examples of computing devices include desktop computers, laptop computers, server computers, handheld computers, tablets, smartphones, personal digital assistants, digital home assistants, as well as machines and equipment in which computing devices are embedded.
[0146]
[0161] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or transporting instruction(s) and / or data. Computer-readable media may include non-transitory media that do not include carrier waves and / or transitory electronic signals on which data may be stored and propagated wirelessly or via wired connections. Examples of non-transitory media may include, but are not limited to, magnetic disks or tapes, optical storage media such as compact disks (CDs) or digital versatile disks (DVDs), flash memory, memory or memory devices. A computer-readable medium may store code and / or machine-executable instructions, which may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, or the like.
[0147]
[0162] Furthermore, the various examples described above may be further implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments (e.g., computer program product) for performing the necessary tasks may be stored in a computer-readable medium or machine-readable medium (e.g., a medium for storing program code or code segments). A processor(s) implemented in an integrated circuit may perform the necessary tasks.
[0148]
[0163] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Such a processor may be configured to perform any of the techniques described in this disclosure. A general-purpose processor may be a microprocessor, but alternatively, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Thus, as used herein, the term "processor" may refer to any of the foregoing structures, any combination of the foregoing structures, or any other structure or apparatus suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated software or hardware modules configured for implementation of a suspended database update system.
[0149]
[0164] Where a component is described as being "configured to" perform a particular operation, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the operation, by programming a programmable electronic circuit (e.g., a microprocessor or other suitable electronic circuitry) to perform the operation, or any combination thereof.
[0150]
[0165] The various exemplary logic blocks, modules, circuits, and algorithm steps described in connection with the implementations disclosed herein may be implemented as electronic hardware, computer software, firmware, or a combination thereof. To clearly illustrate this interchangeability of hardware and software, various exemplary components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
[0151]
[0166] The foregoing detailed description of the technology has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The described examples have been chosen to best explain the principles of the technology, its practical application, and to enable others skilled in the art to utilize the technology in various instances and with various modifications suitable for the particular use contemplated. It is intended that the scope of the technology be defined by the claims. The invention as described in the claims of the original application is set forth below. [C1] storing a workload model for a set of analysis elements associated with user communications, where the set of analysis elements is associated with a workload measurement; receiving an incoming request for a user communication, the incoming request including information regarding one or more analytical elements of the set of analytical elements; identifying a workload measure for the user communication based on comparing the incoming requests to the workload model; identifying an agent for handling the user communication, wherein the agent is identified based on a current workload capacity for the agent and the workload model indicating the agent as having the current workload capacity for handling the workload indicated by the workload measurements; activating a communication slot for the agent, the communication slot being defined based on the workload measurement; routing the incoming request to the agent; setting the current workload capacity for the agent based on the workload measurements; A method for providing the above. [C2] The method of C1, further comprising identifying the current workload capacity of the agent based on a current aggregated workload associated with one or more concurrent user communications currently being handled by the agent. [C3] The method of claim 1, wherein setting the current workload capacity of the agent is based on aggregating the workload for the user communication with one or more concurrent user communications currently being handled by the agent. [C4] The method of C1, wherein the workload model is based on a set of past user communications, the set of past user communications being associated with a user satisfaction indicator that is above a predetermined minimum threshold. [C5] The method of claim 1, wherein the set of analysis factors in the workload model includes pace of user communication. [C6] The method of claim 1, wherein the set of analysis factors in the workload model includes an amount of work required from the agent to engage in the user communication. [C7] The method of claim 1, wherein the set of analysis elements in the workload model includes two or more of a messaging medium used to request the user communication, a time associated with the request, a topic of the request, a level of difficulty of the request, or a stage of the request. [C8] The method of claim 1, wherein identifying the agent includes selecting the agent from a plurality of different agents, each having a different current aggregated workload capacity, and selecting the agent is based on a comparison of the different current aggregated workload capacities for each of the plurality of different agents. [C9] The method of C1, wherein the agent is selected from a plurality of different agents each currently handling a different number of communication slots. [C10] The method of claim 1, wherein identifying the agent includes comparing the workload measure to a workload capacity of the agent. [C11] The method of claim 1, further comprising identifying an aggregate workload capacity of the agent based on a set of current concurrent communications assigned to the agent, the set of current concurrent communications corresponding to a current aggregate workload. [C12] The method of C1, further comprising dynamically adjusting the workload measure associated with the user communication as the user communication occurs. [C13] The method of C1, further comprising dynamically adjusting the aggregated workload capacity of the agents, including the workload measurements for the user communications, based on a current real-time workload. [C14] The method of C13, further comprising routing a next request to the agent based on the aggregated workload capacity. [C15] a memory for storing a workload model for a set of analysis elements associated with user communications, the set of analysis elements being associated with workload measurements; coupled to the memory; and receiving an incoming request for a user communication, the incoming request including information regarding one or more analytical elements of the set of analytical elements; identifying a workload measure for the user communication based on comparing the incoming requests to the workload model; identifying an agent for handling the user communication, wherein the agent is identified based on a current workload capacity for the agent and the workload model indicating the agent as having the current workload capacity for handling the workload indicated by the workload measurements; activating a communication slot for the agent, the communication slot being defined based on the workload measurement; initiating routing of the incoming requests to the agents; setting the current workload capacity for the agent based on the workload measurements; One or more processors configured to perform operations including: A system comprising: [C16] The system of C15, wherein the one or more processors are further configured to perform operations including identifying the current workload capacity of the agent based on a current aggregated workload associated with one or more concurrent user communications currently being handled by the agent. [C17] A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a device, cause the device to: storing a workload model for a set of analysis elements associated with user communications, where the set of analysis elements is associated with a workload measurement; receiving an incoming request for a user communication, the incoming request including information regarding one or more analytical elements of the set of analytical elements; identifying a workload measure for the user communication based on comparing the incoming requests to the workload model; identifying an agent for handling the user communication, wherein the agent is identified based on a current workload capacity for the agent and the workload model indicating the agent as having the current workload capacity for handling the workload indicated by the workload measurements; activating a communication slot for the agent, the communication slot being defined based on the workload measurement; routing the incoming request to the agent; setting the current workload capacity for the agent based on the workload measurements; 16. A non-transitory computer-readable medium for performing operations for workload capacity routing, comprising: [C18] The non-transitory computer-readable medium of C17, wherein setting the current workload capacity of the agent is based on aggregating the workload for the user communication with one or more concurrent user communications currently being handled by the agent. [C19] The instructions cause the one or more processors to: dynamically adjusting an aggregate workload capacity of the agents that includes the workload measurements for the user communications; routing subsequent requests to the agents based on the aggregated workload capacity; The non-transitory computer-readable medium of C17, further comprising: [C20] The instructions cause the one or more processors to: The non-transitory computer-readable medium of C17, further comprising: identifying an aggregate workload capacity of the agent based on a set of current concurrent communications assigned to the agent, the set of current concurrent communications corresponding to a current aggregate workload.
Claims
1. 1. A computer-implemented method comprising: measuring a current workload for an agent in a communication system to generate a workload measurement for the agent, the current workload being associated with one or more communication slots for the agent; communicating the workload measurements, where when the workload measurements are received at a smart capacity routing server, the workload measurements are used along with a workload model to identify the agent as having a current workload capacity to handle user communications; receiving an incoming request for the user communication, the incoming request being received in response to communicating the workload measurements; Measuring an updated current workload; and generating updated workload measurements for the agents from the updated current workload, the updated workload measurements being associated with activated communication slots of the one or more communication slots used for the user communication; dynamically generating an updated current workload capacity for the agent using the updated workload measurements and the workload model; and A computer-implemented method comprising:
2. 2. The computer-implemented method of claim 1, wherein the current workload capacity of the agent is set based on aggregating a workload for the user communication with one or more concurrent user communications currently being handled by the agent.
3. The computer-implemented method of claim 1 , wherein the workload model is based on a set of past user communications, the set of past user communications being associated with a user satisfaction indicator that is above a predetermined minimum threshold.
4. The computer-implemented method of claim 1 , further comprising selecting the agent from a plurality of different agents based on workload capacities of the plurality of different agents.
5. 2. The computer-implemented method of claim 1, further comprising identifying an aggregated workload capacity for the agent based on a set of current concurrent communications assigned to the agent, the set of current concurrent communications corresponding to a current aggregated workload and a history of current workload capacity updates.
6. The computer-implemented method of claim 1 , further comprising dynamically adjusting the workload measurements for the agent in real-time during interactive communication with a user.
7. The computer-implemented method of claim 1 , further comprising routing a next request to the agent based on the updated current workload capacity.
8. 1. A system comprising: Memory, one or more processors coupled to the memory, the one or more processors comprising: measuring a current workload for an agent in a communication system to generate a workload measurement for the agent, the current workload being associated with one or more communication slots for the agent; communicating the workload measurements, where when the workload measurements are received at a smart capacity routing server, the workload measurements are used along with a workload model to identify the agent as having a current workload capacity to handle user communications; receiving an incoming request for the user communication, the incoming request being received in response to communicating the workload measurements; Measuring an updated current workload; and generating updated workload measurements for the agents from the updated current workload, the updated workload measurements being associated with activated communication slots of the one or more communication slots used for the user communication; dynamically generating an updated current workload capacity for the agent using the updated workload measurements and the workload model; and A system configured to perform operations including:
9. 10. The system of claim 8, wherein the current workload capacity of the agent is set based on aggregating the workload for the user communication with one or more concurrent user communications currently being handled by the agent.
10. The system of claim 8 , wherein the workload model is based on a set of past user communications, the set of past user communications being associated with a user satisfaction indicator that is above a predetermined minimum threshold.
11. The system of claim 8 , further comprising selecting the agent from a plurality of different agents based on workload capacity of the plurality of different agents.
12. 10. The system of claim 8, further comprising identifying an aggregated workload capacity for the agent based on a set of current concurrent communications assigned to the agent, the set of current concurrent communications corresponding to a current aggregated workload and a history of current workload capacity updates.
13. The system of claim 8 , further comprising dynamically adjusting the workload measurements for the agent in real-time during interactive communication with a user.
14. The system of claim 8 , further comprising routing a next request to the agent based on the updated current workload capacity.
15. 1. A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors of a device, cause the device to: measuring a current workload for an agent in a communication system to generate a workload measurement for the agent, the current workload being associated with one or more communication slots for the agent; communicating the workload measurements, where when the workload measurements are received at a smart capacity routing server, the workload measurements are used along with a workload model to identify the agent as having a current workload capacity to handle user communications; receiving an incoming request for the user communication, the incoming request being received in response to communicating the workload measurements; Measuring an updated current workload; and generating updated workload measurements for the agents from the updated current workload, the updated workload measurements being associated with activated communication slots of the one or more communication slots used for the user communication; dynamically generating an updated current workload capacity for the agent using the updated workload measurements and the workload model; and 23. A non-transitory computer-readable storage medium for causing a computer to perform operations comprising:
16. 16. The non-transitory computer-readable storage medium of claim 15, wherein the current workload capacity of the agent is set based on aggregating a workload for the user communication with one or more concurrent user communications currently being handled by the agent.
17. 20. The non-transitory computer-readable storage medium of claim 15, wherein the workload model is based on a set of past user communications, the set of past user communications being associated with a user satisfaction indicator that is above a predetermined minimum threshold.
18. 20. The non-transitory computer-readable storage medium of claim 15, further comprising selecting the agent from a plurality of different agents based on a workload capacity of the plurality of different agents.
19. 16. The non-transitory computer-readable storage medium of claim 15, further comprising identifying an aggregated workload capacity for the agent based on a set of current concurrent communications assigned to the agent, the set of current concurrent communications corresponding to a current aggregated workload and a history of current workload capacity updates.
20. 20. The non-transitory computer-readable storage medium of claim 15, further comprising dynamically adjusting the workload measurements for the agent in real-time during interactive communication with a user.
Citation Information
Patent Citations
Managing the selection of performance interventions in a contact center
US20040202308A1
