The technology disclosed describes systems and methods for tracking user engagement with an online application while the user is multi-tasking among assignments, in a multi-tenant environment. The methods disclosed include managing digital data for a plurality of tenants to software instances, each tenant of the plurality of tenants comprising a group of users who share a common access with a specific set of privileges to a software instance of at least one application.
Customer service is moving toward more personalized one-on-one communication with consumers, through the many channels and on the many devices they use. Many companies track the work time of agents at a high level, tracking time working and time spent away from the computer, and more detailed systems track how long the agent takes to close a given work item. When contact centers were driven by phone calls and agents tended to work on a single task at a time, this approach worked fine. As customers multi-task more, agents who respond to the customers tend to work on multiple work items generated from work cases, chats and social media conversations, as well as phone texts and messages, multiplexing as they respond.
Omni-channel is a multichannel approach for providing customers with a seamless experience, whether the customer is interacting online via email, web, short message service (SMS), chat, or live agent video support on a desktop or mobile device, by telephone, or in a brick and mortar store.
Service channels for contact centers are evolving significantly for organizations. In this era of Omni-channel, a business determines the relative priority for handling a variety of service channels, and routes issues accordingly. In order to select a preferred agent to receive any given piece of work, the system can evaluate the availability of the agents in the org, their queue membership, their current workload, and the priority of the work. The customer service solution can route any type of incoming work item to the most qualified, available agents. A single agent may receive multiple work items and be expected to multiplex between customers, handling work items presented on their console, using a blended agent approach.
Service agents are often able to multiplex—handling multiple requests for tasks that need to be completed. Each of the multiple work items that an agent may be working on simultaneously can be displayed in a separate tab, subtab or window in the agent's console. When multiplexing among multiple work tasks, it becomes important to be able to track the amount of time an agent actively spends on each of multiple requests displayed on their task-oriented tabs.
Tracking the length of time it takes an agent to close a work tab is no longer relevant to agent productivity. It is very challenging to know how productive agents are when they are working on many tasks at once.
An opportunity arises to improve the experience for customers and for workers using disclosed tracking of user engagement with an online application while the user is multi-tasking among assignments, including making it feasible for very large enterprise service operation centers to have improved operation insights for very large pools of agents.
The included drawings are for illustrative purposes and serve only to provide examples of possible structures and process operations for one or more implementations of this disclosure. These drawings in no way limit any changes in form and detail that may be made by one skilled in the art without departing from the spirit and scope of this disclosure. A more complete understanding of the subject matter may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
The following detailed description is made with reference to the figures. Sample implementations are described to illustrate the technology disclosed, not to limit its scope, which is defined by the claims. Those of ordinary skill in the art will recognize a variety of equivalent variations on the description that follows.
The tracking of user engagement with an online application while the user is multi-tasking among assignments can make organizations more efficient—tracking agents' work time from the time a task is requested, to work being pushed to the agent, to the task being fulfilled. Tasks are assigned a status. When a task is opened and accepted, the status is changed to “assigned”. When the work task is finished and the agent closes the tab, the status is changed to “closed”. Handle time refers to how long the agent had the work—a total elapsed time.
In an omni-channel environment in which as many as a hundred requests per second can be routed, service agents often respond to multiple requests, made during the same time period, for tasks that need to be completed. Separate browser panels in task-oriented tabs, subtabs or windows display each of the multiple work items in the agent console. A chat agent can often handle three different customers, by continuously bouncing among three different chat panels. When a user of the customer service system works simultaneously on multiple work items, multiplexing among assignments, it becomes important to be able to track the amount of time the agent actively spends on each of multiple requests displayed in their task-oriented tabs, subtabs or windows.
When an agent multi-tasks, the disclosed technology includes systems and methods to track how much time the agent is spending with a particular task tab open and in focus—so that administrators can track the time spent by an agent on a specific task. The focus indicates the component of the graphical user interface that is selected to receive input. Text entered at the keyboard or pasted from a clipboard is sent to the component which has the focus.
In one use case, an agent can multiplex the processing of multiple insurance claim requests, using a separate window in a console application for each insurance claim. In another example use case, a worker who handles mortgages can track time spent on each client's work. In yet another example, sales agents can track leads coming in that potentially lead to opportunities to close deals.
The disclosed technology tracks how much time an agent actively spends on each individual work item by tracking how long the tab is open and in-focus in the service console, and saves the active time, in seconds, on the agent work record in the customer's org. Agents log in to signal that they are ready to accept work. After login, work may be routed to the worker from a system queue, based on the agent's capacity and capabilities. After the agent accepts the work, either explicitly or implicitly in some system configurations, the disclosed technology begins to track the time the agent stays on the open tab. Each time the agent switches to a different tab, or back and forth, the time count stops for the previous tab and starts counting for the current tab. When the agent finally closes the work tab, the total active time spent on the related tab is saved along with the agent's work record. If an agent logs out, the active time is saved for all of their open work tabs. A subtab user interface element that is part of a tab section can also be used for tracking active time spent in some implementations.
This saved data gives useful insight to customers to know where labor time is being spent. Data also gets saved in browser local storage when the agent leaves the console—for example, when they browse to a different page or refresh the page—so that tracking of the agent's time on the task can continue, in situations in which the agent returns to the page on their console before their session times out.
The disclosed technology also includes preserving results of the tracking in a local persistent memory between updates from the user console to the online application, and the disclosed technology handles the graceful browser close scenario by sending active time data to the server before the browser closes. Recovering from a graceful browser session termination without logout includes detecting the session termination event, forwarding tracking results to a buffer as an update from the user console to the online application, and marking local persistent memory to indicate that tracking results have been forwarded to the online application
Recovery from an ungraceful browser session termination includes detecting restart of the user console, retrieving tracking results in the local persistent memory, and adding the retrieved tracking results to a buffer for transmission of an update from the user console to the online application.
In one implementation, a method of tracking user engagement with an online application while the user is multi-tasking among assignments includes causing display of a user console within a browser that interacts with an online application and supports agent interaction with multiple concurrent active assignments in separate panels within the user console; tracking interaction of the agent with respective assignments among the multiple concurrent active assignments within the user console by tracking which of the panels, if any, is currently active; and consolidating periods of agent interaction with the respective assignments, between assigning to and closing out the respective assignments.
An environment for tracking user engagement with an online application while the user is multi-tasking among assignments is described next.
An app server among the cluster of app servers 148 is elected to perform routing for a given org. That app server will make the routing decisions for the org. A system could have a single app server for a hundred different orgs. That is, a given app server can serve many orgs. Each org has one or more work queues for their organization's agent pool. Cluster/app support data store 116 gets updated when agents complete tasks, and signal completion by closing work, for their organizations—storing active time for agents for each task, among other data.
Environment 100, for tracking user engagement with an online application while the user is multi-tasking among assignments, makes use of multithreading to manage requests from more than one user at a time, and to manage multiple requests by the same user—tracking the presence and status of agents for multiple orgs. Current presence and status for each agent is stored in master agents' presence and status data store 118, and presence and status update events are published to event queue 113.
Environment 100 in
Per org routers 1-N 122 publish incoming service request events from the event queue 113 to at least one of the node-based routing queues 1-N 112. Additionally, routing broker environment 100 includes a master database of service requests 114 that provides a permanent record of events, enabling long-term event tracking and agent performance analysis.
In the case of lack of consistency between a particular routing decision and the master presence and status data store 118, a routing decision rollback event is published to the event queue 113, and the particular routing decision is not applied to the master presence and status data store 118. The node-based database—the in-memory presence and status database 118—gets updated to roll back the routing decision. That is, if unsuccessful, the state changes are rolled back and the work is made available for another routing attempt. For example, if an agent has gone offline during the routing of the request, then the system learns that the agent is not available when attempting to commit the route to the database, so the route will be rolled back as though it never happened and a new routing request will be generated. Declined and agent unavailable items go back to the queue. A new routing push attempt creates a new agent work record.
In other implementations, environment 100 may not have the same elements as those listed above and/or may have other/different elements instead of, or in addition to, those listed above.
The disclosed technology for tracking user engagement with an online application while the user is multi-tasking among assignments, described in detail below, tracks, stores and makes available user presence and agent work results, on a task by task basis, in a multi-tenant environment that handles a high volume of incoming work.
Continuing the description of
An agent can multi-task among assignments, which are each displayed in a panel in a browser window of the dashboard in a separate tab or window. Active time—how much time an agent actively spends on each individual work item—can be tracked by tracking the amount of time that the tab is open and in focus, and saving the active time in seconds in the agent work record in the customer's org. This active time data gives useful insight to an organization's customers for understanding where labor's time is being spent. On-focus events for console tabs are tracked to determine the active time.
In one implementation, an onFocusedPrimaryTab function registers an event handling function to call when the focus of the browser changes to a different primary tab. The event handler method gets called when the focus of the browser changes to a different primary tab. This method is asynchronous, so it returns its response in an object in a callback method. The response object contains a title field that contains a string that is the id of the primary tab on which the browser is focused and an objectId field that contains a string that represents the object ID of the primary tab on which the browser is focused or null if no object.
sforce.console.onFocusedPrimaryTab(eventHandler:Function)
The example ActiveTimeTracker is integrated with service desk events like onFocusedPrimaryTab, onFocusedSubtab, and onFocusedNavigatorPanel as listed next, registering onFocused events to tab navigator, to track active time.
Dashboard 312 in
From the moment an agent accepts a work, either automatically or explicitly, environment 100 starts tracking the time the agent stays on the tab. When the agent switches to a different tab, or back and forth between tabs, the environment stops counting time for their previous tab and starts counting for the current tab. When the agent finally closes the work tab, environment 100 saves the total active time spent on the related tab and saves it along with agent's record, and saving all active time for an agent when they log out, for all their open work tabs.
Data also gets saved in browser local storage when the agent leaves the console—for example, when they browse to a different page or refresh the page—so that tracking of the agent's time on the task can continue, in situations in which the agent returns to the page on their console before their session times out. The disclosed technology also includes preserving results of the tracking in a local persistent memory between updates from the user console to the online application, and handles the graceful browser close scenario by sending active time data to the server before the browser closes.
The agent work data record contains data about when the record was requested, assigned, accepted and closed by the agent. This information helps companies understand wait time—the accepted time minus the request time; average handle time (AHT)—the closed time minus the accepted time; and agent behavior for accepting and declining work. The disclosed technology includes tracking agents' presence statuses and agent work statuses, which are listed next. In another implementation of the disclosed technology the field names and data types can be different than the field names and data types listed below.
Event handling results for a service channel are stored in a database, to fulfill a requirement of many large organizations for recording permanent and highly available event logs that enable event tracking, agent activity tracking, and performance analysis.
At action 1010, causing display of a user console within a browser that interacts with an online application.
At action 1020, supporting interaction with multiple concurrent active assignments in separate panels within the user console.
At action 1030, tracking interaction of the agent with respective assignments among the multiple concurrent active assignments within the user control by tracking which of the panels, if any is currently active.
At action 1040, consolidating periods of agent interaction with the respective assignments between assigning to and closing out the respective assignments.
As used herein, a “tenant” or an “organization” refers to a group of one or more users that shares access to common subset of the data within the multi-tenant database 1130. In this regard, each tenant includes one or more users associated with, assigned to, or otherwise belonging to that respective tenant. Stated another way, each respective user within the multi-tenant system 1100 is associated with, assigned to, or otherwise belongs to a particular tenant of the plurality of tenants supported by the multi-tenant system 1100. Tenants may represent users, user departments, work or legal organizations, and/or any other entities that maintain data for particular sets of users within the multi-tenant system 1100. Although multiple tenants may share access to the server 1104 and the database 1130, the particular data and services provided from the server 1104 to each tenant can be securely isolated from those provided to other tenants. The multi-tenant architecture therefore allows different sets of users to share functionality and hardware resources without necessarily sharing any of the data 1132 belonging to or otherwise associated with other tenants.
The multi-tenant database 1130 is any sort of repository or other data storage system capable of storing and managing the data 1132 associated with any number of tenants. The database 1130 may be implemented using any type of conventional database server hardware. In various implementations, the database 1130 shares processing hardware with the server 1104. In other implementations, the database 1130 is implemented using separate physical and/or virtual database server hardware that communicates with the server 1104 to perform the various functions described herein. The multi-tenant database 1130 may alternatively be referred to herein as an on-demand database, in that the multi-tenant database 1130 provides (or is available to provide) data at run-time to on-demand virtual applications 1116 or 1118 generated by the application platform 1110, with tenant1 metadata 1112 and tenant2 metadata 1114 securely isolated.
In practice, the data 1132 may be organized and formatted in any manner to support the application platform 1110. In various implementations, conventional data relationships are established using any number of pivot tables 1113 that establish indexing, uniqueness, relationships between entities, and/or other aspects of conventional database organization as desired.
The server 1104 is implemented using one or more actual and/or virtual computing systems that collectively provide the dynamic application platform 1110 for generating the virtual applications. For example, the server 1104 may be implemented using a cluster of actual and/or virtual servers operating in conjunction with each other, typically in association with conventional network communications, cluster management, load balancing and other features as appropriate. The server 1104 operates with any sort of conventional processing hardware such as a processor 1136, memory 1138, input/output features 1134 and the like. The input/output devices 1134 generally represent the interface(s) to networks (e.g., to the network 1145, or any other local area, wide area or other network), mass storage, display devices, data entry devices and/or the like. User interface input devices 1134 can include a keyboard; pointing devices such as a mouse, trackball, touchpad, or graphics tablet; a scanner; a touch screen incorporated into the display; audio input devices such as voice recognition systems and microphones; and other types of input devices. In general, use of the term “input device” is intended to include possible types of devices and ways to input information into server 1104.
User interface output devices can include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem can include a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem can also provide a non-visual display such as audio output devices. In general, use of the term “output device” is intended to include all possible types of devices and ways to output information from processor 1136 to the user or to another machine or computer system.
The processor 1136 may be implemented using any suitable processing system, such as one or more processors, controllers, microprocessors, microcontrollers, processing cores and/or other computing resources spread across any number of distributed or integrated systems, including any number of “cloud-based” or other virtual systems. The memory 1138 represents any non-transitory short or long term storage or other computer-readable media capable of storing programming instructions for execution on the processor 1136, including any sort of random access memory (RAM), read only memory (ROM), flash memory, magnetic or optical mass storage, and/or the like. The computer-executable programming instructions, when read and executed by the server 1104 and/or processor 1136, cause the server 1104 and/or processor 1136 to create, generate, or otherwise facilitate the application platform 1110 and/or virtual applications 1116 and 1118, and perform one or more additional tasks, operations, functions, and/or processes described herein. It should be noted that the memory 1138 represents one suitable implementation of such computer-readable media, and alternatively or additionally, the server 1104 could receive and cooperate with external computer-readable media that is realized as a portable or mobile component or application platform, e.g., a portable hard drive, a USB flash drive, an optical disc, or the like.
The application platform 1110 is any sort of software application or other data processing engine that generates the virtual applications 1116 and 1118 that provide data and/or services to the client devices 1148 and 1158. In a typical implementation, the application platform 1110 gains access to processing resources, communications interfaces and other features of the processing hardware using any sort of conventional or proprietary operating system 1128. The virtual applications 1116 and 1118 are typically generated at run-time in response to input received from the client devices 1148 and 1158.
With continued reference to
In some implementations, network(s) 1145 can be any one or any combination of Local Area Network (LAN), Wide Area Network (WAN), WiMAX, Wi-Fi, telephone network, wireless network, point-to-point network, star network, token ring network, hub network, mesh network, peer-to-peer connections like Bluetooth, Near Field Communication (NFC), Z-Wave, ZigBee, or other appropriate configuration of data networks, including the Internet.
The foregoing description is merely illustrative in nature and is not intended to limit the implementations of the subject matter or the application and uses of such implementations. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the technical field, background, or the detailed description. As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations, and the exemplary implementations described herein are not intended to limit the scope or applicability of the subject matter in any way.
The technology disclosed can be implemented in the context of any computer-implemented system including a database system, a multi-tenant environment, or a relational database implementation like an ORACLE™ compatible database implementation, an IBM DB2 Enterprise Server compatible relational database implementation, a MySQL or PostgreSQL compatible relational database implementation or a Microsoft SQL Server compatible relational database implementation or a NoSQL non-relational database implementation such as a Vampire™ compatible non-relational database implementation, an Apache Cassandra™ compatible non-relational database implementation, a BigTable compatible non-relational database implementation or an HBase or DynamoDB compatible non-relational database implementation.
Moreover, the technology disclosed can be implemented using two or more separate and distinct computer-implemented systems that cooperate and communicate with one another. The technology disclosed can be implemented in numerous ways, including as a process, a method, an apparatus, a system, a device, a computer readable medium such as a computer readable storage medium that stores computer readable instructions or computer program code, or as a computer program product comprising a computer usable medium having a computer readable program code embodied therein.
In one implementation, a method disclosed for tracking user engagement with an online application while the user is multi-tasking among assignments, includes causing display of a user console within a browser that interacts with an online application and supports agent interaction with multiple concurrent active assignments in separate panels within the user console; tracking interaction of the agent with respective assignments among the multiple concurrent active assignments within the user console by tracking which of the panels, if any, is currently active; and consolidating periods of agent interaction with the respective assignments, between assigning to and closing out the respective assignments.
This method and other implementations of the technology disclosed can include one or more of the following features and/or features described in connection with additional methods disclosed. In the interest of conciseness, the combinations of features disclosed in this application are not individually enumerated and are not repeated with each base set of features. The reader will understand how features identified in this section can readily be combined with sets of base features that implement staging and deployment launch.
For some implementations the disclosed method includes causing display of multiple user panels on user consoles for multiple agents; tracking multiple agents' interaction with a respective assignment based on which of the multiple agents' panels are active; and consolidating the periods of agent interaction for a particular assignment, across agents and user consoles. The method can further include tracking the agent interaction with the respective assignments based on at least one of an active tab, active subtab or window. Also, the method can include tracking context of the agent interaction with data objects that implement the respective assignments.
The disclosed method further includes preserving results of the tracking in a local persistent memory between updates from the user console to the online application; and recovering from an ungraceful browser session termination by detecting restart of the user console, retrieving tracking results in the local persistent memory, and adding the retrieved tracking results to a buffer for transmission of an update from the user console to the online application. The disclosed method also includes recovering from a graceful browser session termination without logout by detecting a session termination event, forwarding tracking results to a buffer as an update from the user console to the online application, and marking local persistent memory to indicate that tracking results have been forwarded to the online application.
In some implementations, the method also includes tracking user interaction with computer resources outside a user console and outside the browser by querying an operating system under which the user console runs to obtain an identity of an application outside the browser, with which the user is interacting.
Also, the disclosed method includes causing display of a graphical representation, for one or more users, of a timeline of active tasks with graphical representations of overlapping active periods and durations of focus during the overlapping active periods.
Other implementations may include a computer implemented system of tracking user engagement with an online application while the user is multi-tasking among assignments in a large, distributed service center, including a processor, memory coupled to the processor, and computer instructions loaded into the memory that, when executed, cause the processor to implement a process that includes causing display of a user console within a browser that interacts with an online application and supports agent interaction with multiple concurrent active assignments in separate panels within the user console; tracking interaction of the agent with respective assignments among the multiple concurrent active assignments within the user console by tracking which of the panels, if any, is currently active; and consolidating periods of agent interaction with the respective assignments, between assigning to and closing out the respective assignments. Other implementations may include a computer implemented system to perform any of the methods described above, the system including a processor, memory coupled to the processor, and computer instructions loaded into the memory.
Yet another implementation may include a tangible computer readable storage medium including computer program instructions that cause a computer to implement any of the methods described above. The tangible computer readable storage medium does not include transitory signals.
While the technology disclosed is disclosed by reference to the preferred embodiments and examples detailed above, it is to be understood that these examples are intended in an illustrative rather than in a limiting sense. It is contemplated that modifications and combinations will readily occur to those skilled in the art, which modifications and combinations will be within the spirit of the innovation and the scope of the following claims.