Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs
Presence change notification subscriptions require delegated permissions and cannot be created using application permissions.
Microsoft Graph explicitly does not support application (app-only) permissions for presence subscriptions; instead, they must be created in the context of a signed-in user (delegated) with permissions such as Presence.Read.All.
Ref: https://learn.microsoft.com/en-us/graph/changenotifications-for-presence
You can also see the alternatives mentioned in the document. Polling for presence uses APIs like GET presence or getPresencesByUserId to repeatedly check a user’s status. This approach works well with application permissions and allows monitoring without a signed-in user, making it suitable for background services.
However, it requires continuous API calls, which increases traffic and resource usage, and it does not provide real-time updates. There will be a delay depending on how often the app checks.
You can also try using a hybrid model within a single application.
The app uses application permissions to retrieve presence data via polling APIs, and delegated permissions (with a signed-in user) to create and manage presence subscriptions for real-time updates.
I hope this information helps.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.