Skype for Business

Contents

Skype for Business

Skype for Business

Overview

With this Remote Action, collect information about Skype for Business calls within the last 7 days and calculate metrics for the current day.

Prerequisites

The compatible Skype for Business versions are 2015 and 2016.

The Remote Action gathers all the information about calls from the Skype for Business logs, they are located at:

%LocalAppData%\Microsoft\Office\16.0\Lync\Tracing **For Skype for Business 2016** %LocalAppData%\Microsoft\Office\15.0\Lync\Tracing **For Skype for Business 2015**

Make sure you have FULL or LIGHT logs enabled for Skype for Business, further information in this link.

Input parameters

To a good usage of the Remote Action, set these input parameter values:

Parameter Description Value
MinSecondsForCall Minimum number of seconds to consider a call as a short call 15
NumHoursForTimeout Number of hours to consider an unfinished call as a dropped call 7
CorporateNetworks Comma-separated list of IPv4 subnets to check if a call was made in a corporate network or externally. They must be listed in CIDR notation. Provide "" to consider all the calls as made out of the office The proper value depends on your environment configuration

The first value is useful for identifying calls properly established and dropped by either the caller or the receiver, but whose duration was too short to consider them as "normal" call. It covers the cases when the device is muted, or a wrong audio device was selected and the user has to leave the call and set it up again, etc.

The second parameter is useful for identifying calls established but still in progress or the ones which, due to a Skype for Business crash, don't have the proper termination traces, hence they are never considered as ended. When a call reaches the provided time, they are considered as Dropped with the reason "The call exceed the maximum expected duration".

The third parameter is useful for identifying calls made within the corporate network or externally, to reduce the scope of those users who have problems with their calls.

Desired configuration

Parameter Value
Schedule time Hourly. Recommended value to be more accurate and to avoid missing some calls if the user has logged out and hence the Remote Action cannot be executed
User context Current interactive user. The Remote Action needs to access data that is stored in the user folder
Timeout At least 120 seconds, depending on the size of the logs it may be reduced but this value covers most of the cases

The Remote Action in detail

The aim of this section is to describe how the Remote Action gets the information from the Skype for Business logs, analyzes the results and categorizes the calls.

How it filters the amount of data to read

At the first execution, the Remote Actions reads all the traces since the midnight up to the current moment. The last execution timestamp is stored in the registry at the property:

HKCU:\Software\Nexthink\Act\SkypeForBusiness\LastExecution

For the following executions, this last execution timestamp is taken as start date to reduce resources and to avoid reading already processed calls. In case of this timestamp is not within the current day, the start time will be the midnight.

Call types

Type Description
Audio The most typical call, when a call or a conference is made using computer audio, then it is categorized in this way
Video A call or a conference started with video or when the video is activated during them
Sharing A call or a conference started by sharing either the screen or a Windows application. If this feature was activated during a video or audio call, it is categorized also as Sharing

Call results

Type Description
Unfinished A call of any type which was established and it is supposed to be in progress during the Remote Action execution
Rejected A call of any type which was cancelled by the caller or declined by the receiver before it could be established. This result is not taken into account for the metrics
FinishedManually A call of any type which was established and finished manually by the caller or the receiver
Failed A call of any type which could not be established, or the destination did not receive, typically due to network issues. The users could not communicate each other because the call was not started, it was only an attempt
Dropped A call of any type which was established correctly but due to serious issues, was cancelled. Skype for Business cancelled the communication automatically

How calls are categorized

To identify calls and process them properly, the Remote Action performs the following steps while it is reading text blocks from the Skype for Business logs.

The text "[xxx]" in the following examples, represents a text that is skipped, it is usually the user identity or email.

It detects the request of a call by getting this message:

INFO  :: INVITE [xxx] SIP/2.0


If the gathered block does not have these content types, it is skipped.

application/sdp

multipart/alternative


If the block is taken into consideration, the call mode is identified by these tags for audio, video or screen/application sharing.

m=audio

m=video

m=applicationsharing-video

m=applicationsharing


In case of getting CANCEL or DECLINE blocks, it tries to get the reason of it by checking the value until the first ';' from the ms-client-diagnostics node.

CANCEL [xxx] SIP/2.0

SIP/2.0 [xxx] DECLINE

ms-client-diagnostics: [NUMBER]


If the value of [NUMBER] is 51004, then the call is categorized as Rejected and it does not count for the daily statistics. Otherwise, the call is categorized as Failed.

In case of getting a BYE block, it means that the call was established and initiated.

BYE [xxx] SIP/2.0


If the value obtained from the ms-client-diagnostics node is one of the SKYPE_GOOD_CALL_CODES constant values, then it is categorized as FinishedManually.

Otherwise, the call is categorized as Dropped and the Remote Action tries to get the reason from the ms-client-diagnostics node.


In case of getting the SERVICE block, it contains the VQReport with details about the call and its quality.

SERVICE [xxx] SIP/2.0


When the result of the call is FinishedManually, the quality is measured, categorizing the call as PoorDueTo... in case of any value is over the threshold recommended by Microsoft, otherwise the call is categorized as Good.

Collected metrics/data

The values about the quality call are computed by Skype for Business and stored in the VQReport node within SERVICE trace in the log file. The Remote Action does not perform any calculation.

Those metrics are only available when the result of the call is FinishedManually and depending on the values, the call is categorized as Good or PoorDueTo... and any reason such as RoundTrip, Jitter, and so on.

The data collection is performed as detailed on the following link.

Only the calls for the current day are considered for the metrics calculation.


Nexthink log details

The Nexthink log is the CSV file where the Remote Action stores the calls information for the last 7 days. It is available at this location:

%LOCALAPPDATA%\Nexthink\SkypeForBusiness\nxt_skype_calls.csv


Below, you can see the fields description:

Field Description
CallId Id of the call. It is a unique value assigned to all the traces related to the same call
Type Type of the call, audio, video or sharing
Timestamp Timestamp of the beginning of the call
FinishTimestamp Timestamp when the call was finished
Duration Duration in seconds of the call
DurationUnderMinimumTime Whether the duration of the call was under the minimum desired to consider a call has a "normal" duration or not
Result How the call was ended
Quality Good or poor due to any reason
OverWiFi Whether the call was made over Wi-Fi network or not
IpAddress Public IP address of the network
Corporate Whether the call was made within a network categorized as corporate or not
BadResultReason Reason of the issue in case of the call had any