chat
585 TopicsMicrosoft Teams Bot OAuth login shows blank screen and closes without signing in
I’m building a Microsoft Teams bot using Azure AD OAuth (SSO) with Bot Framework. When I click Sign in, the OAuth popup in Teams shows a blank screen for a moment, then closes automatically without signing me in. What I’ve Done Added redirect URI in Azure App Registration: https://token.botframework.com/.auth/web/redirect Enabled Access tokens and ID tokens in App Registration → Authentication. Configured OAuth connection in Bot Channels Registration (ConnectionName matches my bot code). Verified client ID, client secret, and tenant ID are correct. Code bot.js require("dotenv").config(); const { TeamsActivityHandler } = require("botbuilder"); const { Client } = require("@microsoft/microsoft-graph-client"); const { DialogSet, DialogTurnStatus, OAuthPrompt, WaterfallDialog } = require("botbuilder-dialogs"); require("isomorphic-fetch"); const OAUTH_PROMPT = "OAuthPrompt"; const MAIN_DIALOG = "MainDialog"; class BotActivityHandler extends TeamsActivityHandler { constructor(conversationState, userState) { super(); this.conversationState = conversationState; this.userState = userState; this.dialogState = this.conversationState.createProperty("DialogState"); this.dialogs = new DialogSet(this.dialogState); // OAuthPrompt for Teams SSO this.dialogs.add( new OAuthPrompt(OAUTH_PROMPT, { connectionName: process.env.CONNECTION_NAME, text: "Please sign in to continue", title: "Sign In", timeout: 300000, }) ); this.dialogs.add( new WaterfallDialog(MAIN_DIALOG, [ this.promptStep.bind(this), this.handleFileStep.bind(this), ]) ); this.onMessage(async (context, next) => { const text = (context.activity.text || "").trim().toLowerCase(); const dialogCtx = await this.dialogs.createContext(context); if (text.startsWith("/")) { // ...handle commands... } else { const results = await dialogCtx.continueDialog(); if (results.status === DialogTurnStatus.empty) { if (context.activity.attachments?.length > 0) { await dialogCtx.beginDialog(MAIN_DIALOG, { file: context.activity.attachments[0], }); } else { await context.sendActivity("Upload a file or type /help."); } } } await next(); }); } async promptStep(stepContext) { return await stepContext.beginDialog(OAUTH_PROMPT); } async handleFileStep(stepContext) { const tokenResponse = stepContext.result; if (!tokenResponse?.token) { await stepContext.context.sendActivity("Please sign in to access files."); return await stepContext.endDialog(); } const token = tokenResponse.token; // Use token with Microsoft Graph API // ... return await stepContext.endDialog(); } } module.exports.BotActivityHandler = BotActivityHandler; Problem OAuth popup appears, then closes without completing login. No token is returned to the bot. Questions Why does the OAuth popup in Teams close immediately without signing in? Where can I see detailed error logs for OAuth failures? Azure AD sign-in logs? Application Insights (do I need to configure Instrumentation Key in Bot Service)? Environment Bot Framework v4 (Node.js) Azure Bot Service Microsoft Teams channel Azure AD v2 OAuth71Views0likes2Comments[iOS][Adaptive Card] Issues with Adaptive Card rendering on iOS devices
Hi there, I've encountered some issues with Adaptive Card rendering on iOS devices, although these issues do not appear and work fine on desktop, web, and Android platforms. Issue 1: When specifying the image size within an Adaptive Card, the rendering on iOS devices is inconsistent, resulting in the appearance of an extra blank area. iOS Desktop And the card JSON is: { "type": "AdaptiveCard", "body": [ { "type": "TextBlock", "text": "I am a bot.", "wrap": true }, { "type": "Image", "url": "data:image/png;base64,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AQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE0BgJW4CCgABCEAAAhCAQLoRQGClm0WpDwQgAAEIQAACiRNAYCVuAgoAAQhAAAIQgEC6EUBgpZtFqQ8EIAABCEAAAokTQGAlbgIKAAEIQAACEIBAuhFAYKWbRakPBCAAAQhAAAKJE/i/z497MyAUwwsAAAAASUVORK5CYII=", "width": "600px", "height": "300px" }, { "type": "ColumnSet", "columns": [ { "type": "Column", "width": "stretch", "items": [] }, { "type": "Column", "items": [ { "type": "TextBlock", "text": "Test Bot", "wrap": true, "isSubtle": true, "size": "Small", "weight": "Lighter" } ], "width": "auto", "verticalContentAlignment": "Center" } ] } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.6", "msTeams": { "width": "full" } } Issue 2: The Teams iOS client fails to properly render bold text in markdown when a single TextBlock contains both mention formatting and markdown elements. iOS Desktop Card JSON: { "type": "AdaptiveCard", "msteams": { "entities": [ { "type": "mention", "text": "<at>Zhongfang Zhou</at>", "mentioned": { "id": "29:1hRSk6kciBChF7eND3vFcDpybc1u0u-j4I9sCMr0j9WiD7a7XMGhYtOvCSZZxXQst83aOR_gimo5uEQPDOgP9vQ", "name": "Zhongfang Zhou" } } ] }, "body": [ { "type": "TextBlock", "text": "<at>Zhongfang Zhou</at> Hi, this is the **answer**.", "wrap": true }, { "type": "ColumnSet", "columns": [ { "type": "Column", "width": "stretch", "items": [] }, { "type": "Column", "items": [ { "type": "TextBlock", "text": "Test Bot", "wrap": true, "isSubtle": true, "size": "Small", "weight": "Lighter" } ], "width": "auto", "verticalContentAlignment": "Center" } ] } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.6", "msTeams": { "width": "full" } } Issue3: The Teams iOS client incorrectly renders all markdown text as bold when there are two TextBlocks, one containing mention formatting and the other containing markdown text. iOS Desktop Card JSON: { "type": "AdaptiveCard", "msteams": { "entities": [ { "type": "mention", "text": "<at>Zhongfang Zhou</at>", "mentioned": { "id": "29:1hRSk6kciBChF7eND3vFcDpybc1u0u-j4I9sCMr0j9WiD7a7XMGhYtOvCSZZxXQst83aOR_gimo5uEQPDOgP9vQ", "name": "Zhongfang Zhou" } } ] }, "body": [ { "type": "TextBlock", "text": "<at>Zhongfang Zhou</at>", "wrap": true }, { "type": "TextBlock", "text": "Hi, this is the **answer**.", "wrap": true }, { "type": "ColumnSet", "columns": [ { "type": "Column", "width": "stretch", "items": [] }, { "type": "Column", "items": [ { "type": "TextBlock", "text": "Test Bot", "wrap": true, "isSubtle": true, "size": "Small", "weight": "Lighter" } ], "width": "auto", "verticalContentAlignment": "Center" } ] } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.6", "msTeams": { "width": "full" } }2.1KViews1like6CommentsUnable to Add Tabs to Chats Consistently in Teams via GraphAPI
Expected Behavior: Tabs should be consistently added to chats when using the Graph API, provided all necessary permissions and conditions are met.Description We are encountering an issue when using the Microsoft Graph API to create chats and https://learn.microsoft.com/en-us/graph/api/chat-post-installedapps?view=graph-rest-1.0&tabs=http and https://learn.microsoft.com/en-us/graph/api/channel-post-tabs?view=graph-rest-1.0&tabs=http in Microsoft Teams. While we have the necessary permissions, the process of adding a tab to a chat works intermittently. Sometimes the tab is successfully added, but most of the time it fails, even though the app is installed correctly, with the following error: Failed to execute MsGraph backend request GetUserLicenseDetailsS2SRequest. Workload MsGraph_DirectoryServices. Request Url: https://graph.microsoft.com/v1.0/users/c0cfdd6b-d64d-42e1-8111-0881725f68ff/licenseDetails?$select=skuId,skuPartNumber,servicePlans, Request Method: GET, Response Status Code: NotFound, Response Headers: Strict-Transport-Security: max-age=31536000\r\nrequest-id: c86b5fbd-4224-486b-8f3e-8ad3f561a377\r\nclient-request-id: c86b5fbd-4224-486b-8f3e-8ad3f561a377\r\nx-ms-ags-diagnostic: {\"ServerInfo\":{\"DataCenter\":\"North Europe\",\"Slice\":\"E\",\"Ring\":\"4\",\"ScaleUnit\":\"011\",\"RoleInstance\":\"DB1PEPF00075073\"}}\r\nx-ms-resource-unit: 1\r\nDate: Tue, 22 Apr 2025 09:47:03 GMT\r\n, Reason Phrase: Not Found, Request ID 1F9FFBD00A5F489E9B7CABDCFB857858. Reproduction steps: Create an AAD App registration with required application permissions (to install apps and manage tabs in chats), ie at least the following: TeamsAppInstallation.ReadWriteAndConsentForChat.All TeamsTab.ReadWriteForChat.All Create a Teams application with a static tab with "groupChat" scope Install app in chat: POST https://graph.microsoft.com/v1.0/chats/:chatId/installedApps with body below Add (pin) tab to chat: POST https://graph.microsoft.com/v1.0/chats/:chatId/tabs with body below {"email address removed for privacy reasons" : "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{{AppId}}"} Expected Behavior: Tabs should be consistently added to chats when using the Graph API, provided all necessary permissions and conditions are met. Current Behavior: The process of adding tabs to chats is unreliable. Sometimes the tab is added, but most times, the request fails without clear reasoning. All required permissions appear to be in place since it works occasionally. Note that this issue started to occur at the beginning of the month, around the 8th of April apparently, has anything changed around this date? Also note I also found traces of https://learn.microsoft.com/en-us/answers/questions/2259024/add-tab-to-chat-request-stopped-working-now-it-ret?source=docs in our logs but it is apparently resolved now.389Views2likes11CommentsFailed-Delete Message: Initiator (8:orgid:**) is not allowed to delete message
I am trying to delete a message inside Teams Channel using Graph API, the chat was generated using copilot agent. now i used this action to do the delete:- and this endpoint:- POST /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete but we got this error message:- AclCheckFailed-Delete Message: Initiator (8:orgid:68******3ca) is not allowed to delete message Although the user who run the flow is teams owner + we have this setting enabled to allow owners to delete message:- any advice? Thanks78Views0likes1CommentUse AI to Automatically Translate Messages in Teams Chat
Microsoft Teams is widely used in international organizations, but currently, chat translation requires manual action for each message. I’d love to see an AI-powered feature that automatically translates messages in real time based on user preferences or system-detected language. Suggested Features: Auto-translate messages into the user's default language Option to view original text with one click Support for both 1:1 chats and group/channel conversations Allow users to opt-in/out or customize translation settings Smart detection of language context (e.g., if one person switches to Spanish, the system adapts)155Views0likes1CommentHow to Download Video Clip from Microsoft Teams Programmatically
I’m developing a bot app for Microsoft Teams, and part of its functionality involves handling videos recorded using the Teams widget(see screenshot attached). I am receiving a video clip link in the bot app's backend message. Where is this video file uploaded and how can I download the video clip using that link? I have attempted the SSO auth via Entra ID to fetch the auth token and attached it against the GET request to the video clip link as the bearer token. But still getting 401 errors? Need help and guidance in this matter. Thanks.275Views0likes6CommentsBot send individual chat to User
Hi Teams, I have Teams tab app and bot using TeamsActivityHandler (Typescript), and I have a logic is MS Bot will send private messages to user (It appears as a chat between bot and user) from Channel when I send a message with command Ex: In the Channel (team) have 5 members, when I send command like "MessageAllMembers", MS Bot will send individual message for each member (not Can you help me how to implement this logic or document about it? Thank so much1.5KViews0likes9CommentsAzure Function Not Sending Response Back to Teams Bot – Integration Issue
Azure Function Called by Teams Bot – Triggered Successfully but No Response in Web Chat We are integrating a Microsoft Teams Bot (C#) with an Azure Function (Python). While the Azure Function gets triggered successfully, we are not receiving any response back in Web Chat or Teams. What We Have Done: Teams Bot (C#) is running locally in Visual Studio. We added code to call the Azure Function using HttpClient: What We Have Done: Bot Framework Bot (C#) is running locally via Visual Studio (on ports 7130/5130). We’ve added this code to call the Azure Function: var httpClient = new HttpClient(); var response = await httpClient.PostAsync( "https://<function-url>/api/Foundarybasic", new StringContent(JsonConvert.SerializeObject(turnContext.Activity), Encoding.UTF8, "application/json") ); Azure Function (Python) is deployed and logs show that it receives the request and processes it correctly: ( I tested this from Power Automate getting Proper Response) @app.route(route="Foundarybasic", auth_level=func.AuthLevel.ANONYMOUS) def Foundarybasic(req: func.HttpRequest) -> func.HttpResponse: logging.info("Function triggered") data = req.get_json() user_text = data.get("text", "No message") reply = { "type": "message", "text": f"Echo: '{user_text}' — Azure Bot integration is working!" } return func.HttpResponse(json.dumps(reply), mimetype="application/json", status_code=200) Problem: Azure Function logs show it receives and processes the request correctly. However, nothing shows up in Web Chat or Teams client. No error messages or failed HTTP codes are observed. We want the Teams Bot to call the Azure Function and relay its response back to the user, like an echo bot Is there a required structure for the response that the Bot Framework expects from an external HTTP call? Does the bot need to manually send the Azure Function's response back using turnContext.SendActivityAsync(...)? Are there any known working patterns or best practices for calling Azure Functions from a Teams Bot? Any help, samples, or suggestions would be greatly appreciated! Thanks!90Views0likes1CommentQuestions About Alternatives to Multi-Tenant Bots After July 31, 2025 Deprecation
Hello, As the ability to create multi-tenant bots in Azure will be discontinued after July 31, 2025, I’d like to ask if there are any viable alternatives available now? If I create a single-tenant bot and publish it to the Teams App Store, will users from other tenants still be able to interact with the bot? Additionally, will the bot be able to access their basic user profile information (only user name and aadObjectId) and conversation data? From my understanding, access tokens obtained using the client ID and client secret are tenant-scoped, meaning they are not valid across other tenants. As a result, the bot cannot access user information such as profile photos or email addresses from users in other tenants — is that correct? I'd really appreciate any clarification or recommended best practices on this. Thank you!708Views0likes2CommentsCustom Teams AI Bot does not have attachment button
My team is developing a custom teams AI bot that allows for file uploads. When testing this feature using the edge and chrome debugging, the attachment button does not appear, or it will appear for a moment and then disappear. This seems to be an ongoing issue, and we would like to know if it has a simple remedy or if this problem needs to be escalated to Microsoft Engineers. Please see the following Microsoft developer forum topic discussing the same issue: https://techcommunity.microsoft.com/discussions/teamsdeveloper/file-upload-option-disappearing-in-teams-bot/4397456 My Manifest.json: Sensitive data has been removed "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.19/MicrosoftTeams.schema.json", "manifestVersion": "1.19", "version": "2.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { "name": "", "websiteUrl": "", "privacyUrl": "", "termsOfUseUrl": "" }, "icons": { "color": "", "outline": "" }, "name": { "short": "", "full": " " }, "description": { "short": "s", "full": "$[file('description.txt')]" }, "accentColor": "#005DAB", "bots": [ { "botId": "${{BOT_ID}}", "scopes": [ "personal", "team", "groupChat" ], "supportsFiles": true, "isNotificationOnly": false, ... }155Views0likes3Comments