@frogbotai/piece-microsoft-teams connects an agent to Microsoft Teams through an Azure Bot. Mention the bot in a channel or group chat, or message it in a personal chat, and the agent replies in the same conversation. When the agent uses the question tool, participants answer on an Adaptive Card in the conversation.
Connect an agent
microsoft-teams. Give each instance its own slug when you connect more than one bot.
See factory options for
slug, auth, oauth, and scopes.
Register the bot
- In Azure, create an Azure Bot with a Microsoft Entra application. Record the application ID as
appIdand create a client secret forappPassword. - Match the bot type to the Entra application. FrogBot defaults to multi-tenant. For a single-tenant bot, which works only in its own tenant, set
botAppType: 'SingleTenant'andbotTenantIdto that tenant’s ID. - Set the bot’s Messaging endpoint to
https://your-app.example.com/api/webhooks/<instance>. Messages, card submissions, and installs all arrive at this URL. - Under Channels, add Microsoft Teams.
401.
Install the Teams app
A Teams app manifest links your Azure Bot to Teams. Add abots entry with the same application ID and the scopes you want:
Who can answer
FrogBot looks up the person who submits a card in the conversation’s member list, the same list Teams uses for @mentions, and reads their email address. It matches that address to a FrogBot user, then runs the agent’saccess check for that user. Anyone who passes can answer, including a teammate who did not start the conversation. Being a member of the Teams channel is not enough on its own.
A person without access gets a private notice, and the question stays open. People whose Teams account has no email, such as some guest accounts, have no FrogBot user; the default agent access denies them with a notice saying their account could not be matched. Write an access function if unmatched people should be able to answer.
The member lookup needs no Microsoft Graph permission. If it fails, FrogBot uses the profile Teams cached from the person’s earlier messages, and then Microsoft Graph, which works only if you granted the bot’s application the User.Read.All application permission.
What participants see
Every question in a call appears on one card with Submit and Dismiss buttons.
Option descriptions appear after the option’s label. Questions, options, and typed answers appear exactly as written; Markdown is not formatted. A typed answer replaces the choice on a one-choice question and is added to the choices on a several-choice question. When a question does not allow a typed answer, Teams asks for a choice before it sends the card.
When the agent asks several questions in separate calls, FrogBot posts one card at a time and posts the next card after the current one is answered.
After an answer, the card is replaced in place with each question, the answer, and
Answered by <name>, and the agent continues in the same conversation. Dismiss replaces the card with Dismissed by <name> and stops the turn. The first answer wins.
Questions are answered only in Teams. The FrogBot admin chat shows the conversation read-only.
Notices about access and late answers are Teams targeted messages in channels and group chats, which only the person they are for sees. In a personal chat, where only you and the bot are present, they are ordinary messages. If Teams cannot deliver a notice, FrogBot logs the failure and the card stays as it was.
Supported clients
Cards use Adaptive Cards 1.5, which current Teams clients support. FrogBot checks every submission itself, so a client that skips a required-choice check still gets a clear message on the card.Limits and failures
FrogBot acknowledges a card submission once it has recorded the answer and updated the card. The agent’s next step runs as a job, so a slow model does not delay the submission.