Processor for analyzing heterogeneous data streams across multiple modes and multiple parties

A method including identifying an interaction between two parties, the interaction hosted by a remote server, is provided. The method includes identifying a first mode from a provider for the interaction by the two parties from multiple modes provided by the remote server, and obtaining, from the remote server, an identification for each of the parties, the identification being associated with the mode. The method includes identifying a duration of the interaction for each of the at least two parties and associating the interaction with an asynchronous interaction in a second communication mode from a second provider having a common identification with one of the parties. The method includes storing, in a database, a record of the interaction event that includes the first mode, the identification for each of the at least two parties, and the duration of the interaction for each of the at least two parties.

BACKGROUND

Field

The present disclosure generally relates to managing and extracting information from heterogeneous modes of business communication (e.g., “interactions”) across multiple platforms and multiple parties. More specifically, the present disclosure relates to devices and systems configured to generate metadata associated with said interactions.

Description of the Related Art

Current solutions for generating metadata associated with business communication between two or more participants in an organization are specialized to the mode of communication used by the participants. For interaction events taking place over two or more modes of communication (e.g., voice, video, chat, and the like), it is customary to request access and permission to the different hosts of the communication platforms for storing and analyzing the related data. In addition, different communication platforms follow different protocols that may be incompatible in certain scenarios, thereby causing loss of data, and extra data manipulation and processing time.

SUMMARY

In one embodiment of the present disclosure, a computer-implemented method is described for identifying an interaction event between at least two parties, the interaction event hosted by a remote server. The computer-implemented method also includes identifying a first communication mode from a first communication mode provider selected for the interaction event by the at least two parties from multiple communication modes provided by the remote server, and obtaining, from the remote server, an identification for each of the at least two parties, the identification being associated with the first communication mode. The computer-implemented method also includes identifying a duration of the interaction event for each of the at least two parties and associating the interaction event with an asynchronous interaction event in a second communication mode from a second communication mode provider having a common identification with one of the at least two parties, the asynchronous interaction event stored in an entry of a database. The computer-implemented method also includes storing, in the entry of the database, a record of the interaction event that includes the first communication mode, the identification for each of the at least two parties, and the duration of the interaction event for each of the at least two parties and providing access to at least a portion of the database selected by an authorized user other than the at least two parties.

According to one embodiment, a system is described that includes one or more processors and a memory coupled to the one or more processors, the memory including instructions that, when executed by the one or more processors, cause the one or more processors to identify an interaction event between at least two parties, the interaction event hosted by a remote server. The one or more processors further execute instructions to identify a first communication mode from a first communication mode provider selected for the interaction event by the at least two parties from multiple communication modes provided by the remote server, to obtain, from the remote server, an identification for each of the at least two parties, the identification being associated with the first communication mode, and to identify a duration of the interaction event for each of the at least two parties. The one or more processors further execute instructions to associate the interaction event with an asynchronous interaction event in a second communication mode from a second communication mode provider having a common identification with one of the at least two parties, the asynchronous interaction event stored in an entry of a database. The one or more processors also execute instructions to store, in the entry of the database, a record of the interaction event that includes the first communication mode, the identification for each of the at least two parties, and the duration of the interaction event for each of the at least two parties. The one or more processors also execute instructions to correlate the identification for each of the at least two parties with a second identification for one of the at least two parties based on a second communication mode hosted by the remote serve and to provide access to at least a portion of the database selected by an authorized user other than the at least two parties r.

According to one embodiment, a non-transitory, machine readable medium is described that includes instructions, which when executed by one or more processors, cause a computer to perform a method. The method includes identifying an interaction event between at least two parties, the interaction event hosted by a remote server, and identifying a first communication mode from a first communication mode provider selected for the interaction event by the at least two parties from multiple communication modes provided by the remote server. The method also includes obtaining, from the remote server, an identification for each of the at least two parties, the identification being associated with the first communication mode, identifying a duration of the interaction event for each of the at least two parties and associating the interaction event with an asynchronous interaction event in a second communication mode from a second communication mode provider having a common identification with one of the at least two parties, the asynchronous interaction event stored in an entry of a database. The method also includes storing, in the entry of the database, a record of the interaction event that includes the first communication mode, the identification for each of the at least two parties, and the duration of the interaction event for each of the at least two parties. The method also includes correlating the identification for each of the at least two parties with a second identification for one of the at least two parties based on a second communication mode hosted by the remote server. The method also includes correlating the identification for each of the at least two parties with a second identification for one of the at least two parties based on a second communication mode hosted by the remote server.

In yet another embodiment, a system is described that includes a means for storing commands and a means for executing the commands causing the system to perform a method including identifying an interaction event between at least two parties, the interaction event hosted by a remote server, and identifying a first communication mode from a first communication mode provider selected for the interaction event by the at least two parties from multiple communication modes provided by the remote server. The method also includes obtaining, from the remote server, an identification for each of the at least two parties, the identification being associated with the first communication mode, identifying a duration of the interaction event for each of the at least two parties and associating the interaction event with an asynchronous interaction event in a second communication mode from a second communication mode provider having a common identification with one of the at least two parties, the asynchronous interaction event stored in an entry of a database. The method also includes storing, in the entry of the database, a record of the interaction event that includes the communication mode, the identification for each of the at least two parties, and the duration of the interaction event for each of the at least two parties. The method also includes correlating the identification for each of the at least two parties with a second identification for one of the at least two parties based on a second communication mode hosted by the remote server, and correlating the identification for each of the at least two parties with a second identification for one of the at least two parties based on a second communication mode hosted by the remote server.

In the figures, elements and steps denoted by the same or similar reference numerals are associated with the same or similar elements and steps, unless indicated otherwise.

DETAILED DESCRIPTION

General Overview

Business communication leverages a broad range of communication modes: voice calls, meetings, email, messages, etc. Each of these different modes can be broken down further into different scenarios: one-to-one messaging vs. group messaging, video meetings vs. conference calls, attended transfers and call-centers, etc. And each of these scenarios typically involves2-N parties.

Typically, these different types of interactions are described using different models, specific to the requirements of a given communication mode. Embodiments as disclosed herein include an analysis platform with shared interaction, participant, and content models that can be used to describe metadata for multiple business communication modes/scenarios (e.g., telephonic, video conferencing, chatroom, and the like).

Embodiments as disclosed herein allow for multi-tenant data access and isolation for processing. In some embodiments, an interaction model considers interactions spanning multiple accounts, resulting in a compartmentalized view of interactions specific to a particular customer.

Embodiments as disclosed herein include methods for processing and analyzing heterogeneous streams of business communications data across multiple customers/accounts in real time. Working with voice, meeting, messaging and email data, some embodiments transform multi-partite interactions into a common interaction/participant model encompassing all modes of business communication. This metadata is then used to create a single, complete view of actual communications activity and patterns across organizations, departments, or individual users.

Data structures used to handle heterogeneous data streams across multiple modes, as disclosed herein, may include interactions that can vary in type, and modes. Instantaneous modes include messaging and email, while other modes are durational, such as calls and meetings. Interactions are also associated with a given account, which allows for account-specific data access when necessary.

In some embodiments, a data structure for an interaction event between at least two parties may include a record, an interaction identifier, and a type of interaction (e.g., voice, meeting, message, email, and the like). In some embodiments, a type of interaction, e.g., a video conference, may include more than one content bundle (e.g., a video recording and a message text, which may further include a chat history). A data structure may also include an account number, associated with at least one of the two parties, and a start time value that indicates the date/time in which an interaction was initiated. The data structure may also include an end time value that indicates the date/time in which an interaction was completed, a participant value that indicates a list of parties involved in the interaction, and a content value including pointers (e.g., a link to one or more content bundles created as part of the interaction). In some embodiments, content bundles can include a voice recording, a video recording, a shared content such as a message text, and the like.

In some embodiments, an interaction event with heterogeneous data streams across multiple modes may include participant objects such as an internal flag that indicates if the participant is associated with the interaction account. A type, indicating whether the party is a person, a resource (e.g., conference room), a service (e.g., front desk), or anonymous. Other participant objects may include a unique participant identifier, a sequence indicating an order in which a participant is involved in the interaction, and a role that describes how the participant is involved in the interaction (e.g., Caller, Host, Participant, Recipient, and the like). The participant objects may also include a duration that indicates which portion of a non-instantaneous interaction (e.g., a meeting or a call) a participant was involved in. In some embodiments, the duration is based on the difference between a “connection time” value and a “disconnection time” value for the specific participant. The “connection time” value describes when the individual participant joins the interaction event. The “disconnection time” value describes when the individual participant exits the interaction event. The participant objects may also include a result that describes the outcome of a given interaction (e.g., Connected, Answered, Transferred, Voice Mail, and the like).

The disclosed system addresses the problem of storing and managing heterogeneous data streams, specifically arising in the realm of computer and network technology by providing a solution also rooted in computer technology, namely, by considering a centralized data collection system that generates data structures having pointers and definitions that address the multiple communication modes used in the heterogeneous data streams.

Example System Architecture

FIG. 1illustrates an example architecture100, suitable to provide a mode for a collaborative communication event, according to some embodiments. Architecture100includes servers130and client devices110connected over a network150. One of the many servers130is configured to host a memory including instructions which, when executed by a processor, cause server130to perform at least some of the steps in methods as disclosed herein. In some embodiments, the processor in server130is configured to host a collaborative communication event that a participant may access through client device110. Further, in some embodiments, the processor in server130is configured to provide documents including images, videos, and text messaging services to a participant in a collaborative communication event through client device110. In some embodiments, the documents provided by server130to one or more parties may include an application-based document (e.g., a text-rich document such as a Word document, a PDF document, or any other document accessible through a text editing application, including a computer code sequence, and the like), a spreadsheet document (e.g., Excel and the like), a presentation document (e.g., PowerPoint and the like), an XML file, an HTML file, a multi-media file such as a video, audio, or image file, or any combination of the above. Information related to, and instructions to handle the collaborative communication event may be stored in a communications engine242, accessible by a participant through a client device110(e.g., accessible through a web page or an application222running on client device110). Servers130can return images, documents, rich-text documents, and the like intended for a shared use and modification by multiple parties in a collaborative communication event. For purposes of load balancing, multiple servers130can host memories, including instructions to one or more processors and multiple servers130for hosting one or more collaborative communication events as disclosed herein.

Servers130may include any device having an appropriate processor, memory, and communications capability for hosting the documents and applications associated with communications engine242. Communications engine242may be accessible by multiple parties through various client devices110over the network150. Client devices110can be, for example, desktop computers, mobile computers, tablet computers (e.g., including e-book readers), mobile devices (e.g., a smartphone or PDA), or any other devices having appropriate processor, memory, and communications capabilities for accessing communications engine242on one of servers130. Network150can include, for example, any one or more of a local area network (LAN), a wide area network (WAN), the Internet, and the like. Further, network150can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, and the like.

In some embodiments, at least one of servers130is an analysis platform that processes data directly from other servers130in the systems, without directly communicating with client devices110.

FIG. 2is a block diagram200illustrating an example server130and client device110in the architecture100ofFIG. 1, according to certain aspects of the disclosure. Client device110and server130are communicatively coupled over network150via respective communications modules218and238. Communications modules218and238are configured to interface with network150to send and receive information, such as data, requests, responses, and commands to other devices on the network. Communications modules218and238can be, for example, modems or Ethernet cards.

Client device110may be any one of a desktop computer, a laptop, or a mobile computing device. Client device110may include a processor212and a memory220. An input device214and an output device216enable the user to interact with client device110. Examples of input device214and output device216may include a mouse, a keyboard, a display, a touch-interactive display, and the like.

Server130includes a memory232, a processor236, and communications module238. The user interface is displayed for the user in an output device216of client device110. Memory232includes a communications engine242. Communications engine242includes instructions which, when executed by processor236, cause server130to perform at least partially steps as disclosed herein. For example, communications engine242includes instructions to communicate with application222to incorporate the user of client device110into a collaborative communication event as disclosed herein. Communications engine242may also include instructions to store a history log and other data related to a collaborative communication event as disclosed herein into a database252. Furthermore, in some embodiments, communications engine242may include instructions to retrieve at least some of the data in database252and provide to one or more parties in a collaborative communication event as disclosed herein. In some embodiments, database252may be internal to server130, and in some embodiments, database252may be external and communicatively coupled to server130.

In some embodiments, server130is an analysis platform, including a cluster of servers that receive data from communications engine242and store interaction information in database252.

In some embodiments, communications engine242stores data in, and maintains for a selected period of time, database252. Further, communications engine242updates different changes and modifications on a document or file discussed during the collaborative communication event, as part of a chat/topic history, as stored in database252. In some embodiments, the activity, notes, and other actions taken by different parties over a document or any other topic item are displayed around the item, showing the specific participant that has participated in the activity. As mentioned above, the document stored by server130in database252may include an application-based document (e.g., a text-rich document such as a Word document, a PDF document, or any other document accessible through a text editing application, including a computer code sequence, and the like), a spreadsheet document (e.g., Excel and the like), a presentation document (e.g., PowerPoint and the like), an XML file, an HTML file, or a multi-media file such as a video, audio, image file, or any combination of the above.

The user may access communications engine242through application222, installed in memory220of client device110. The user may also access communications engine242via a web browser installed in client device110. Execution of application222may be controlled by a processor212in client device110. In some embodiments, application222is downloaded and installed by the user into client device110, from server130.

Processor236is configured to execute instructions, such as instructions physically coded into processor236, instructions received from software in memory232, or a combination of both. A user of client device110may use input device214to submit a document or a media file to communications engine242via a user interface of application222. The document submitted by the user may include an application-based document (e.g., a text-rich document such as a Word document, a PDF document, or any other document accessible through a text editing application, including a computer code sequence, and the like), a spreadsheet document (e.g., Excel and the like), a presentation document (e.g., PowerPoint and the like), an XML file, an HTML file, or a multi-media file such as a video, audio, image file, or any combination of the above.

FIGS. 3A-Billustrate data structures used to handle heterogeneous data streams across multiple modes, according to some embodiments. Interactions can vary in type, and modes such as messaging and email are instantaneous, while other modes, such as calls and meetings, have a duration. Interactions are also associated with a given account, which allows for account-specific data access when necessary. In the case of interactions spanning more than a single account, separate interaction objects are created, one for each account involved. Finally, all interactions are comprised of two or more parties' objects, and zero to many content objects.

FIG. 3Aillustrates a record301in a data structure300for an interaction event between at least two parties over one of multiple modes, according to some embodiments. An interaction ID302is an interaction identifier. A type304describes the type of interaction. Potential values for type304include voice, meeting, message, email, and the like. An account number306indicates an account associated with interaction ID302. In some embodiments, the same interaction ID302may be combined with multiple account numbers306. For example, for cross-account interactions involving N different accounts in the same interaction event, there will be N copies of the same interaction ID302, each copy associated with a different account number306.

A start time value308indicates the date/time in which an interaction was initiated. An end time value310indicates the date/time in which an interaction was completed. A participant value312indicates a list of parties involved in the interaction. A content value314includes pointers315-1,315-2, and315-3(hereinafter, collectively referred to as “pointers315”), to block320. More specifically, pointers315may provide a link to one or more content bundles323,325, and327created as part of the interaction, and including relevant interaction event content, in block320. In some embodiments, content bundles can include a voice recording323, a video recording325, a shared content such as a message text327, and the like. In some embodiments, a type of interaction, e.g., a video conference, may include more than one content bundle (e.g., a video recording325and a message text327, which may further include a chat history).

Pointers315in content314may include a ‘type’ portion, to indicate the type of content (e.g., voice recording, video recording, shared files, message content, and the like), and a ‘location’ portion, indicating a location for the raw content (e.g., a location within database252).

FIG. 3Billustrates participant objects350in an interaction event with heterogeneous data streams across multiple modes, according to some embodiments. An internal flag352indicates if the participant is associated with the interaction account. A type354indicates whether the party is a person, a resource (e.g., conference room), a service (e.g., front desk), or anonymous. In some embodiments, type354may include values such as “Person,” “Resource,” “Service,” or “Anonymous.” A unique identifier356is a unique participant identifier and may take different formats, including: user ID, DIDs, email addresses, and the like. A sequence358may indicate an order in which a participant is involved in the interaction (e.g., a second participant forwarding a call to a third participant, and the like). In some embodiments, values of sequence358are used with Voice type of interactions (e.g., audio, video). A role360describes how the participant is involved in the interaction (e.g., Caller, Host, Participant, Recipient, and the like). A duration362indicates which portion of a non-instantaneous interaction (e.g., a meeting or a call) a participant was involved in. In some embodiments, duration362is based on the difference between a “connection time” value and a “disconnection time” value for the specific participant. The “connection time” value describes when the individual participant joins the interaction event. The “disconnection time” value describes when the individual participant exits the interaction event. A result364describes the outcome of a given interaction (e.g., Connected, Answered, Transferred, Voice Mail, and the like).

Note that participant objects are also relative to the account associated with a particular interaction. Accordingly, for an interaction that spans multiple accounts, unique interaction objects are created for each account. For example, if user A from account A calls user B from account B, then separate interaction records will be created for account A and account B. And within those records, the participant user A will be described differently, i.e., for the account A interaction record, user A will be identified as type=internal, but for the account B interaction record, user A may be type=external or type=anonymous.

FIG. 4is a flowchart illustrating steps in a method400to form a data structure for analyzing records of interaction events over multiple communication modes, according to some embodiments. In some embodiments, a processor may execute commands stored in a memory, such that the processor, when executing the commands, causes a computer to perform at least partially some of the steps in method400. The computer, the processor, and the memory may include a client device or a network server, communicably coupled via a network, as disclosed herein (e.g., client device110, server130, processors212and236, memories220and232, and network150). In some embodiments, the server may include in the memory a communications engine and a database (e.g., communications engine242, database252). The communications engine may perform at least partially some of the steps in method400, in collaboration with the database. Further, in some embodiments, the server may be communicatively coupled with an application installed in the memory of the client device, via a communications module, through the network (e.g., application222and communications modules218and238). The application may be configured to handle the interaction event between multiple users with multiple client devices.

Methods consistent with the present disclosure may include one or more of the steps in method400performed in a different order. For example, in some embodiments consistent with the present disclosure, a method may include at least some of the steps in method400performed overlapping in time, almost simultaneously, or simultaneously.

Step402includes identifying an interaction event between at least two parties, the interaction event hosted by a remote server.

Step404includes identifying a first communication mode from a first communication mode provider selected for the interaction event by the at least two parties from multiple communication modes provided by the remote server. In some embodiments, step404includes identifying two communication modes selected for the interaction event, the two communication modes being hosted by the remote server.

Step406includes obtaining, from the remote server, an identification for each of the at least two parties, the identification being associated with the first communication mode. In some embodiments, step406includes correlating the identification for each of the at least two parties with a second identification for one of the at least two parties based on a second communication mode hosted by the remote server. In some embodiments, one of the at least two parties switches to a second communication mode during the interaction event, and step406includes obtaining a second identification for the one of the at least two parties, the second identification being associated with the second communication mode, and storing the second identification for the one of the at least two parties in the record of the interaction event.

Step408includes identifying a duration of the interaction event for each of the at least two parties.

Step410includes associating the interaction event with an asynchronous interaction event in a second communication mode from a second communication mode provider having a common identification with one of the at least two parties, the asynchronous interaction event stored in an entry of a database. For example, in some embodiments the first communication mode may include two users communicating with each other via a telephonic line, regarding certain project. Accordingly, step410may include associating an e-mail exchange between the same (or different) two users, at a later time, in relation with the same project.

Step412includes storing, in the entry of the database, a record of the interaction event that includes the first communication mode, the identification for each of the at least two parties, and the duration of the interaction event for each of the at least two parties. In the above example, step412may include storing metadata associated with the telephonic conversation between the first two users in the same memory registry as metadata associated with the e-mail exchange between the same (or different) two users. In some embodiments, step412includes adding, to the record of the interaction event, a pointer to data content, the data content including at least one of a voice recording, a video recording, a message text, or a chat history. In some embodiments, step412includes storing a result of the interaction event in the record of the interaction event.

Step414includes aggregating a value over multiple records of multiple interaction events over at least two communication modes in the database. In some embodiments, step414includes aggregating the value over a period of time, displaying the value in a graphic to illustrate a business trend, and illustrating a communication mode usage trend associated with the multiple interaction events over the period of time. In some embodiments, step414includes aggregating asynchronous information associated with the interaction event. In some embodiments, step414includes determining an indicator value by accessing at least some information in the record of the interaction event and aggregating the at least some information over multiple records in the database to obtain an indicator with a machine learning algorithm.

Step416includes displaying the value in a graphic to illustrate a business trend associated with the multiple interaction events. A business trend may include, for example, a probability of increased contract closures by the end of the month, or an increase in complaints regarding a certain line of products, which may indicate a future loss of revenue. In some embodiments, e.g., associated with the healthcare industry, a business trend may indicate the emergence of an endemic disease, an outbreak of a health crisis, or a potential increase/decrease and shortage/surplus of vaccination doses. In some embodiments, step416includes receiving, from a user, a selection of a portion of the graphic, and providing, to the user, additional details regarding interaction events represented by the portion of the graphic.

Hardware Overview

FIG. 5is a block diagram illustrating an exemplary computer system500with which the client device110and server130ofFIGS. 1 and 2, and the methods ofFIG. 4can be implemented. In certain aspects, the computer system500may be implemented using hardware or a combination of software and hardware, either in a dedicated server, or integrated into another entity, or distributed across multiple entities.

Computer system500(e.g., client device110and server130) includes a bus508or other communication mechanism for communicating information, and a processor502(e.g., processors212and236) coupled with bus508for processing information. By way of example, the computer system500may be implemented with one or more processors502. Processor502may be a general-purpose microprocessor, a microcontroller, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable entity that can perform calculations or other manipulations of information.

Computer system500can include, in addition to hardware, a code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them stored in an included memory504(e.g., memories220and232), such as a Random Access Memory (RAM), a flash memory, a Read Only Memory (ROM), a Programmable Read-Only Memory (PROM), an Erasable PROM (EPROM), registers, a hard disk, a removable disk, a CD-ROM, a DVD, or any other suitable storage device, coupled to bus508for storing information and instructions to be executed by processor502. The processor502and the memory504can be supplemented by, or incorporated in, a special purpose logic circuitry.

Computer system500further includes a data storage device506, such as a magnetic disk or optical disk, coupled to bus508for storing information and instructions. Computer system500may be coupled via input/output module510to various devices. Input/output module510can be any input/output module. Exemplary input/output modules510include data ports such as USB ports. The input/output module510is configured to connect to a communications module512. Exemplary communications modules512(e.g., communications modules218and238) include networking interface cards, such as Ethernet cards and modems. In certain aspects, input/output module510is configured to connect to a plurality of devices, such as an input device514(e.g., input device214) and/or an output device516(e.g., output device216). Exemplary input devices514include a keyboard and a pointing device, e.g., a mouse or a trackball, by which a user can provide input to the computer system500. Other kinds of input devices514can be used to provide for interaction with a user as well, such as a tactile input device, visual input device, audio input device, or brain-computer interface device. For example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, tactile, or brain wave input. Exemplary output devices516include display devices, such as an LCD (liquid crystal display) monitor, for displaying information to the user.

According to one aspect of the present disclosure, the client device110and server130can be implemented using a computer system500in response to processor502executing one or more sequences of one or more instructions contained in memory504. Such instructions may be read into memory504from another machine-readable medium, such as data storage device506. Execution of the sequences of instructions contained in main memory504causes processor502to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in memory504. In alternative aspects, hard-wired circuitry may be used in place of or in combination with software instructions to implement various aspects of the present disclosure. Thus, aspects of the present disclosure are not limited to any specific combination of hardware circuitry and software.