Microsoft Teams Presence Graph API: How to Use It and Some Other Details About It

Update: Dec 6, 2019 Microsoft Graph Presence API Preview announced here. We now know for certain: No App Permissions (you get presence from a AD user perspective), no subscription (programmers only get point in time presence) and get a batch of AD User's presence. Graph details here.

Teams developers have been waiting on the Graph Presence API with baited breath. (It appears to be available in Preview as of 11/29/2019. At this time there have been no announcements since Ignite 2019, but it seems to work).

How to quickly test the Teams Presence Graph API it

The Graph presence API for Microsoft Teams was mentioned in session VCE50 at Ignite 2019 but I just decided to test it today and it seems to work. Here is how:

  1. Go to and sign in as a valid Teams users
  2. Give your user permissions to see Presence by clicking "modify permissions"
  3. run: for a quick test. more below

Some more about the Graph API for Microsoft Teams

It appears to be user based at the moment. (Perhaps App based will come later this month?)

Presence permissions include: Presence.Read and Present.Read.All: Read lets this user read its own presence and Read.All lets users read other user's presence as well.

You can check your own presence or others:{ad_user_guid}/presence

The API returns "availability" (ie:Busy) and "activity" (ie: InACall).

The presence is request based and not subscription based which means it is a somewhat basic API and not optimal for most realtime applications since the app needs to keep asking for the state.

NOTE: The presence response is sometimes very slow (5000ms?).

Below is the Ignite 2019, Session VCE50 slide 29:

Below is the Ignite 2019, Session VCE50 slide 30:


This is an additional API that helps Microsoft Teams developers make solutions for Teams more full featured. Its another step in enabling voice scenarios for Microsoft Teams. The lack of subscriptions indicates this is the "first step" in the presence API.

Landis Technologies has been eager for presence API's to add presence based routing & Queue alerting to our Contact Center for Microsoft Teams. I'm sure vendors like Embrava are eager to put the ME API to use in their Blync Lights as well as many other ISV's and developers.

If there is anything you noticed that I've missed, please comment.

Will the Microsoft Teams IP Phone without Handset Become a Category?

At Microsoft Ignite 2019 I saw the Poly CCX500 without a handset for the first time. At first I thought it was a CCX500 side car expansion but quickly realized it just an ip phone without a handset.

Will this become a category beyond Poly? Is it the new form factor of the IP deskphone?
What do you think?


December 2019 Graph API Update Looks Poised to Enable "Connected" Contact Centers (Direct Route Connected) with "Native" Contact Centers (Calling API Based) Following

At Microsoft Ignite 2019 Andy Bybee gave session VCE50 on Contact Centers, or as Microsoft would rather call it, "Customer Journeys" or "Customer Interactions". (Although even Andy admitted the term "customer journeys" is notoriously nebulous and hard to pin down...) In this session Microsoft laid out its vision around customer interactions and that included:

  • Transforming instead of just integrating
  • Microsoft does some customer interaction scenarios, partners others

Microsoft plans to enable some customer interaction scenarios using things like Power Virtual Agents and their own basic call queues and auto attendants, but will look to partners for more advanced functionality that go beyond that and include things like skills routing, call backs, call flow designers and more.

slide explaining Connect, Extend, Power in session VCE50

Those Contact Center vendors that provide more advanced features beyond what Microsoft will provide are being divided into several broad categories:

  • Connected: Direct Route integration of exsisting systems
  • Extended: Utilize other Teams integration points
  • Powered: New Contact Centers built entirely on Teams Calling API's and leveraging all Microsoft 365 services

The "Connected" category appears to me to be those contact centers who use Direct Routing (SIP Trunking) to Microsoft Teams. These are vendors who aren't focusing solely on Microsoft Teams and thus the integration will be more work and the integration level won't be as tight and robust, but it is easier for existing CC vendors & Microsoft to "make their existing solution work with Teams" as Direct Routing can largely facilitate this with some assistance from new presence API's. Read: Low hanging fruit for MS to "get a solution". Microsoft has been communicating this type vendors is on track to be available sometime early in 2020.

The "Powered" category appears to be contact centers power by Microsoft Teams calling and using the Calling & Meeting API's and integrated deeply to Microsoft 365. What our company has been referring to as "native Teams contact center" when referring to our Landis Contact Center for Microsoft Teams & other vendors following this track. Read: MS needs to provide more API features to achieve this level. Microsoft noted that it is starting a Certified for Microsoft Teams program to facilitate these and other vendors.

The Microsoft 365 Roadmap Update notes:
"Microsoft Teams - Teams Voice Platform
Enable Contact Center integration, Remote Advisor integration and Graph API for Presence"

This looks like the December round of Graph API updates is really around enabling "Connected" contact centers. The December 2019 Graph API update looks poised to enable "Connected" Contact Centers (Direct Route Connected) with "Native" Contact Centers (Calling API Based) following that.

Landis Technologies was glad to be the first contact center vendor presenting a Teams Powered Contact Center at Microsoft Ignite 2019, which not only is based on the Teams Calling API's but is deeply integrated to Power Apps, Power Automate (Flow) & Power BI allowing organizations to transform how they interact with customers. The Landis Contact Center for Microsoft Teams is in Customer Preview currently and to be released when Microsoft releases the features needed for a native Contact Center to GA.


My Microsoft Ignite 2019 Microsoft Teams Notes

This is a placeholder for my Ignite 2019 notes and observations.

Microsoft Teams Announcements

Teams Ignite Keynotes 

Who to Follow:

Microsoft Teams Product Announcements:

Microsoft Teams Evening Events:

Did you vote for the #MicrosoftTeams Voice Client API's?

Microsoft Teams Compliance Call Recording Bot Sample Now Available

It looks like Microsoft has released the Compliance Call Recording Bot sample code.

On October 31, 2019 user "ksikorst" posted "Kasikors/compliance recording #121" sample bot code on the "Microsoft Graph Comms Samples" Github.

You can read an overview of how the sample works at this URL.

It appears like the way it works in brief:

  • Mark a Microsoft Teams user or users as a "recorded user" (will this be set via Powershell? TAC?)
  • Now when a "recorded user" gets in a call, a configured bot will be invited to the call

Since the Landis Contact Center for Microsoft Teams does policy based call recording we are eager to have this new API functionality as an option, as I'm sure many other vendors are as well.