Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs
Hi Matthew Dewstowe,
Welcome to Microsoft Q&A Forum! Have a good day and I hope you're doing well!
First off, huge congratulations on securing your first Enterprise customer! Moving from development to a live enterprise tenant is a major milestone. Dealing with IT governance and security policies can definitely be tricky compared to the dev environment, but based on my research and experience with Teams deployments, here are some insights to help you navigate this rollout.
Since your app involves real-time media (WebRTC/Video), the configuration of the bot's identity within the tenant is critical to ensure it isn't blocked by standard meeting security policies.
Here are the specific answers to your questions:
1. Does this need to be in the App Store? No. For a specific enterprise client, you do not need to go through the public App Store validation process.
You should provide the customer with the app package (.zip file). Their IT Admin can perform a "Private Install" by uploading it as a Custom App in the Teams Admin Center (Teams apps > Manage apps > Upload new app). This keeps the app secure and visible only to that specific organization.
Reference: Manage custom apps in Microsoft Teams admin center
2. Can we configure which users get access? Yes, absolutely. Enterprises rarely roll out a new tool to everyone at once.
This is handled via App Permission Policies in the Teams Admin Center. The Admin can create a policy that "Allows" your specific app and assign that policy only to the pilot users (or specific departments). Other users won't even see the app in their catalog.
Reference: Manage app permission policies in Microsoft Teams
3. How do we control if a meeting has the lobby on? Can bots navigate this? To be clear: Bots cannot "navigate" or interact with the lobby interface autonomously. They cannot "click" a button to request entry; they are either admitted by a human or allowed to bypass based on their identity.
To ensure your bot joins automatically without getting stuck, you need to configure its Identity and Permissions:
The Identity Factor: If your bot joins as an "anonymous" guest, it will almost always be stuck in the lobby. You should configure the bot with a Resource Account within the customer's tenant and associate it with your app’s Application ID. This treats the bot as an "Internal User" (Trusted App).
Graph API Permissions: If you are using Graph APIs for the bot to join (e.g., POST /communications/calls), ensure you have granted the application-level permission: Calls.JoinGroupCall.All. This is a high-privilege permission that allows the bot to join meetings directly.
Meeting Policies: Even with the right identity, the bot is subject to the Meeting Policies set by the Admin. The "Who can bypass the lobby" setting should be configured to "People in my organization". If your bot is configured as an internal resource account, it will bypass the lobby automatically.
References:
Register calls and meetings bot for Microsoft Teams
Graph API: Create call / Join meeting
Manage resource accounts for service numbers
Manage who can present and request control in Teams meetings and webinars
Hope this helps, at least partially. Good luck with the rollout! Let me know if you need further clarification on the Resource Account setup.
If the answer is partially 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.