Category Archives: API – Skype for Business

Microsoft Teams – Build 2018

Computing is no longer just an interface that you go to, but it’s instead embedded everywhere — in places, things, our homes and cities. The world is a computer. CEO Satya Nadella shares Microsoft’s vision and roadmap for how developers can lead in this new era.

Visit Build 2018 site for latest info on Build 2018.

Download the transcripts on Press Pack, including

  • Press Release AI, edge and cloud
  • Press Release Microsoft 365
  • Official Microsoft Blog
  • Transcript Joe Belfiore keynote
  • Transcript Satya Nadella keynote
  • Transcript Scott Guthrie keynote

Virtual Health Templates at Build 2017

A nice presentation at recent Microsoft Build 2017 event in Washington State Convention Center, Seattle, WA, May 10 – 12, illustrating Skype for Business integration using Virtual Health Templates and Mcirosoft Hololens.

Skype for Business includes powerful support for audio/video conversations and meetings. Find out how we built a complete “Virtual Consult” facility for doctors, and how you can weave the power of audio/video conversations into your own apps.

Virtual Health Templates

https://github.com/officedev/Virtual-Health-Templates

Virtual Health Templates

Modern healthcare providers are constantly looking for innovative ways to service and connect their patients and care teams. We are excited to announce the publication of new developer templates that extend Skype for Business as a platform for virtual healthcare.

More info: Virtual Health templates.

Download: here.

Visit https://dev.office.com/Skype where you’ll find documentation and code samples to help you get started. Once you jump in, tell us what you think. Give us your feedback on the API and documentation through GitHub and Stack Overflow or make new feature suggestions on UserVoice.

Dynamic Guest Access (preview)

Today Microsoft is extending the value of the Skype Developer Platform with a collection of new capabilities designed to support an important scenario with broad application across a range of industries – remote advisors connecting over real-time voice and video with external customers using the power of Skype for Business and Office 365.

More info: Build Remote Advisor solutions with Skype for Business.

Providing a secure and reliable Remote Advisor experience to customers outside of your organization requires two key elements – seamless integration with your existing customer identity system, and dynamic control over how your trusted applications can authorize those users to access Skype for Business Online. Today we’re excited to announce the first extension of the Skype Developer Platform to support trusted applications in Skype for Business Online with a public preview of the Skype Developer Platform – Dynamic Guest Access feature.

Dynamic Guest Access builds on a REST-based API that enables developers to facilitate meeting scheduling and authorize users to access Skype for Business Online resources using secure, session-based tokens. Dynamic Guest Access works together with the Skype Web SDK, App SDK, and UCWA to enable Remote Advisor and other business-to-consumer solutions.

To learn more about the Dynamic Guest Access preview feature, please visit the Skype for Business GitHub repository.

Trusted Application API

The Trusted Application API is a Rest API that enables developers to build Skype for Business Online back-end communications services for the cloud.

Built on the Skype for Business Online Platform, the Trusted Application API lets a developer build immersive, smart, and interactive communication experiences and trusted services.

The Trusted Application API is Microsoft’s vision of an extensible Skype for Business Online Cloud that meets your demand for powerful, back-end features. The API aims to provide developer opportunities similar to Skype for Business Server’s Unified Communications Managed API (UCMA)…in the cloud. The API enables a cloud-first approach and additional powerful features that aren’t available to on-premises Skype for Business Server customers through UCMA.

Sample code available quick start and meeting join, API reference available on Resources and Enumerations.

Trusted Application API documentation is available on GitHub.

Key use cases for the Trusted Application API include:

  • Write SFB Online applications as service endpoints that don’t need need a user context or identity. Common service endpoint scenarios include:
  • Meeting Management:
    Schedule or manage on-demand meetings like a contact center application.
    Create on demand meetings to handle customer calls and add customer service representatives to the meeting.
  • Attendant console:
    Voice based call answering and routing bots.
  • Value Add solutions:
    Business-to-consumer Remote Advisor functionality like Telehealth appointments or Banking consults
    Recording
    Compliance
  • Customer care:
    Click-to-chat
    Click-to-call

Other such applications include but are not limited to:

  • Bots and Notifications
  • Anonymous Customer Web Chat
  • PSTN audio conferencing (IVR to join the conference, in-meeting Personal Virtual Assistant, and in-meeting announcements)
  • Service-side meeting recording
  • Inbound/outbound IVRs
  • Helpdesk
  • Expert-finder
  • Customer engagement / Contact Center

To show the power of the Trusted Application API, it may also be used for the following high-privilege scenarios:

  • Back-to-backing calls to conceal the identities of customer service representative in a B2C call
  • Invisibly monitor an online meeting and its roster while keeping full control over conference actions including:
  • Managing real-time media routes for silent monitoring
  • Coaching scenarios and broadcasting in a conference.
  • Pop or insert calls in a call pit.
  • Use large amounts of computation-intensive real time resources for Voice/Video playback, recording, speech synthesis or recognition.

Please refer to the following Microsoft Ignite 2016 session for more information:
Dive Deep on the new Trusted Application API for Skype for Business Online
Speaker: Ganesh Sridharan (Microsoft) and David Newman (Microsoft)

Slide deck: Microsoft Ignite Session

Code – Desktop Apps – Site By Site

I used Microsoft Visual Studio Community 2015 running Windows 10 and targeted Windows Desktop Application to .NET Framework 4.6.1. First I downloaded the Desktop Client SDK and used 7-ZIP to extract the content of the ‘lyncsdk.exe’ distribution. The ‘lyncsdk64.msi’ installed fine on my development environment providing the assemblies needed. The can be found in ‘C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop’.

While exploring the capabilities of the desktop client API, I wanted to be able to run two instances of Skype for Business client on a single desktop. As far as I am aware this is not available out-of-the-box.

Took some time to get everything right but here is the result. On the right-hand site one instance running the official client 15.0.4711.1000, on the left-hand site a second instance running my own C# custom client version 0.0.0.1. Thus two ‘lync.exe’ instances active with different AD credentials. To be honest not yet the full functionality, things like white boarding and application sharing are not yet implemented. But I only needed this to test IM, audio and video conversations during demo on the road using a single desktop. And convincing to evangelise the power of Skype for Business Development Platform for customers that primarily focus on the infrastructure aspects of the platform.

I will not duplicate the entire process of developing applications using Lync 2013 SDK and UI suppression, as these is very well documented and many excellent code samples are available online.

The key take-away of this BLOG post and only line of code is specifying GetClient(true) instead of GetClient() as show below.

Site by Site

So creating a side-by-side endpoint is a one step process that involves calling the static LyncClient.GetClient method, except that you pass a boolean true value in the method if you want a side-by-side endpoint. If you do not provide an argument to this method, the default argument value of false is passed and a standard Lync endpoint is created.

The remaining is business as usual to write a UI suppressed application, although it takes quite some effort to have the user interface exactly as the Skype UI as in client 15.0.4711.1000.

If you run Site by Site mode you will see in Explorer in folder “C:\Users\…\AppData\Local\Microsoft\Office\15.0” next to the usual “Lync” also a “LyncSideBySide” directory structure. In fact up to 4 instances can run simultaneously.

More information can be found on https://msdn.microsoft.com/en-us/library/office/dn133125.aspx.

Code – UCWA in C#

I will publish in the upcoming months C# software I have developed based upon UCWA 1.0 and UCWA 2.0 showcasing advanced integration scenarios in on-premise environments, based upon UCWA documentation (and with a little help of Fiddler for the undocumented modalities).

Revisit this page when the Application API and JS UC Controls, UCWA JS OM, UC Controls, UCWA Mobile OM become generally available, with more options in Hybrid or Office365 environments.

I was inspired by the blog and movie of Tsuyoshi Matsuzaki san – my basic skills of the Japanese language acquired during previous employment at company NEC was most helpful to understand his point. Also the specs at MS-OCDISCWS and article of Graham Cropley explaining the discovery process.

In the meantime I recommend reviewing the basic introduction samples available on Microsoft Developer Network

  • Create UCWA Windows Store apps using C#/XAML and XML: info, code
  • Open an event channel in a UCWA app using C#/XAML and XML: code

© Microsoft Developer Network – Apache license, version 2.0
Continue reading

App SDK for iOS and Android

On April 1 at Build 2016 event, Microsoft announced the preview of Skype for Business App SDK.

The Skype for Business App SDK for iOS and Android will allow you to light up Skype messages, audio and video within your own apps. For the initial preview release, this SDK will enable remote advisor experiences (patient talking to doctor, client talking to financial advisor, etc) built upon Skype for Business meetings.

A recording of the session of David Newman and Richard Taylo is available on Channel9.

I recommend visiting http://dev.office.com/skype and sign up at https://www.skype.com/en/business/sdksignup/ for news about the Skype for Business App SDK for iOS and Android and other news about the Skype Developer Platform.

SDN 2.2

Microsoft has released the Skype for Business SDN (Software-Defined Networking) 2.2 Interface build 6.0.9319.68. This allows developers to build applications and services that can monitor, isolate and correct issues on the network that affect Skype for Business quality of experience. The installer application also provides customers with the ability to interface with qualified 3rd party applications built on the Skype for Business, SDN API.

The SDN 2.2 interface can be downloaded from the link below:
https://www.microsoft.com/en-us/download/details.aspx?id=44274

The Microsoft Skype for Business SDN Interface provides a subscription-based interface for network controllers or network management systems to receive call and quality data to monitor and analyze network traffic in order to optimize the Skype for Business media stream quality.

The Microsoft Skype for Business SDN Interface is not a programming interface but a RESTful interface through which subscribed systems (generally called “subscribers”) receive data about active calls and the end-to-end measured quality of media streams.

The data received is used to identify, diagnose and resolve quality and performance issues in the Skype for Business environment or the network infrastructure that it uses. The quality metrics are intended to correlate with information observed by the network infrastructure as well as with other calls, call-legs, devices and endpoints. Goals of the SDN Interface include Superior diagnostics, Dynamic QoS and Intelligent routing.

The objective is to provide quality data as close to real-time as possible, although without any guarantees; this enables real-time tracking and diagnosis of calls in progress, as well as the collection of data for long-term analysis.

If you are new to SDN there are some sessions on latest Microsoft 2015 Ignite, like BRK2191, BRK3874, BRK3107 and BRK3174 highlighting the power of Software Defined Networking.

UCMA 5.0

Update 28/05/2015
For those that were not part op Skype for Business Server 2015 TAP program, the UCMA 5.0 SDK version 9319.48 is now also public available on Microsoft Download Center at UCMA 5.0 SDK and runtime languages version 11.

The installation documentation is somewhat limited. If you install UcmaSdkSetup.exe followed by following the instructions described in the documentation
"C:\Program Files\Skype for Business Server 2015\Deployment>Bootstrapper.exe /BootstrapLocalMgmt /MinCache"
you will probably will encounter
"Error encountered: Error returned while installing OcsCore.msi(Feature_LocalMgmtStore), code 1638. Error Message: Another version of this product is already installed"
Continue reading

Skype Web SDK

The Skype Developer Platform for Web (“Skype Web SDK”) is a new set of JavaScript components and HTML controls that enable developers to build new web experiences that seamlessly integrate a wide variety of real-time collaboration models leveraging Skype for Business services and the larger Skype network. In addition to support for multiple core collaboration services like presence, chat, audio, and video, this enables web experiences that can connect to a broad spectrum of users, browsing platforms, and device endpoints. Presence and chat services are provided using new REST-based web services, which allows your Web SDK app to be accessed on any browser such as IE, Chrome, Firefox, and Safari. Support for audio/video and application sharing conversations is currently supported via a downloadable plugin module that is available for Windows 7, Windows 8 computers and Macs. The net result is a powerful new model for building immersive collaboration experiences using the power of Skype and Skype for Business.

More information on MSDN, the Microsoft Skype Web SDK includes samples that can be downloaded here.

Also available on http://www.missiaen.com.

I also highly recommend attending the level 400 Lync Ignite Session A Technical Deep Dive into Building Web Apps with the Skype Web SDK by David Newman (Program Manager) and Srividhya Chandrasekaran (Senior Program Manager). This session leads you into the development of web applications with the new Skype Developer Platform for Web. Learn how to build new web experiences that seamlessly integrate a wide variety of real-time collaboration models leveraging Skype for Business services and the larger Skype network. Build comprehensive web apps with audio, video, sharing, presence, instant messaging and more. Learn how to integrate communications experiences within the context of your applications and create new Consumer interactions from the web.

Also recommended is the session The Skype Developer Platform and Skype Web Developer Capabilities on //build/ event where Andrew Bybee, Srividhya Chandrasekaran, Dan Gardiner and Daniel Valik highlight this SDK.

I also recommend the Skype for Business Developer Platform Update session of Build 2016:

Another session on Build2016 illustrating Skype Web SDK below:

UCWA 2.0

Microsoft Unified Communications Web API 2.0 is a REST API that exposes Skype for Business Server 2015 instant messaging (IM) and presence capabilities.

UCWA 2.0 enables developers to make their enterprise applications and intranets more lively and connected to business contacts. Although UCWA 2.0 is language-independent, developers can use any programming language from C/C++ to Java, and the API is fine-tuned for web developers who are familiar with ordinary web technologies such as HTTP, OAuth, JSON, and JavaScript.

UCWA 2.0 is available only to customers who have Lync on-premises. New features include

  • Contact and Group Management: UCWA 2.0 now supports the ability to add and remove Contacts, User Groups, as well as Distribution Groups from the contact list.
  • Conversation History and Auto-Accept: With UCWA 2.0 applications have the ability to view a list of past conversations and continue from an existing conversation thread. In addition, UCWA 2.0 endpoints now have the ability to auto-accept the incoming IM invites and messages like any other Skype for Business endpoints.
  • Ability to contact a Skype buddy: UCWA 2.0 and Skype for Business Server 2015, UCWA 2.0 endpoints can communicate with contacts from the Skype Directory.

More information on MSDN. Check the UCWA 2.0 general reference and the UCWA 2.0 API reference with updated Resource list.

I recommend reviewing the http://ucwa.skype.com/ with more information on Skype Web SDK.

I will publish in the upcoming months information on the Web Development SDK of the Skype Development platform, have a look at UCWA in C# and UCWA in C# part 1 of 5 and UCWA in C# part 2 of 5

Please review the presentation introducing the new Skype for Business Developer Platform.

Skype URIs

Skype URIs provide a simple way for you to initiate Skype calls and chats directly from websites, desktop, and mobile apps.

In its simplest form, you can embed a hyperlink referencing a Skype URI in a webpage to place a Skype call. For example, to initiate a call to the Skype Echo / Sound Test Service, the link would be

Clicking the link:

1.Brings the device’s Skype client into focus, starting it as necessary.
2.Effects auto-login or prompts your users for their Skype Name and password.
3.Typically opens a confirmation dialog to authorize placing the call.
4.Places the call.

More information on MSDN.

I will publish in the upcoming months information on the Skype URIs of Skype Development platform.

Please review the presentation introducing the new Skype for Business Developer Platform.