Forum Widgets
Latest Discussions
app.Context.channel.displayName not working
Hi, We have a tab application which is added the new teams channel where we read channel name through TeamsJS SDK . We could see app.Context.channel.displayName returning "General" as channel name for the first channel created in Teams and not returning actual value. Need your help on this Thanks, MithunMithunK2165Sep 19, 2025Copper Contributor624Views0likes7CommentsDeeplink Navigation Issue in Published MS Teams Custom App on Mobile Devices (iOS & Android)
Description: We are experiencing an issue with navigation in our published MS Teams custom app. The app has a Tab with personal scope and a Bot. The problem arises for a few users (mostly on iOS devices) when they navigate to the Tab from the chat section of the Bot by clicking on a button that deeplinks to the Tab. Expected Behavior: The button click should trigger the deeplink and open the designated Tab and the specific page within the Tab in MS Teams app. Actual Behavior: iOS devices display an error message "Link not Supported. You can't open this link on the mobile app. Please open it on the desktop or web app." Android devices successfully open the Tab, but navigate to the default home page instead of the intended page within the Tab. Error Message: Details: The navigation works perfectly on the Desktop App and Web Browser. Sample Deeplink Used: let obj = { "params": paramsObj, "subdomain": subdomain, "pageRoute": "home" }; let subEntityId = { "subEntityId": obj }; var encodedWebUrl = ""; var encodedContext = encodeURI(JSON.stringify(subEntityId)); let tabUrl = "https://teams.microsoft.com/l/entity/" + manifestObj.id + "/agentTabId?webUrl=" + encodedWebUrl + "&label=entityLabel&context=" + encodedContext; cardObj = { ... { title: 'Open in Tab', type: 'Action.OpenUrl', url: tabUrl, } ... } Request: We need assistance in resolving this issue to ensure smooth navigation for all users, especially on iOS devices. Additionally, we need guidance on ensuring that Android devices navigate to the correct page within the Tab rather than the default home page. Thank you for your support.santhosh_sjSep 18, 2025Copper Contributor704Views0likes9CommentsSide-panel Teams meeting app becomes unusable but stays open/visible when user joins a breakout room
I am working with a side-panel Teams meeting app. A customer noticed behavior that I have been able to replicate but have not found an explanation for, or a way to prevent. Issue summary When a user has a side panel app open, and the user is pushed into a Teams meeting breakout room, the side panel app remains open/visible but the app content disappears (making the app unusable). Replicating this behavior 1. User has app open in Teams meeting side panel. In the below screenshot, note that the app is listed in the interface (red circle), and open in the side panel. 2. User is pushed into a breakout room. The user does not interact with the interface and is automatically pushed into a breakout room. 3. Upon joining the breakout room, the app appears to remain open in the side panel, but the content disappears. In the below screenshot, note that: The side panel app content is now empty/blank. The app icon disappears from the Teams meeting interface (red circle). This is expected, but just want to note that the app is not attached to the breakout room at all. Thoughts My understanding is that apps don't carry over from the main Teams meeting into breakout rooms (though apps can still be added inside of breakout rooms), so the curiosity here is why the side panel app remains open when moving from the main room to a breakout room. And one more interesting note — using the three dots and "Reload" on a side panel app gets the app to reload and work again inside the breakout room, despite the app not being listed as an interface tab within the breakout room. I don't necessarily need the app to remain usable as a user joins a breakout room, but I am wondering what's going on here with the app remaining open/visible.dave990Sep 18, 2025Copper Contributor197Views0likes4CommentsCan I create an Azure Key Vault from a Teams app in the customer’s tenant?
Hi everyone, I’m building a Teams app and want to support this flow: A customer admin opens the app and sees a setup dialog. They enter subscription/resource group details. The app then creates a new Azure Key Vault in the customer’s tenant. My questions: Is it feasible for a Teams app to create a Key Vault in the customer’s tenant? What is the recommended way to request the necessary permissions? (e.g., Azure AD OAuth2 consent for ARM API access?) Or is best practice for the customer to create the Key Vault themselves and just grant my app access? Thanks!muradqr5hSep 17, 2025Copper Contributor70Views0likes1CommentcallRecord.id no longer matches call.callChainId — how to link live calls to call records?
I’m tracking information about live Teams meetings while they’re in progress. Each live meeting (call) has a call.id that I use to uniquely identify and store data in my database. Once the call ends, I query the communications/callRecords endpoint to retrieve metadata about that call. My expectation was to use some stable identifier to link the live call to its corresponding call record, but this is where things break down. Previously, I found that call.callChainId from the live call object matched the callRecord.id from the callRecords endpoint. That made it really easy to link the two. But recently, this seems to have changed — the callRecord.id is now different from both the call.id and the call.callChainId, making it impossible to reliably connect my in-call data with the post-call metadata. What I’m trying to figure out: Is there any stable property in the live call object (besides id or callChainId) that also shows up in the callRecord so I can match them? Meeting URL doesn’t work for my use case because it’s the same for recurring meetings. I’m already listening for call record change notifications and processing them — the issue is linking them back to the original live call I tracked. Any guidance on this would be super helpful. Has the meaning or behavior of callChainId changed recently? Is there another identifier I can depend on? Thanks!daraASep 16, 2025Copper Contributor102Views0likes4CommentsMicrosoft 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 OAuthshivanandan17Sep 16, 2025Copper Contributor103Views0likes2CommentsSince Aug 22nd we can't save any Side Panel tabs
Hello! Yesterday (Aug 22nd 2025) we got an update in our Teams Links that we normally share to start meetings. They were modified from this format: https://teams.microsoft.com/l/meetup-join/19%3ameeting_XXXXXXXXXXXXXXX%40thread.v2/0?context=%7b%22Tid%22%3a%22xxxxxxxxxxxx%22%2c%22Oid%22%3a%22xxxxxxxxxxxxxx%22%7d to https://teams.microsoft.com/meet/00000000000?p=XXXXXXXXX Sensitive values and ids have been redacted above and inside all the snippets in this post. This looks like a planned rollout, as specified here: https://mc.merill.net/message/MC772556 After this change, none of our apps are able to save a side panel into any of the meetings with the new link format. We had a couple of older, still available meetings whose link had the previous format, and we are able to save the side panel there, but no matter what we tried, nothing allowed us to solve this situation on our end. My final resort is this post in hopes of a solution to what we see. Each save operation yields a 500 on this call https://teams.microsoft.com/api/chatsvc/amer/v1/threads/19%3Ameeting_XXXXXXXXXXXXXXXXXX%40thread.v2/properties?name=tab%3A%3Axxxxxxxxxxxxxxxx { "errorCode": 500, "message": "{\"subCode\":\"TabOperationFailed\",\"details\":\"Initiator 8:orgid:xxxxxxxxxxxxxx failed perform tab operation\",\"errorCode\":1500,\"errorSubCode\":null}", "standardizedError": { "errorCode": 1500, "errorSubCode": 1, "errorDescription": "TabOperationFailed-Initiator 8:orgid:xxxxxxxxxxxxxx failed perform tab operation" } } I ended up trying to manually install it with graph api calls, which didn't work either and gave me a 502 curl -s -X POST "https://graph.microsoft.com/v1.0/chats/$CHAT_ID/tabs" \ -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \ -d '{ "displayName": "DisplayName", "email address removed for privacy reasons": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/'"$TEAMS_APP_ID"'", "configuration": { "entityId": "entity-random", "contentUrl": "https://<domain>/?theme={theme}&locale={locale}", "websiteUrl": "https://<domain>/" } }' | jq . { "error": { "code": "BadGateway", "message": "Failed to execute backend request.", "innerError": { "date": "2025-08-22T03:36:08", "request-id": "b4bbade7-1ea2-46df-a1d9-92cdda9e360b", "client-request-id": "b4bbade7-1ea2-46df-a1d9-92cdda9e360b" } } } Then, thinking there was something wrong with my app, I used a MS app, same result curl -s -X POST "https://graph.microsoft.com/v1.0/chats/$CHAT_ID/tabs" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "displayName": "Website - test", "email address removed for privacy reasons": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/com.microsoft.teamspace.tab.web", "configuration": { "entityId": null, "contentUrl": "https://www.microsoft.com", "websiteUrl": "https://www.microsoft.com" } }' | jq . { "error": { "code": "BadGateway", "message": "Failed to execute backend request.", "innerError": { "date": "2025-08-22T04:02:36", "request-id": "ece5590e-f23f-4780-a4a6-20c1b2f0d0f3", "client-request-id": "ece5590e-f23f-4780-a4a6-20c1b2f0d0f3" } } } I then tested it against chats that do not belong to a meeting. Both apps succeeded curl -s -X POST "https://graph.microsoft.com/v1.0/chats/$REGULAR_CHAT_ID/tabs" \ -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \ -d '{ "displayName": "Website - test", "email address removed for privacy reasons": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/com.microsoft.teamspace.tab.web", "configuration": { "entityId": null, "contentUrl": "https://www.microsoft.com", "websiteUrl": "https://www.microsoft.com" } }' | jq . { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#chats('19%3xxxxxx_xxxxxxxxxxxx%40unq.gbl.spaces')/tabs/$entity", "id": "a0cca657-12d0-4df0-84d8-cc1f8fa7d3e6", "displayName": "Website - test", "webUrl": "https://teams.microsoft.com/l/chat/19%xxxxxxxxx_XXXXXXXXX%40unq.gbl.spaces/tab%3a%3xxxxxxxxxxxxxxxxxxxxxx?webUrl=https%3a%2f%2fwww.microsoft.com&label=Website+-+test&tenantId=xxxxxxxxxxxxxxxxxxx, "configuration": { "entityId": null, "contentUrl": "https://www.microsoft.com", "removeUrl": null, "websiteUrl": "https://www.microsoft.com" } } curl -s -X POST "https://graph.microsoft.com/v1.0/chats/$REGULAR_CHAT_ID/tabs" \ -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \ -d '{ "displayName": "redacted", "email address removed for privacy reasons": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/'"$TEAMS_APP_ID"'", "configuration": { "entityId": "redacted", "contentUrl": "https://<domain>/?theme={theme}&locale={locale}", "websiteUrl": "https://<domain>/" } }' | jq . { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#chats('19%3xxxxxxxxxxxxx_xxxxxxxxxxxxx%40unq.gbl.spaces')/tabs/$entity", "id": "xxxxxxxxxxxxxxxxxxxxxx", "displayName": "redacted", "webUrl": "https://teams.microsoft.com/l/entity/<redacted>/_djb2_msteams_prefix_000000000?webUrl=https%3a%2f%2f<domain>%2f&label=redacted+label&context=%7b%0d%0a++%22context%22%3a+%22chat%22%2c%0d%0a++%22chatId%22%3a+%2219%3axxxxxxx_xxxxxxxxx%40unq.gbl.spaces%22%2c%0d%0a++%22subEntityId%22%3a+null%0d%0a%7d&tenantId=xxxxxxxxxxxxxxxx", "configuration": { "entityId": "redacted", "contentUrl": "https://<domain>/?theme={theme}&locale={locale}", "removeUrl": null, "websiteUrl": "https://<domain>/" } } At this point we don't know what else to do, seems like a meeting specific issue that we are unable to solve. It's affecting our tenants in all environments, since our primary business flow relies on this panel. All the snippets contain real dates and request-ids, here's hoping it helps somehow. Help, and thanks in advance. ~A. del YerroAdelYerroSep 15, 2025Copper Contributor575Views4likes9Comments[Adaptive Card] Issue with rendering images and ToggleVisibility
I am using a simple accordion style adaptive card with a collapsible section: { "type": "AdaptiveCard", "$schema": "https://adaptivecards.io/schemas/adaptive-card.json", "version": "1.5", "body": [ { "type": "Container", "items": [ { "type": "ColumnSet", "columns": [ { "type": "Column", "items": [ { "type": "TextBlock", "text": "Title", "wrap": true, "size": "Medium" } ], "width": "stretch" }, { "type": "Column", "id": "chevronDown", "spacing": "Small", "verticalContentAlignment": "Center", "items": [ { "type": "Image", "url": "https://adaptivecards.io/content/down.png", "width": "20px", "altText": "collapsed" } ], "width": "auto" }, { "type": "Column", "id": "chevronUp", "spacing": "Small", "verticalContentAlignment": "Center", "items": [ { "type": "Image", "url": "https://adaptivecards.io/content/up.png", "width": "20px", "altText": "expanded" } ], "width": "auto", "isVisible": false } ], "selectAction": { "type": "Action.ToggleVisibility", "targetElements": [ "cardContent", "chevronUp", "chevronDown" ] } }, { "type": "Container", "id": "cardContent", "isVisible": false, "items": [ { "type": "Container", "items": [ { "type": "TextBlock", "text": "Text" } ] } ] } ], "separator": true, "spacing": "Medium" } ] } On the initial load, the image (down arrow) gets rendered properly. If I click on it, the collapsed section opens (and the down arrow gets hidden and replaced by the up arrow). However, if I collapse the accordion again, the following happens: And it stays like this until I restart the Teams client. Looking at the devtools network tab for the web client the following behavior can be observed: During the initial load (1) the down.png gets fetched and stored in memory. You can also see the result on the right. If I extend the component (2), the up.png gets fetched and stored in memory. If I then collapse the section again (3), the call to memory for the down arrow fails with GET blob:https://teams.microsoft.com/51e89b2e-7da4-4c80-bf98-a6ee4d257052 net::ERR_FILE_NOT_FOUND It happens in both the standalone client and the web version. Also for multiple users (so it is not just some caching issue on my side). It seems to me that toggling the visibility somehow removes the images from memory. But it only happens for images that are initially visible (it doesn't happen for the up arrow in my case).nscharmacherSep 12, 2025Copper Contributor110Views0likes1CommentHow to resolve "Failed to submit this app" error?
Hi Team, Just from Today, while submitting teams custom app via Developer Portal, error "Failed to submit this app." started to occur. I have tried with below condition but this error always occurs. Error also occurs on the app which we can submit update till yesterday. What is happening and how can we resolve it? (from this error message, we couldn't guess anything about the reason..) Checked: ・Publish from outside Developer Portal (apps > manage apps > send app to organization) succeeded so seems Developer Portal related Issue. ・For all apps, no validation error in "Publish to store" is found. Manifest itself seems to be fine. ・Create new custom app with minimum configuration and publish but failed with same error. ・Tried publish from both Teams client and Browser but failed with same error. ・Try same operation with different tenant but failed with same error.yuu113Sep 12, 2025Copper Contributor14KViews0likes27CommentsCan't publish app to my org
I'm trying to publish my app to my org without success, don't know how to proceed. I've tried to publish from teams and from dev.teams portal. I already did the app validation but couldn't resolve the issue. When I'm trying to do that from Teams App I get the error: This app cannot be found. When I'm trying to do it from https://dev.teams.microsoft.com/ I'm get the error Failed to submit this app, reviewing the request I notice the publishing request got the following response: { "error": { "code": "BadRequest", "message": "BadRequest", "innerError": { "code": "BadRequest", "date": "2025-01-25T14:45:20", "request-id": "582ba....", "client-request-id": "582ba415...." } } }pedroivo_frestonSep 12, 2025Copper Contributor310Views1like6Comments
Resources
Tags
- microsoft teams1,748 Topics
- developer1,355 Topics
- meetings234 Topics
- Chat229 Topics
- Administrator148 Topics
- Settings112 Topics
- Calling106 Topics
- files68 Topics
- teams56 Topics
- devices52 Topics