Skype for Business
Skype for Business
Skype for Business
With this Remote Action, collect information about Skype for Business calls within the last 7 days and calculate metrics for the current day.
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.
To a good usage of the Remote Action, set these input parameter values:
|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.
|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:
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.
|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|
|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.
If the block is taken into consideration, the call mode is identified by these tags for audio, video or screen/application sharing.
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
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.
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:
Below, you can see the fields 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|