Repository navigation
Proposal: optional Microsoft Teams provisioning helper (Entra app, Azure Bot, app package via az CLI) #18304
EldarPolitkin
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Short version. Setting up the Teams chat connector is the longest manual setup of all the chat providers. We run a script that does it with the Azure CLI for our own bots, and we would like to contribute a generic version. We will not write any code until a maintainer says whether this fits and where it belongs.
Problem
doc/plans/chat-adapters/2026-09-04-chat-adapters-minimum-setup-v6.mdsays "No provisioning helper is part of the shipped path" for Teams. Today an operator does all of this by hand, in three Microsoft portals:<public origin>/api/chat-webhooks/<publicId>/microsoft-teams.personal/team/groupChatscopes, the RSC entriesChannelMessage.Read.GroupandChatMessage.Read.Chat,webApplicationInfo), then download or upload it.Every value has to match in three places. The Teams live-qualification record shows that a wrong or missing
webApplicationInfobinding is easy to get wrong. Slack has one manifest URL for the same job.What the helper does
A non-interactive command that drives the operator's own signed-in
azCLI and does steps 1 to 3 in one go:manifest.jsonbuilt from the same field map the setup wizard already shows, plus the two icons) to a path the operator picks, ready for custom upload or admin publication,Possible CLI shape (open to whatever fits your CLI conventions):
--dry-runprints theazcalls it would make, so an admin can review them or hand them to someone with the rights.What the operator still needs
az loginas a Microsoft 365 work/school account that may register applications (or an admin to run it).How it fits the current Teams docs and connector
clientId,tenantId,clientSecret) or the setup wizard. The helper only produces the same three values and the same manifest block the wizard already documents.scripts/, a separate package, or a plugin. We read CONTRIBUTING's guidance to prefer the plugin system for extensions, and we are happy to go that way.Alternatives considered
atk provision): heavy, wants its own project layout, and its token cache fails under conditional-access MFA policies in a way the plainazlogin does not.azas the operator.Proof plan for the PR (if you agree)
azrunner faked: the exact command sequence, re-run idempotency, dry-run output, and that the secret never reaches stdout or a log.client_credentialstoken minted forhttps://api.botframework.com/.defaultwith the new secret, the zip accepted by Teams custom upload, and one message round trip through the connector. The inbound round trip depends on the open Teams webhook 401 (Microsoft Teams webhooks rejected with 401 in authenticated mode (actorMiddleware consumes Bot Framework Bearer before chat-webhook handler) #13468, fix in fix(auth): delegate canonical Teams webhooks to provider authentication #15185).Related
We have the Azure CLI version running in production for several bots and would port it to TypeScript (or keep it a script) as you prefer. Questions: does this fit the roadmap, and where should it live (CLI command,
scripts/, plugin, or not upstream at all)?All reactions