Microsoft Teams Beta
Developer notes for the Teams upstream connector: how Triage’s diagnostic runs as a bot in Teams, rendered with Adaptive Cards and authenticated with Microsoft Entra ID. This documents the platform surface the Intake Gateway builds on — the gateway itself is in How upstream connectors work.
The public platform facts the Intake Gateway’s Teams renderer relies on, each grounded in Microsoft’s developer documentation (see Developer references).
| Bot runtime | An Azure Bot resource on the Bot Framework; the bot exposes a single HTTPS messaging endpoint that receives Bot Framework Activity objects. |
|---|---|
| App package | A Teams app package (manifest.json plus colour and outline icons) declaring a bot in personal scope, published to the tenant’s org catalog or side-loaded as a custom app; distribution is governed by Teams admin policy. |
| Authentication | Single sign-on with Microsoft Entra ID — the user is already signed in to Teams, and the bot obtains a token via OAuth 2.0 on-behalf-of exchange, with no separate login. |
| Question rendering | Adaptive Cards. Teams supports Adaptive Card v1.5 or earlier for bot-sent cards; the Teams mobile app supports up to v1.2, so the gateway targets a mobile-safe subset. |
| Inputs & submit | Input.ChoiceSet for the answer options, Action.Submit to post the answer back to the bot, and Action.OpenUrl for the deep link on the completion card. |
| Lock in place | The bot edits the message it sent (update activity), replacing the question card with a locked card that has no input elements — the ‘answers lock, no back button’ property, enforced structurally. |
| Back-sync | Proactive messages let the bot post into the thread after the fact (the deep link once composerID’s publish receipt lands, or an enrichment request), using a stored conversation reference. |
| Tenancy | One admin consent per tenant authorises the app and its Entra permissions; per-tenant diagnostic configuration lives in Triage, not in the app package. |
| Step | What happens on the platform |
|---|---|
| 1 | The requester opens the Triage bot (personal scope). Teams delivers a Bot Framework message Activity to the gateway’s HTTPS messaging endpoint. |
| 2 | The gateway performs Entra ID SSO token exchange to obtain the requester’s verified identity — silently, because they are already signed in to Teams. |
| 3 | The gateway sends the first question as an Adaptive Card (Input.ChoiceSet + Action.Submit). |
| 4 | On submit, Teams posts the answer Activity; the gateway updates the same message to the locked card and sends the next question. |
| 5 | On the final answer the gateway calls the Triage decision core; the Intent Record is minted and the completion card (channel, confidence, intent:// chip) is sent. |
| 6 | When composerID publishes downstream, a proactive message updates the completion card with an Action.OpenUrl deep link to the created record. |
Microsoft’s official Teams developer documentation. The facts on this page are grounded in these pages and in the vendor-published docs repository (MicrosoftDocs/msteams-docs).
| Reference | Vendor documentation |
|---|---|
| Teams developer platform | https://learn.microsoft.com/en-us/microsoftteams/platform/mstdd-landing |
| Bots — what are bots | https://learn.microsoft.com/en-us/microsoftteams/platform/bots/what-are-bots |
| Cards reference (Adaptive Card versions) | https://learn.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference |
| SSO with Microsoft Entra ID | https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/authentication/bot-sso-overview |
| Send proactive messages | https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages |
| App manifest schema | https://learn.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema |
| Adaptive Cards | https://adaptivecards.io/ |
The gateway’s Teams renderer and its contract tests live in upstream/teams_cards.py in this repository — see the reference implementation.