Forum Discussion

2 Replies

  • koenigSSIG-IT's avatar
    koenigSSIG-IT
    Copper Contributor

    Adding the practical follow-up since Nivedipa's Graph answer only covers the single-user endpoint:

    • For a multi-user report, use POST https://graph.microsoft.com/v1.0/communications/getPresencesByUserId with a JSON body containing up to 650 user IDs. Single round-trip, much more efficient than looping /users/{id}/presence.
    • For historical reports (e.g. "how often was X available last week"), Graph does not store presence history. You need to either run a scheduled polling job (write to SharePoint List, Azure Storage Table, etc.) or use a tool that does this for you. Drago-Petrovic's MSB365 PowerShell script on GitHub (Teams_PresenceReport) is a solid starting point.
    • For a live overview dashboard (vs. report), TeamsDashboard (teamsdashboard.com) handles the batch poll + UI + filters and shows it as a URL you can open on any screen. 14-day trial, EU-hosted/GDPR.

    Hope this helps Juan and future readers landing here.

    (Disclosure: I built TeamsDashboard.)

  • @JFM_12 - Thanks for bringing this issue to our attention. 

    You can report on a user's presence status in Microsoft Teams by integrating with the Microsoft Graph API.

    Here’s how it works:

    • Microsoft Graph API offers endpoints to retrieve a user's presence, such as Available, Busy, or Away.
    • Your bot or app must have the necessary permissions (Presence.Read or Presence.Read.All) in Azure AD.
    • To access this information, use the endpoint:
      GET https://graph.microsoft.com/v1.0/users/{user-id}/presence

    Reference documentation: Get presence - Microsoft Graph v1.0 | Microsoft Learn

    Thanks, 

    Nivedipa

    --------------------------------------------------------------------------------------------------------------------- 

    If the response is helpful, please click "**Mark as Best Response**" and like it. You can share your feedback via Microsoft Teams Developer Feedback link. Click here to escalate.