Forum Widgets
Latest Discussions
Is there any way to open "Go to website" menu at the top right of Teams Desktop
I'm developing Teams Static Tab app. We have to provide an extra program to handle voice media. However, in Teams Desktop on Mac, it's not possible by our testing. In addition, I tried to open a small browser window to provide the extra program download link. It's also not possible in Mac. So, If I can successfully download the extra program by using "Go to website" menu. For better user accessibility, we want to open the website like clicking "Go to website" menu. Then, user can easily download the program by using our separate a download menu in Static Tab app For this, is there any API, SDK to open "Go to website" by Tab app with Javascript. Many thanks BHbyungheesohnDec 11, 2024Brass Contributor19Views0likes1CommentTeam app tab to automatically added to meetings, channel and chat
Hi I am developing a teams app tab and uploaded the package zip to "Manage your apps" in Apps. I can only add my developed tab on the selected channel, group chat, and meetings. I wonder if there's a way to automatically make my developed tab available already to channel, group chat, and meetings once installed so we don't have to add this manually. Here's my sample manifest.json. Hope someone could help me please { "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.17/MicrosoftTeams.schema.json", "manifestVersion": "1.17", "version": "1.0.0", "id": "18317651-f9ac-4a8a-9457-3a81feab80e9", "developer": { "name": "TestDev", "websiteUrl": "https://www.example.com", "privacyUrl": "https://www.example.com/privacy", "termsOfUseUrl": "https://www.example.com/termsofuse" }, "icons": { "color": "color.png", "outline": "outline.png" }, "name": { "short": "sample tab - local", "full": "sample tab - POC" }, "description": { "short": "sample tab - POC", "full": "Proof of concept for adding a tab application to teams group chat, channel, or meeting" }, "accentColor": "#FFFFFF", "bots": [], "composeExtensions": [], "configurableTabs": [], "staticTabs": [ { "entityId": "index", "name": "sampleTab", "contentUrl": "https://localhost:1010/tab", "websiteUrl": "https://localhost:1010/tab", "scopes": [ "personal", "groupChat", "team" ], "context": [ "personalTab", "channelTab", "privateChatTab", "meetingChatTab", "meetingDetailsTab", "meetingSidePanel", "meetingStage" ] } ], "permissions": [ "identity", "messageTeamMembers" ], "defaultInstallScope": "team", "defaultGroupCapability": { "meetings": "tab", "team": "bot", "groupchat": "bot" }, "validDomains": [ "localhost" ] }markngoDec 10, 2024Occasional Reader10Views0likes1CommentHow To Trigger App Reinstallation
What is the best way to handle a failure to write to the ConversationReferenceStore? For example, let's say a user installs my app and then one of two situations happen: The ConversationReference was lost due to a storage failure (json file is lost or an older backup is restored) The bot fails to successfully write the ConversationReference to the store. Right now the only way I know to deal with this is to have the user uninstall the app in teams and then re-add it? But they don't seem to have a way to know they would even need to do this without me manually checking the ConversationReferenceStore. Is there a better way to handle this situation?aellingtonDec 10, 2024Occasional Reader9Views0likes1CommentHow to enable a Microsoft Teams bot to work in private channels?
We have developed a bot for Microsoft Teams that can send messages to: Team members' personal chats Public channels within the team However, when we attempt to install the bot in a private channel, we encounter the following error: "App isn't supported in the private channel. Select another channel." We would like to enable our bot to: Be installed in private channels. Send messages in the private channel where it is installed. Send messages to team members who are part of that private channel. Is there a way to configure the bot or update its app manifest to support private channels? If so, what steps are required? Are there any limitations or additional permissions needed to achieve this?63Views0likes3CommentsMicrosoft Teams Payment Gateway Error: 'Rejected. ,[object Object]' - How to Resolve?
I'm facing an issue where customers are unable to make payments through Microsoft Teams. Here's the error message they see: We can't charge this payment method due to an issue on our end. Try another payment method or contact support and mention error code: Rejected. ,[object Object] (CV: M4JNvCMLrmPAb7vV.0.0) Steps I’ve Taken to Troubleshoot: Cleared Teams cache. Used the new Teams desktop app. Tried reproducing the issue in browser incognito mode. Added a different credit card. Findings: The issue persists across different environments and with new payment methods. A support engineer confirmed (Tracking ID: #2410100060001473) that the issue is with the payment gateway for third-party apps in Teams. I uploaded the HAR file to the portal under Case #2409110040002919 for further investigation. Additional Context: Our credit card works perfectly for other purchases within Azure Portal and Admin Center. This issue has been unresolved for over two months, despite multiple follow-ups. Does anyone know how to address or bypass this issue with the payment gateway for third-party apps on Microsoft Teams? Any guidance would be much appreciated.VipassanaMahaleDec 04, 2024Copper Contributor44Views0likes2CommentsSide-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.dave990Dec 03, 2024Copper Contributor71Views0likes3CommentsTeams Bot vs. Azure Bot
Hi, What is the differences between the Bot what you can setup on Teams' Development Portal and Azure Bots? Azure Bot's requires response group. But Bots from development portal seems to not requiring that. Is the development portal only way to setup such a bots, or should I be able to setup those bots from some other way as well?Petri-XDec 03, 2024Bronze Contributor20Views0likes1CommentCannot navigate to newly created channel tab by Graph API
Description: We are experiencing an issue with navigation in our published MS Teams custom app. The app is published to the org catalog. We are using microsoft/teams-js and teamsfx to implement a "Create Tab" user experience. The problem is that after the tab is successfully created, we use the pages.navigateToApp to open the tab and in some cases the navigation fails. The code snippet we use to create the tab looks like as follows: export class GraphClient { credential: TeamsUserCredential; client: Client; constructor(clientId: string, initiateLoginEndpoint: string) { this.credential = new TeamsUserCredential({ clientId, initiateLoginEndpoint, }); const authProvider = new TokenCredentialAuthenticationProvider(this.credential, { scopes }); this.client = Client.initWithMiddleware({ authProvider: authProvider, }); } async getTeamsApp(externalId: string): Promise<{ id: string; externalId: string; displayName: string; distributionMethod: string; } | null> { const response = await this.client.api('/appCatalogs/teamsApps').filter(`externalId eq '${externalId}'`).get(); return response['@odata.count'] === 0 ? null : response.value[0]; } async getTeamsInstalledApp( teamId: string, teamsAppId: string ): Promise<{ id: string; teamsAppDefinition: { id: string; teamsAppId: string; }; } | null> { const response = await this.client .api(`/teams/${teamId}/installedApps`) .filter(`teamsAppDefinition/teamsAppId eq '${teamsAppId}'`) .get(); return response['@odata.count'] === 0 ? null : response.value[0]; } async installAppToTeam(teamId: string, teamsAppId: string): Promise<void> { const teamsAppInstallation = { 'email address removed for privacy reasons': `https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/${teamsAppId}`, }; await this.client.api(`/teams/${teamId}/installedApps`).post(teamsAppInstallation); } async addTabToChannel( teamId: string, channelId: string, teamsAppId: string, tabCreationProps: TabCreationProps ): Promise<{ tabEntityId: string; webUrl: string; }> { const tabEntityId = generateRandomString(32); const teamsTab = { displayName: tabCreationProps.displayName, 'email address removed for privacy reasons': `https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/${teamsAppId}`, configuration: { entityId: tabEntityId, contentUrl: tabCreationProps.contentUrl, websiteUrl: tabCreationProps.websiteUrl, removeUrl: tabCreationProps.removeUrl, }, }; await this.client.api(`/teams/${teamId}/channels/${channelId}/tabs`).post(teamsTab); return { tabEntityId, webUrl: tabCreationProps.websiteUrl }; } } export async function ensureAppInstalledInTeam( graphClient: GraphClient, teamId: string, teamsAppId: string ): Promise<void> { const installedApp = await graphClient.getTeamsInstalledApp(teamId, teamsAppId); if (!installedApp) { await graphClient.installAppToTeam(teamId, teamsAppId); } } export async function createTabInChannel( graphClient: GraphClient, teamId: string, channelId: string, teamsAppExternalId: string, tabCreationProps: TabCreationProps ): Promise<{ tabEntityId: string; teamsAppId: string; channelId: string; webUrl: string; }> { const teamsAppDefinition = await graphClient.getTeamsApp(teamsAppExternalId); if (!teamsAppDefinition) { console.error('Teams App is not found in org catalog of current Teams environment.'); throw new Error('Unable to locate Teams App in current organization catalog.'); } const teamsAppId = teamsAppDefinition.id; try { await ensureAppInstalledInTeam(graphClient, teamId, teamsAppId); const { tabEntityId, webUrl } = await graphClient.addTabToChannel( teamId, channelId, teamsAppId, tabCreationProps ); // Navigate to the newly created channel tab pages.navigateToApp({ appId: teamsAppId, channelId: channelId, pageId: tabEntityId, }) } catch (error) { console.error('Fail to ensure the app is installed in the channel before adding a channel tab', error); throw new Error('Fail to pin content in Teams channel. Please check the logs for details.'); } } Expected Behavior: The newly created tab should be open instead of opening the channel conversation tab or raising error. Actual Behavior: If a user has never opened any channels of a team in Teams, then pinning any channel tab under that team in the Teams app will successfully open a new tab. If a user has already opened one of the channels in that team and pins that same opened channel's tab, it will redirect to the channel's conversation interface. If the user opens another channel that has not been opened before in that team and pins that channel tab, it will redirect but then a dialog error will pop up, displaying the channel’s conversation interface. However, in both cases, the tab is created, and once the conversation interface is shown, the new tab can be seen within the channel. If pinning a tab results in a dialog error and displays the channel’s conversation interface, the tab does not appear in the channel.zdeng88Dec 03, 2024Copper Contributor31Views0likes1CommentCan we place a cancel button next to the sign-in button in the sign-in prompt (OAuth prompt)
Hi Team, Currently we ate using the below code and oauth prompt settings for using the MS delegated graph api permissions. private async Task<DialogTurnResult> PromptStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { return await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken); } Can we add one more button Cancel for users if they are not interested to sign in. Currently we are handling by adding a custom message saying user to type 'cancel' if they don't want to continue sign in. But that's like an extra effort from user side. Also, we have tried the below code, public static OAuthCard GetOAuthCard() { var oauthCard = new OAuthCard { Text = "BotFramework OAuth Card", ConnectionName = "OAuth connection", // Replace with the name of your Azure AD connection. Buttons = new List<CardAction> { new CardAction(ActionTypes.Signin, "Sign In", value: "https://example.org/signin"), new CardAction(ActionTypes.ImBack, "Cancel") }, }; return oauthCard; } But this also didn't worked. We have sent this card as a text prompt attachment but sign in button didn't workedLakshmi_145Nov 28, 2024Brass Contributor49Views0likes3CommentsNew Teams Workflow Based Webhooks Notification Issues
Hi all, Hoping someone else has experienced the same and is able to help out. We've started looking at migrating away from the old webhooks that are being deprecated and in to the Workflows replacement. One of the things we set up back at the start of October was using Azure Key Vault events alerting to alert about events as below: This was set up and working fine, the events sent a JSON payload that got parsed in the Workflow after being posted to the Teams webhook and then successfully posted in specific Teams Channels: This was all working great until some time recently when we went back and found that this functionality just no longer works and the Key Vault events metrics show all delivery attempts as failures. Once we'd enabled diagnostic logging for the delivery failures all that it really gives is that it was a bad request: { "time": "2024-11-22T09:52:15.9868768Z", "resourceId": "/SUBSCRIPTIONS/PLACEHOLD_SUB_ID/RESOURCEGROUPS/PLACERHOLDER_NAME/PROVIDERS/MICROSOFT.EVENTGRID/SYSTEMTOPICS/TEST-EVENTGRID-TOPIC", "eventSubscriptionName": "PLACEHOLDER_NAME", "category": "DeliveryFailures", "operationName": "Deliver", "message": "outcome=BadRequest, latencyInMs=170, id=PLACEHOLDER_ID, outputEventSystemId=PLACEHOLDER_ID, state=Filtered, deliveryTime=11/22/2024 9:52:15 AM, deliveryCount=0, probationCount=0, deliverySchema=EventGridEvent, trackedSystemTopicState=CreatedExplicitlyByUser, eventSubscriptionDeliverySchema=EventGridEvent, outputEventFields=InputEvent| EventSubscriptionId| DeliveryTime| State| Id| LastHttpStatusCode| DeliverySchema| LastDeliveryAttemptTime| SystemId| UseMappedResourceArmIdForBilling| TrackedSystemTopicState, outputEventFieldCount=, dedicatedQueueDeliveryQueueId=, requestExpiration=1/1/0001 12:00:00 AM, delivered=False id=PLACEHOLDER_ID, inputEventSystemId=PLACEHOLDER_ID publishTime=11/22/2024 9:52:15 AM, eventTime=11/22/2024 9:52:15 AM, eventType=Microsoft.KeyVault.SecretNewVersionCreated, deliveryTime=11/22/2024 9:52:15 AM, filteringState=FilteredWithRpc, inputSchema=EventGridEvent, publisher=MICROSOFT-KEYVAULT-VAULTS.UKSOUTH-1.EVENTGRID.AZURE.NET, size=662, subject=PLACEHOLDER_NAME, inputEventFields=Id| PublishTime| SerializedBody| EventType| Topic| Subject| FilteringHashCode| SystemId| Publisher| FilteringTopic| TopicCategory| DataVersion| MetadataVersion| InputSchema| EventTime| FilteringPolicy, inputEventFieldCount=16, type=HttpPost, subType=LogicApps, supportsBatching=False, aadIntegration=False, managedIdentityType=None, urlPath=PLACEHOLDER_URL, deliveryResponse=BadRequest, errorCode=BadRequest, HttpRequestMessage: httpVersion=1.1, HttpResponseMessage: HttpVersion=1.1, StatusCode=BadRequest(BadRequest), StatusDescription=Bad Request, IsRedirected=False, RedirectUrl=, "} I can point the Key Vault at another non-Microsoft webhook and it will successfully post the payload with no issue. I can also take the payload and post it to the above webhook myself and it will work fine, which leads mean to think it's either something in the way Azure posts these events has changed and the new Teams Workflow webhook doesn't like it, or the Teams Workflow webhook has changed in what it's expecting and the Azure events don't have what's required. If anyone else has experienced and overcome this issue it would be great to know what you did, as this is driving me round the bend. I'm not even sure if this is the right place to post about this problem! Thanks all.RobCSWNov 27, 2024Copper Contributor65Views0likes1Comment
Resources
Tags
- microsoft teams1,655 Topics
- developer1,286 Topics
- Meetings219 Topics
- Chat206 Topics
- Administrator131 Topics
- Settings100 Topics
- Calling98 Topics
- files64 Topics
- teams53 Topics
- devices50 Topics