Using Bot Framework “Seen” Feature with RSC Permissions — Installation Restrictions Issue

Devesh Tiwari 180 Reputation points
2025-10-28T07:39:46.7566667+00:00

We’re trying to implement the “seen” feature in our Microsoft Teams bot built using the Bot Framework. Our use case is to send proactive messages to users and track whether they have seen those messages or not.

According to Microsoft’s documentation, this can be achieved using Resource-Specific Consent (RSC) — which allows scoped access to an app through application-type RSC permissions.

As noted in the docs: Application-type RSC permissions let the app access data without a signed-in user. These permissions must be granted by an admin or resource owner and apply to the entire tenant.

We were able to get it working however, after adding the permissions, we ran into a major issue:

  1. Only administrators were able to install the app successfully.
  2. Regular users received warning messages and were unable to install the app.

Our goal is to enable the “seen” feature while keeping the app installable by all users, not just admins.

Is there a way to get it working without restricting installation to admins only or is there an alternative approach to detect message “seen” status for proactive messages?

Thanks in advance for your help!

Microsoft Teams | Development
{count} votes

1 answer

Sort by: Most helpful
  1. Steven-N 11,780 Reputation points Microsoft External Staff Moderator
    2025-10-28T10:39:22.26+00:00

    Hi Devesh Tiwari

    Thank you for reaching out to Microsoft Q&A forum  

    Based on your description, I understand that you're sending proactive messages to users and want to track if they've been viewed. You've enabled this via Resource-Specific Consent (RSC) for application-type permissions, which works but has led to a significant problem: only tenant administrators can install the app successfully, while regular users encounter warning messages and installation failures. Your goal is to maintain the "seen" tracking capability without limiting installations to admins only. 

    Regarding your concern, the reason why only Administrators were able to install the App successfully and regular users received warning messages and were unable to install the App often stems from RSC application permissions require consent from resource owners, but restrictive tenant policies or disabled RSC settings block regular users from granting it, triggering warnings like "Admin approval required" Admins can override these, but non-admins cannot if policies demand higher-level approval. 

    That said, you can try the following steps to see if it helps to solve this problem:  

    • Enable RSC in Tenant: Use PowerShell or Graph API to set RSC to "EnabledForAllApps"  
    • Update Permission Policies: In Teams admin center > Teams apps > Permission policies, allow "User consent" for custom/third-party apps. 
    • Preapprove Permissions: Admins preapprove via Teams admin center (Manage apps > Your app > Permissions > Review permissions). 
    • Check Manifest/Registration: Ensure manifest lists only RSC permissions under authorization; match app IDs in Azure AD. 

    Link references:  

    https://free.blessedness.top/en-us/microsoftteams/platform/graph-api/rsc/resource-specific-consent

    https://free.blessedness.top/en-us/microsoftteams/platform/graph-api/rsc/grant-resource-specific-consent

    https://free.blessedness.top/en-us/microsoftteams/platform/graph-api/rsc/preapproval-instruction-docs

    About your question: Is there a way to get it working without restricting installation to Admins only or is there an alternative approach to detect message “Seen” status for Proactive Messages? 

    From my perspective view, you can try two workaround options below:  

    Fix RSC for broad installation: Configure tenant settings and policies as above to enable user-level consents in personal scopes (1:1 chats), allowing regular users to install and grant permissions like ChatMessageReadReceipt.Read.Chat for Graph queries (e.g., /chats/{chatId}/members/{userId}/lastMessageReadDateTime). This keeps RSC functional without admin restrictions. 

    Link references:

    https://free.blessedness.top/en-us/microsoftteams/manage-consent-app-permissions

    https://free.blessedness.top/en-us/microsoftteams/app-permissions

    Alternative without RSC: Use Bot Framework's built-in read receipt events for 1:1 chats with no permissions needed, so no install issues. Teams sends conversationUpdate activities with readReceiptInfo (e.g., lastReadMessageId) when users view messages. Compare against your proactive message IDs to track "seen" status. Users must enable read receipts in Teams settings. 

    Link references:

    https://free.blessedness.top/en-us/microsoftteams/platform/bots/how-to/conversations/subscribe-to-conversation-events?tabs=dotnet

    https://free.blessedness.top/en-us/microsoftteams/platform/bots/build-conversational-capability?tabs=dotnet%2Capp-manifest-v112-or-later%2Cdotnet2%2Cdotnet3%2Cdotnet4%2Cdotnet5%2Ccsharp2%2Cdotnet6%2Ccsharp1

    This summary is based on my findings from the community and several relevant threads. However, it may not accurately reflect the behavior in question. To help you reach your goal more effectively, I recommend posting a thread on the Microsoft Tech Community forum. It’s a great platform for deeper technical discussions and connecting with individuals who have hands-on experience and expertise. They’re best positioned to provide guidance and valuable insights on this topic.   

    I'm hoping you'll get the help you need to fix the issue quickly. Please feel free to leave a comment below if you require any additional help. 

    Best regards


    If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".     

    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.


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.