Callstats is now LIVE on Genesys AppFoundry Learn More

Universal Windows Platform Integrates

By callstats on January 9, 2019

We are excited to announce an integration with the Microsoft Universal Windows Platform! This integration enables Universal Windows Platform (UWP) developers to monitor real-time voice, video, and data streams in applications ranging from virtual and augmented reality to gaming. UWP powers popular Microsoft Xbox game consoles and HoloLens mixed reality smart glasses, as well as Windows 10 desktop and ARM powered mobile devices.

Our integration allows developers to easily monitor and troubleshoot any application that relies on real-time communications. We collect over 500 metrics every few seconds from a UWP endpoint and use AI-driven algorithms to detect network problems and automatically troubleshoot issues.


Kognitiv Spark, a creator of mixed reality systems, is using the integration with its RemoteSpark application.


How Easy is it to Integrate UWP with

With just a few lines of code, developers can add the REST interface to their application and enable it to begin reporting real-time metrics to our high performance data collection engine. Our dashboard visualizes your data and enables your team to analyze trends and troubleshoot problems.

Has Anyone Integrated UWP with

Indeed they have - and in a very interesting, new space. WebRTC enables exciting new gaming applications between remote players and an entire category of remote assistance applications based on VR/AR. These applications depend on high performance broadband network connections between endpoints to transmit media streams and/or real-time data. When network problems occur, they can wreak havoc on the user experience.

Kognitiv Spark is a pioneer in the remote assistance VR/AR category. Their application, Remote Spark, is used to connect a HoloLens wearer in a far-away location with a subject matter expert for real-time assistance with complex machinery.

“With native support in Windows 10, we were able to turn-up the service in a few hours and begin using the rich data available in its dashboard to detect and expedite problem resolution.”

- Ryan Groom, Co-founder and CTO, Kognitiv Spark

They have use cases when their operations team needs detailed network insights to troubleshoot problems. For example, when an engineer on an oil rig with satellite internet connectivity needs to connect to an expert thousands of miles away to troubleshoot mechanical issues. The nature of the connection brings some inherent networking issues which can be difficult to diagnose.

How Can I Integrate UWP and

Follow the integration steps below to create an account with and integrate it into your UWP application.

  1. Create an account with and follow the integrations steps.
    1. Create an Organization
    2. Navigate to the apps tab to create an app and enter the SDK as, other, UWP.
    3. From the left side panel, click on App Settings and navigate to the Security tab.
    4. Click on New Credentials and choose a label for the key.
    5. Select the key type as ECDSA and enter the public key.
    6. Under the key details, click on View for the credential.
  2. To authenticate with, you need to generate cryptographic keys and upload the public key to the dashboard. Follow the instructions in You should have a Config class and .p12 certificate in your project, which is all you need to authenticate to the callstats,io REST API.
  3. Reference the Org.WebRtc.Callstats NuGet package in your project.
  4. If you are using PeerCC sample, you can find classes for collecting data from PeerCC and WebRTC in the Stats folder. You may use this code as an example for your implementation. Add the files in the PeerCC-Sample repo to your project:
    1. PeerConnectionControllerStateChange.cs: Tracks RTCPeerConnection state changes and collects data from peer connection states for submission to
    2. StatsController.cs: Collects data from the entire PeerCC sample and uses the Org.WebRtc.Callstats library to send prepared data to the REST API.
    3. WebRtcStats.cs: Prepares statistics obtained from RTCPeerConnection for communication to via the REST API.
  5. Initialize and send SDP and application errors via the StatsController. For an example, see Conductor.cs in PeerCC-Sample.
  6. Handle ICE state changes on RTCPeerConnection and use PeerConnectionStateChange to send data to

_peerConnection.OnIceGatheringStateChange += async() => {

await PeerConnectionStateChange.StatsOnIceGatheringStateChange(_peerConnection);  

Debug.WriteLine("Conductor: Ice connection state change, gathering-state=" + _peerConnection.IceGatheringState.ToString().ToLower()); };  

_peerConnection.OnIceConnectionStateChange += async () => {

if (_peerConnection != null) await PeerConnectionStateChange.StatsOnIceConnectionStateChange(_peerConnection);

else {

await PeerConnectionStateChange.PeerConnectionClosedStateChange(); ClosePeerConnection();

} };


7. Send application level events for audio muting and unmuting to StatsController. For an example, see MainViewModel.cs in PeerCC-Sample.

Ready to get started with and UWP? Register for an account today.

 Sign Up to Use with UWP Now

Tags:, Microsoft UWP