Unified communication (UC) services include communication services (e.g., e-mail services, instant messaging services, voice communication services, video conference services, and the like) and UC data management and analysis services. UC platforms allow users to communicate over internal networks (e.g., corporate networks) and external networks (e.g., the Internet). This opens communication capabilities not only to users available at their desks, but also to users who are on the road and even to users from different organizations. With such solutions, end users are freed from limitations of previous forms of communication, which can result in quicker and more efficient business processes and decision making.
However, the quality of communications in such platforms can be affected by a variety of problems, including software failures, hardware failures, configuration problems (e.g., system-wide or within components, such as firewalls and load balancers), and network performance problems. The potential impacts of these and other problems include immediate impact upon end users (both internal and roaming) as well as inefficient use of resources.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
In one aspect, a computing device automatically detects technical conditions for calls, such as voice calls, in a communication system. The technical conditions include transport type (e.g., TCP, UDP), connection type (e.g., wired, wireless local area network, mobile/cellular), packet loss, latency, and jitter. The computing device performs automatic analysis of the detected technical conditions. The automatic analysis may include comparing the detected transport type with a preferred transport type (e.g., a non-TCP transport, such as UDP), comparing the detected connection type with a preferred connection type (e.g., wired), or comparing packet loss, latency, or jitter with corresponding threshold values (e.g., maximum values or average values). The computing device automatically generates output related to one or more of the detected technical conditions based at least in part on the automatic analysis. The computing device causes the output is displayed (e.g., in a user interface of a help desk application), either at the computing device that performs the process, or at some other location.
The detected technical conditions may further include access type (e.g., VPN or non-VPN), stream quality, and devices used during the calls (e.g., capture or rendering devices, such as headsets). The output may be triggered, for example, where the detected transport type is TCP. As another example, the output may be triggered by calls made via a wireless access point (or a wired connection outside an enterprise) where packet loss, latency, or jitter exceeds its corresponding threshold value.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
The detailed description set forth below in connection with the appended drawings where like numerals reference like elements is intended as a description of various embodiments of the disclosed subject matter and is not intended to represent the only embodiments. Each embodiment described in this disclosure is provided merely as an example or illustration and should not be construed as preferred or advantageous over other embodiments. The illustrative examples provided herein are not intended to be exhaustive or to limit the claimed subject matter to the precise forms disclosed.
In the following description, numerous specific details are set forth in order to provide a thorough understanding of illustrative embodiments of the present disclosure. It will be apparent to one skilled in the art, however, that many embodiments of the present disclosure may be practiced without some or all of the specific details. In some instances, well-known process steps have not been described in detail in order not to unnecessarily obscure various aspects of the present disclosure. Further, it will be appreciated that embodiments of the present disclosure may employ any combination of features described herein.
The present disclosure includes descriptions of various aspects of unified communication (UC) systems, such as UC management and analysis systems, and related tools and techniques. In general, UC systems (including UC systems based on Skype® For Business or Lync® platforms available from Microsoft Corporation, or other UC systems) provide UC services. UC services may include communication services (e.g., e-mail services, instant messaging services, voice communication services, video conference services, and the like) and UC data management and analysis services, or other services.
In the example shown in
In the example shown in
The UC client engine 214 is configured to process input and generate output related to UC services and content (e.g., services and content provided by the server 206). The UC client engine 214 also is configured to cause output device(s) 210 to provide output and to process input from input device(s) 212 related to UC services. For example, input device(s) 212 can be used to provide input (e.g., text input, video input, audio input, or other input) that can be used to participate in UC services (e.g., instant messages (IMs), voice calls, video calls), and output device(s) 210 (e.g., speakers, a display) can be used to provide output (e.g., graphics, text, video, audio) corresponding to UC services.
In the example shown in
The UC administrator engine 234 is configured to receive, send, and process information relating to UC services. The UC administrator engine 234 is configured to cause output device(s) 230 to provide output and to process input from input device(s) 232 related to UC services. For example, input device(s) 232 can be used to provide input for administering or participating in UC services, and output device(s) 230 can be used to provide output corresponding to UC services.
The UC client engine 214 and/or the UC administrator engine 234 can be implemented as a custom desktop application or mobile application, such as an application that is specially configured for using or administering UC services. Alternatively, the UC client engine 214 and/or the UC administrator engine 234 can be implemented in whole or in part by an appropriately configured browser, such as the Internet Explorer® browser by Microsoft Corporation, the Firefox® browser by the Mozilla Foundation, and/or the like. Configuration of a browser may include browser plug-ins or other modules that facilitate instant messaging, recording and viewing video, or other functionality that relates to UC services.
In any of the described examples, an “engine” may include computer program code configured to cause one or more computing device(s) to perform actions described herein as being associated with the engine. For example, a computing device can be specifically programmed to perform the actions by having installed therein a tangible computer-readable medium having computer-executable instructions stored thereon that, when executed by one or more processors of the computing device, cause the computing device to perform the actions. An exemplary computing device is described further below with reference to
In any of the described examples, a “data store” contains data as described herein and may be hosted, for example, by a database management system (DBMS) to allow a high level of data throughput between the data store and other components of a described system. The DBMS may also allow the data store to be reliably backed up and to maintain a high level of availability. For example, a data store may be accessed by other system components via a network, such as a private network in the vicinity of the system, a secured transmission channel over the public Internet, a combination of private and public networks, and the like. Instead of or in addition to a DBMS, a data store may include structured data stored as files in a traditional file system. Data stores may reside on computing devices that are part of or separate from components of systems described herein. Separate data stores may be combined into a single data store, or a single data store may be split into two or more separate data stores.
Maintaining acceptable audio quality requires an understanding of UC system infrastructure and proper functioning of the network, communication devices, and other components. An administrator will often need to be able to quantifiably track overall voice quality in order to confirm improvements and identify areas of potential difficulty (or “hot spots”) that require further effort to resolve. There may be a hierarchy of issues, ranging from network issues (typically being both common and important to fix), to issues that are specific to local users (such as whether local users are using non-optimal devices), to issues that are specific to remote users, over which an administrator may have little control. Such issues may affect other forms of communication as well, such as video calls.
In order to isolate a grouping of calls with poor voice quality, it is important to have consistent and meaningful classification of calls. For example, wireless calls which have poor voice quality are important to group together to identify common patterns (e.g., whether the calls involve the same user) and to take appropriate action (e.g., educate the user to not use wireless, or upgrade the wireless infrastructure).
Additionally, some problems may have more impact on voice quality than others, even within the same call. For example, a user who is using a wireless connection and is roaming outside the user's usual network may be calling another user who is on the corporate network using a wired connection. In this case, the overall experience may be impacted by the first user's wireless connection. An analysis of the conditions at the two endpoints can be conducted to determine which endpoint is more likely to impact a call and highlight one or more items to consider addressing (e.g., by encouraging a user to switch from a wireless connection to a wired connection for the next call).
Classification of calls with certain general common characteristics may be helpful at some level for understanding voice quality issues. However, further classification may be needed for better understanding of a problem. The further classification may include any of several factors, including geography (users, infrastructure, etc.), time, specific site, etc. Regarding time, classification and analysis at different levels of time granularity (e.g., weekly, monthly, daily) may be used, and may allow for a corresponding ability to view trends over time (e.g., week-to-week, month-to-month, year-to-year). Not all classifications or geographies with poor audio quality will require the same level of attention. For example, a geography that is having 1 poor call out of 10 is likely worth investing more time in than one with 1 poor call out of 100.
The definition of a poor call can be provided by a UC platform, by an enterprise that uses the UC platform, or in some other way. The definition of a poor call may differ between platforms or enterprises, but it includes specific criteria for consistent classification of calls for the particular platform or enterprise.
In at least one embodiment, a poor call is defined as a call with one or more call quality metrics (e.g., degradation, latency, packet loss, jitter, or other metrics) that are outside a predefined value range. Metrics that can lead to a call being classified as poor in an illustrative UC platform are shown in Table 1, below, along with illustrative threshold values.
The particular metrics used to classify a call as poor, as well as the threshold values for such metrics, can vary depending on implementation and may be adjustable, as well, based on specific requirements or preferences. The metrics used to classify a call as poor may be detected by a UC system itself, or by monitoring software deployed in combination with a UC system.
A threshold for an acceptable amount of poor calls also can be provided by a UC platform, by an enterprise, or in some other way. As an example, 2% may be set as a threshold percentage (or maximum acceptable percentage) of poor calls. Other lower or higher threshold percentages also may be used. Such thresholds may be set by default and may be modified if desired.
In this section, various examples of features that may be included in a system for automated detection and analysis of call conditions in a communication system (e.g., a UC system) are described. Referring again to
The automated call condition detection and analysis system can be described as having an automated detection subsystem and an automated analysis subsystem. The detection subsystem automatically detects technical conditions related to communications, such as voice calls in a UC system. These automatically detected conditions are provided as input to the automated analysis subsystem, which uses technical condition analysis engine to process the input and automatically generate output (e.g., messages or guidance for display) based on the analysis.
In examples described herein, the automated call condition detection and analysis system provides technical solutions to technical problems that are specific to communication system technology. For example, a UC system typically provides more than one way to engage in any particular type of electronic communication, such as a voice call, and each of those ways may have different effects on communication quality. This leads to a wide range of possible communication scenarios and related quality issues that are unique to UC system technology. A user will often not know even the most basic technical details of his communication method. In such situations, it is impossible for the user to diagnose or resolve communication quality issues on his own, or to accurately relate all the technical details that may affect communication quality to a technician. Similarly, without accurate information, it is impossible for the technician to give accurate guidance on how to improve communication quality.
Embodiments described herein overcome these and other technical problems by automatically detecting technical conditions of UC communications and automatically generating output (e.g., to a user interface) based on the detected conditions that allows the technical conditions to be adjusted (e.g., by an end user, technician, or administrator) such that voice quality issues and other issues can be efficiently resolved. As an example, in the context of a voice call, an automated detection subsystem may automatically detect technical conditions for the voice call including transport type (e.g., Transmission Control Protocol (TCP) or User Datagram Protocol (UDP)), connection type (e.g., wireless local area network, wired, or mobile/cellular connection), packet loss, latency, jitter, and input device (e.g., headset or microphone) model. These automatically detected conditions are provided as input to the automated analysis subsystem, which uses a technical condition analysis engine to process the input and automatically generate output (e.g., for display via a user interface).
Consider the following illustrative scenario: during a voice call, the automated detection subsystem automatically detects transport type as TCP and connection type as wireless, and also automatically detects packet loss rate (e.g., 0.3 (30%)), latency (e.g., 300 ms), and jitter (e.g., 45 ms) values. The automated detection subsystem provides this information to the automated analysis subsystem, which uses a technical condition analysis engine to process the input and automatically generate output (e.g., for display via a user interface). In this example, the output indicates multiple actions that a user or administrator can take in this situation, including the following:
1. Advise the user to switch to a wired connection and avoid a wireless connection while placing or receiving a UC call.
2. Advise a system administrator to check one or more configuration parameters on one or more UC system servers.
3. Advise the user to use a supported device (e.g., headset) while placing or receiving a UC call.
In this example, a technical condition analysis engine is described that can be used to automatically select and provide prescriptive guidance to users (e.g., IT/help desk personnel or end users) based on available UC system data to help diagnose and/or resolve UC system issues, such as poor voice quality issues. The result of the application of such an engine can be presented in a user interface, such as in the form of a help desk or technical support page or dedicated application.
In at least one embodiment, the following data points represent technical conditions for calls in the technical condition analysis engine, as shown in
In at least one embodiment, the value of Network.StreamQuality is determined as follows for audio calls. In this example, stream quality for a call is classified as Bad or Poor if any of the respective thresholds are exceeded, and if none are exceeded, the call is classified as Good.
The thresholds for classifying stream quality shown in Table 2 are only examples and may be replaced with other thresholds or combinations of threshold, depending on implementation.
In the example shown in
For wired connections outside the enterprise (Access.Inside=False), Guidance 6 may be displayed with high priority if the stream quality is Poor or Bad and Network.AvgPacketLoss, Network.AvgRoundTrip, or Network.AvgJitter is greater than the thresholds depicted in the Wired column in
In at least one embodiment, the following illustrative prescriptive guidance can be provided via a user interface, with specific guidance associated with the illustrative Guidance IDs shown in
In this example, a user interface is described that can be used to display output that is automatically generated based on automatic analysis (e.g., by the automated analysis subsystem described above) of detected technical conditions of calls, as described herein. The user interface can be used to provide prescriptive guidance to users (e.g., IT personnel or end users) to help diagnose and/or resolve UC system issues (e.g., poor voice quality issues).
The Session Leg Details include a list of specific users that participated in the conference call, with respective join times and durations, and icons indicating client, device, computer, network, and error information. A user (user11) is highlighted on the call history list. The highlighted network icon indicates that another user on the call may be associated with a high priority network issue. A detailed tab associated with the highlighted network icon includes further information relating to the highlighted user, including Stream Quality, Transport, and VPN information. (Other information also may be associated with the call, but is not shown in
In this example, the automated analysis subsystem automatically generates the guidance shown in
Unless otherwise specified in the context of specific examples, described techniques and tools may be implemented by any suitable computing devices, including, but not limited to, laptop computers, desktop computers, smart phones, tablet computers, and/or the like.
Some of the functionality described herein may be implemented in the context of a client-server relationship. In this context, server devices may include suitable computing devices configured to provide information and/or services described herein. Server devices may include any suitable computing devices, such as dedicated server devices. Server functionality provided by server devices may, in some cases, be provided by software (e.g., virtualized computing instances or application objects) executing on a computing device that is not a dedicated server device. The term “client” can be used to refer to a computing device that obtains information and/or accesses services provided by a server over a communication link. However, the designation of a particular device as a client device does not necessarily require the presence of a server. At various times, a single device may act as a server, a client, or both a server and a client, depending on context and configuration. Actual physical locations of clients and servers are not necessarily important, but the locations can be described as “local” for a client and “remote” for a server to illustrate a common usage scenario in which a client receives information provided by a server at a remote location.
In its most basic configuration, the computing device 600 includes at least one processor 602 and a system memory 604 connected by a communication bus 606. Depending on the exact configuration and type of device, the system memory 604 may be volatile or nonvolatile memory, such as read only memory (“ROM”), random access memory (“RAM”), EEPROM, flash memory, or other memory technology. Those of ordinary skill in the art and others will recognize that system memory 604 typically stores data and/or program modules that are immediately accessible to and/or currently being operated on by the processor 602. In this regard, the processor 602 may serve as a computational center of the computing device 600 by supporting the execution of instructions.
As further illustrated in
In the illustrative embodiment depicted in
As used herein, the term “computer-readable medium” includes volatile and nonvolatile and removable and non-removable media implemented in any method or technology capable of storing information, such as computer-readable instructions, data structures, program modules, or other data. In this regard, the system memory 604 and storage medium 608 depicted in
For ease of illustration and because it is not important for an understanding of the claimed subject matter,
In any of the described examples, data can be captured by input devices and transmitted or stored for future processing. The processing may include encoding data streams, which can be subsequently decoded for presentation by output devices. Media data can be captured by multimedia input devices and stored by saving media data streams as files on a computer-readable storage medium (e.g., in memory or persistent storage on a client device, server, administrator device, or some other device). Input devices can be separate from and communicatively coupled to computing device 600 (e.g., a client device), or can be integral components of the computing device 600. In some embodiments, multiple input devices may be combined into a single, multifunction input device (e.g., a video camera with an integrated microphone). Any suitable input device either currently known or developed in the future may be used with systems described herein.
The computing device 600 may also include output devices such as a display, speakers, printer, etc. The output devices may include video output devices such as a display or touchscreen. The output devices also may include audio output devices such as external speakers or earphones. The output devices can be separate from and communicatively coupled to the computing device 600, or can be integral components of the computing device 600. In some embodiments, multiple output devices may be combined into a single device (e.g., a display with built-in speakers). Further, some devices (e.g., touchscreens) may include both input and output functionality integrated into the same input/output device. Any suitable output device either currently known or developed in the future may be used with described systems.
In general, functionality of computing devices described herein may be implemented in computing logic embodied in hardware or software instructions, which can be written in a programming language, such as C, C++, COBOL, JAVA™, PHP, Perl, HTML, CSS, JavaScript, VBScript, ASPX, Microsoft .NET™ languages such as C#, and/or the like. Computing logic may be compiled into executable programs or written in interpreted programming languages. Generally, functionality described herein can be implemented as logic modules that can be duplicated to provide greater processing capability, merged with other modules, or divided into sub-modules. The computing logic can be stored in any type of computer-readable medium (e.g., a non-transitory medium such as a memory or storage medium) or computer storage device and be stored on and executed by one or more general-purpose or special-purpose processors, thus creating a special-purpose computing device configured to provide functionality described herein.
Many alternatives to the described systems are possible. For example, although illustrative techniques are described herein with reference to voice quality for audio calls, such techniques can be adapted for other identifying and resolving issues relating to other features of UC services, such as audio conferences, video conferences, federated activity, PSTN usage in conferencing, and mobile usage.
Many alternatives to the systems and devices described herein are possible. For example, individual modules or subsystems can be separated into additional modules or subsystems or combined into fewer modules or subsystems. As another example, modules or subsystems can be omitted or supplemented with other modules or subsystems. As another example, functions that are indicated as being performed by a particular device, module, or subsystem may instead be performed by one or more other devices, modules, or subsystems. Although some examples in the present disclosure include descriptions of devices comprising specific hardware components in specific arrangements, techniques and tools described herein can be modified to accommodate different hardware components, combinations, or arrangements. Further, although some examples in the present disclosure include descriptions of specific usage scenarios, techniques and tools described herein can be modified to accommodate different usage scenarios. Functionality that is described as being implemented in software can instead be implemented in hardware, or vice versa.
Many alternatives to the techniques described herein are possible. For example, processing stages in the various techniques can be separated into additional stages or combined into fewer stages. As another example, processing stages in the various techniques can be omitted or supplemented with other techniques or processing stages. As another example, processing stages that are described as occurring in a particular order can instead occur in a different order. As another example, processing stages that are described as being performed in a series of steps may instead be handled in a parallel fashion, with multiple modules or software processes concurrently handling one or more of the illustrated processing stages. As another example, processing stages that are indicated as being performed by a particular device or module may instead be performed by one or more other devices or modules.
Many alternatives to the user interfaces described herein are possible. In practice, the user interfaces described herein may be implemented as separate user interfaces or as different states of the same user interface, and the different states can be presented in response to different events, e.g., user input events. The elements shown in the user interfaces can be modified, supplemented, or replaced with other elements in various possible implementations.
While illustrative embodiments have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the claimed subject matter.
This application claims the benefit of U.S. Provisional Application No. 62/265,333, filed Dec. 9, 2015.
Number | Date | Country | |
---|---|---|---|
62265333 | Dec 2015 | US |