Calling
106 TopicsSince 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 Yerro489Views4likes8CommentsCompliance Recording Bot invite coming from unknown subnet
Hello, As of this morning, all my compliance recording bots fail to record my personal account. Invites are filtered by FW, with this IP range configuration, as stated https://learn.microsoft.com/en-us/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide 52.112.0.0/14 52.122.0.0/15 When disabling firewall rules, invites are coming through. And are originated from 9.163.189.144 or 20.82.235.109, which don't match the above IP range .... Only my user sounds affected by this recent change in my tenant. As we have many customers using our compliance recording bot, we have opened all the ports in the firewall, which is not a good practice. Could I have some feedback about this issue ? Is Microsoft changing its IP ranges ? Thanks for your answer109Views0likes1CommentDelay in Teams Proactive Notification Popups (Internal and Customer Impact)
We are currently experiencing an issue with Microsoft Teams, both internally and among our customers. Specifically, there is a noticeable delay in the appearance of proactive notification popups. In many instances, these notifications are delayed by approximately 5 to 10 seconds after the triggering event using ms botframework sdk. This issue affects the responsiveness of our Teams-based applications and workflows, particularly in time-sensitive use cases. The delay has been observed consistently across different environments, which suggests it may not be limited to a specific configuration or network. We would appreciate your assistance in investigating this matter. If there are any known issues, recommended diagnostics, or configuration adjustments that could help mitigate this behavior, we would be grateful for your guidance. Thank you very much for your support.Solved246Views0likes6CommentsNotifications not received at callback uri for bot
Hi, I am trying to implement an app (acting as the bot) outside of teams client to received call notifications for incoming calls and direct them to appropriate agent based on business logic. I have the app registration and bot registration set up. For the bot, I have the teams channel set up with the calling webhook url set to my ngrok url, which tunnels to my local app. I am able to make outbound call with graph api to an internal user by specifying the userId in invitationParticipantInfo. I am also able to make inbound call from internal user to the bot through teams client by directly clicking on the call button for the bot. I can receive the callback notifications at the registered ngrok url in both cases. I have two resource accounts, a call queue and a ivr. Both have phone numbers assigned to them. Things I am stuck on: making an outbound call to PSTN from my app (https://learn.microsoft.com/en-us/graph/api/application-post-calls?view=graph-rest-1.0&tabs=http#example-9-create-peer-to-peer-pstn-call-with-service-hosted-media) making an outbound call on behalf of a queue to PSTN from my app receiving incoming call notification at my app when PSTN calls a resource account (queue or ivr) or a user Things I tried: I tried setting the source in Call object to the following, with id being queue account id, ivr account id, user account id, but all of them gave me an error "Call source identity invalid." with code "7507" and responseStatusCode "403". // initializing graph client ClientSecretCredential credential = new ClientSecretCredentialBuilder() .clientId(CLIENT_ID) .clientSecret(CLIENT_SECRET) .tenantId(TENANT_ID) .build(); GraphServiceClient graphClient = new GraphServiceClient(credential, "https://graph.microsoft.com/.default"); Call call = new Call(); // setting source ParticipantInfo source = new ParticipantInfo(); IdentitySet appIdentitySet = new IdentitySet(); HashMap<String, Object> additionalData = new HashMap<String, Object>(); Identity applicationInstance = new Identity(); applicationInstance.setDisplayName("Calling Bot"); applicationInstance.setId(<some id>); additionalData.put("applicationInstance", applicationInstance); appIdentitySet.setAdditionalData(additionalData); source.setIdentity(appIdentitySet); call.setSource(source); // setting target LinkedList<InvitationParticipantInfo> targets = new LinkedList<>(); InvitationParticipantInfo invitationParticipantInfo = new InvitationParticipantInfo(); IdentitySet phoneIdentitySet = new IdentitySet(); HashMap<String, Object> additionalDataForPhone = new HashMap<>(); Identity phone = new Identity(); phone.setId("+12223334444"); additionalDataForPhone.put("phone", phone); phoneIdentitySet.setAdditionalData(additionalDataForPhone); invitationParticipantInfo.setIdentity(phoneIdentitySet); targets.add(invitationParticipantInfo); call.setTargets(targets); // additional fields call.setCallbackUri("https://<domain>.ngrok-free.app/api/callbacks"); LinkedList<Modality> requestedModalities = new LinkedList<>(); equestedModalities.add(Modality.Audio); call.setRequestedModalities(requestedModalities); ServiceHostedMediaConfig mediaConfig = new ServiceHostedMediaConfig(); call.setMediaConfig(mediaConfig); call.setTenantId(TENANT_ID); // making the call Call result = graphClient.communications().calls().post(call); Questions: Which part of the configuration am I missing? I'm suspecting that it's because my bot is not linked to a resource account. There are some powershell commands that I'm supposed to run as part of the set up, which I didn't because of some company configuration that doesn't allow me to do it. I think creating the resource account in teams admin center is equivalent of creating an application instance. I would like to know whether this is indeed the problem. If it is due to not linking the app to my resource accounts, how do I do it without powershell? I can't find documentation online about it. Is it possible to receive incoming call notifications at my app that's linked to ngrok when the incoming call is for a specific user? Any help is appreciated! Thank you!195Views0likes5CommentsMeeting Bot issue: Did not receive valid response for JoinCall request from call modality controller
I'm trying to join a Teams Meeting with a bot. I used this https://microsoftgraph.github.io/microsoft-graph-comms-samples/docs/articles/index.html#making-an-outbound-call-to-join-an-existing-microsoft-teams-meeting sample. When the bot attempts to join I get the popup to admit or deny it in the meeting, but as soon as I click admit, it drops. In the logs I see this message: Call status updated to Terminated - Did not receive valid response for JoinCall request from call modality controller.. DiagCode: 580#5426.@ I am using the latest (1.2.0.10563 at time of writing) version of Microsoft.Graph.Communications libraries and the problem only started after I updated from 1.2.0.3742 that I was using previously. I could not find any info on what the call modality controller is, or how to check what it is responding if anything. Any ideas on how to troublshoot this are welcome.1.1KViews1like9Commentscall details with devce info and participant join,leave time
i am working on teams integration project when i run grap api it does not show data for device and participant timing details graph api for extacting data for call including { "call_id": "004998be-da70-40f6-999a-3c84484c98b1", "start_date_time": "2024-12-17T11:53:14.9897859Z", "end_date_time": "2024-12-17T12:16:55.6045446Z", "participants": [ { "participant_name": "Surbhi Yadav", "join_time": "Unknown", "leave_time": "Unknown" },199Views0likes6CommentsGraph api :Fetching Call Records with Participant Join/Leave Times & Device Information
hello Microsoft Teams Developer Community, I’ve been working on a script to fetch detailed information about call records using the Microsoft Graph API. The script is designed to capture not just the basic call information but also the join and leave times of participants and the devices used during the call.Solved426Views0likes4CommentsTeams Missed Calls Api
Hi, I would like to know if there is a Graph API that gives me information if a peer to peer call between Teams users has not been successful. Or if a call has not been successful because the caller has abandoned the call, therefore it is a missed call. Regards. P.S. based on following documentation, I cannot find any information about what I'am searching for: https://learn.microsoft.com/en-us/graph/api/callrecords-cloudcommunications-list-callrecords?view=graph-rest-1.0&tabs=http119Views0likes1Comment