Suggestion: Teams – Auto remove people from the chat at the end of a call


I am not sure if this is an edge case…. I’d love to know how others work.

On some calls – for example a managers meeting – you want to temporarily add in someone just for a quick question. You don’t want them to remain after the call. It is kind of a security or privacy issue if you don’t remove them.

So I find it really annoying when I forgot to remove them after the call and they probably find it annoying when they get our messages after the call.  So I would prefer not to have to remove the person manually.

Suggestion – next to “Add people”, I think it would be really cool to add a person via an option “Add people (temporarily)”.

Cool suggestion?

Figure: Add new option “Add people (temporarily)”

Bug – Help me to open my Teams website tabs in the browser (Broken because URL’s are case-sensitive)

Update: Microsoft have fixed this bug in June 2024

When you are in Teams looking at a webpage often you want to open it in the browser. E.g, Loop pages. Recently it started giving: “The link has been removed.”

Figure: New bug – The link has been removed “The link has been removed”

After very careful inspection in Teams I realized that the URL was being changed when I clicked on the ‘open in browser’ button to all lowercase. This breaks any sharing links to things like SharePoint as they are case-sensitive.

Figure: Line 1 – The original sharing link – Line 2 The Sharing link after Teams saves it

Suggestion:

URL’s by nature are case-sensitive and should not be changed

Teams apps – Help me use the Teams bot with a compliance policy

We are nearly complete on an AI solution – it is being built on top of Microsoft Teams and Azure OpenAI APIs. We call it SSW YakShaver.

The product has a blocking issue. We are recording a Teams call (and screen) and we have hit something called a “compliance policy”.

The below is what we plan to do from here. I would have assumed we would have gone with Option 1 (using the Teams bot with a compliance policy) but it seems like we are going to use the Graph API (simpler).

Thoughts?

——————————————————————————————————————-

I got this email from the YakShaver team:

We have been trying to get the compliance policy working in MS Teams (Option1), but have pretty much given up.

We have decided to do Option 2 below followed by Option 2.1.

We are *not* doing Option 1.

Here are all the points we have learnt.

Then the user flow.

Then the pros and cons.

Option 1: Media Stream – Application hosted or compliance recording bot (Not recommended)

Using a Teams bot with a compliance policy to record the audio and video, it will record every participants sound individually, those who are not in the policy will not be recorded.

  • Complexity – on the backend
  • We need the compliance policy on everyone in the call for them to be recorded
  • User adds bot to the call or meeting, it will directly start to record, when the user kick out the bot it will stop.
  • The bot will send an api call to the endpoint /api/call
  • After this we need to connect with Microsoft Media Stream
    • From the Media Stream we can get the video stream.
  • We need to add in a way to store the videos so that Media Stream to do this
    • Suggestion: Use data blob (YakShaver Teams bot store video in datablob, and media stream pulls it)
      • We could send it directly to the api, but according to Uly we need to store the video somewhere so the final PBI can have a link to it.
      • When we’re using the compliancy policy it’s not recording as normally and the video will not be stored in Stream as it would normally would be

User flow

  1. User adds bot to the call or meeting.
  2. It will directly start to record, and the user can tell the task.
  3. When the user kicks out the bot, it will stop the recording and send of the task.

✅ Pros:

  1. No frontend needed, just an instruction page
  2. Easy on the user end, the user never needs to start recording and stop recording, instead the user can just add and remove the bot.

❌ Cons:

  1. Complexity of coding on the backend
  2. Saving Audio and video files is a problem
  3. Audio might be recorded separately among participants, and if so, it requires coding to re-join them together
  4. We need extra work to notify the user that they are being recorded
  5. Potential legal issue because we record it and we are responsible for it, we need some extra safety rules on the recorded audios
  6. We need to run the whole thing on the windows VM.

Info – Application Hosted Bot

https://learn.microsoft.com/en-us/microsoftteams/platform/bots/calls-and-meetings/calls-meetings-bots-overview

https://learn.microsoft.com/en-us/microsoftteams/platform/bots/calls-and-meetings/requirements-considerations-application-hosted-media-bots

Option 2: Use the Graph API (Recommended)

Using the Graph API to do the work, the user manually start and stop recording, and then the YakShaver will get the transcrips for the user manually.

  • Delegated auth flow, everyone can be recorded.
  • Access to transcript need a PAT (personal access token)
  • We can’t access the start and stop recording from the API so this has to be done manually.
  • User start recording, user end recording
  • Since the user is starting and stopping the recording – the recording is stored on their account and everyone in the meeting has access to it
    • That’s why we need their PAT to access the recording/transscript
    • Later: investigate how we can move the recording to another location where everyone have access

User flow (⚠️worse flow, but quicker to develop and cheaper $ Azure costs)

  1. User start recording
  2. User click on YakShaver tab button before or after recording
  3. User stop recording
  4. The YakShaver will do the task

✅ Pros:

  1. Less software complexity
  2. No need to save video stream and no need to merge transcripts.
  3. We have the UI so the YakShaver can track the issue being created and show it on the UI
  4. It’s already been proved to work in POC
  5. We can sell it to a client because it’s all using delegated permissions

❌ Cons:

  1. We need some front-end work, pop ups, SSOs to manage user credentials.
  2. More steps on the user end, manual recording is annoying and not natural.

User Flow – Options to skip the extra clicks (7 clicks in total):

Option 2 requires us to manually start and stop the recording in Teams. The following are 2 options to get around that.

Option 2.1: Azure Communication Service

Use communication service to automate the call record process – need a POC after Graph is done.

✅ Pros:

– It’s easy to use

– We can get rid of the compliance policy which is much much simpler!!!!!

– I can see the potential of making YakShaver into a commercial project.

– We can define our own compliance rule rather than rely on Azure to set up the compliance policy

❌ Cons:

– Calls have to be initialized from communication services

– It’s our responsibility to notify recording – very important

– We have to do compliance recording policy ourselves if we make it commercial later – might need a lawyer

How Azure Communication Services endpoints work with the Graph API?

Things we are sure of from the documentation:

  1. Azure Communication services can initialize a call, if the call is from Azure communication services, we can record it anytime
  2. Azure Communication services might be able record teams call but it might not.
  3. The call might not be on Teams.

When the users are calling the other user from YakShaver

  1. Can call another user from YakShaver and click record on YakShaver
  2. Users being invited to another call
  3. Inside that call, everything will be recorded

When 2 users are on a call and all of a sudden they decide to use YakShaver

  1. YakShaver will call them
  2. All users will be muted on teams
  3. All users will be invited to another call
  4. The newly created group call will be recorded

What happens if it’s a scheduled meeting

  1. We don’t need Azure communication service, the delegated flow should just be working….

Option 2.2: Click script

  • Could use this if Option 2.1 fails
  • What user interaction with computer can’t be done with an old-school click script?

Microsoft Loop – Help me store my Loop pages with my Teams

At SSW we really love using Microsoft Loop to collaborate with each other.  We think it would make a great replacement for OneNote in Teams for project Wikis and other important collaboration documents.

⚠️ However, the loop files are stored inconsistently (some are in your workspace and some are in OneDrive and some end up in the Microsoft Team if you create it in the chat), so I worry about data loss.

Figure: A Loop Tab (Like the Notes Tab) would be awesome

Loop pages created in Microsoft Loop can have their link copied to a Team but can’t be shared to a Team.  The storage for these loop files then stays with the creator’s workspace.  When a creator leaves the company, the link is broken.

Figure: Loop component created in a workspace in Loop

You can add a Loop component to a Teams post and that creates a .loop file in the Teams storage, which is great, but you can only add 1 component per post.  You then must pin the post to the top so that other Team members can find it.

Figure: Create a Loop component | Add it to a Post (1 Component Per Post) | Then Pin it

Figure: Good example – Loop component stored in Team file library

As a workaround, you can add a Teams OneNote, then add the loop components inside OneNote. However that doesn’t work as then strangely the files are stored under the creator’s OneDrive not in the Teams storage. 

Figure: Multiple Loop components added to Notes in Teams

Figure: Bad example – Loop files are saved to the creator’s OneDrive – not in Teams

This storage behaviour is not consistent, and it is not ready for enterprises (as they will lose data in Loops).

Microsoft Teams – Help me create a Team without a sensitivity label

Update – Microsoft has fixed this issue in the latest version of Teams v2 (24152.405.2925.6762)

The new Microsoft Teams app is a huge improvement over the older version. However, there is currently one serious fault.

A new Team should not automatically apply a ‘Sensitivity label’ unless a “Compliance policy” sets it as the default.

In the new Teams app only, when creating a Team, it cannot be created without a “Sensitivity label”.

Figure: See the red box – New team defaults to “Private – Sensitive-Accounting Documents” | Click to change

Figure: Choose 'None' Sensitivity | Click Public
Figure: In the Sensitivity Label dropdown | Choose ‘None’ | Click Public to close this window

Figure: See the red box - Team will be created with a Sensitivity label
Figure: Blocked – See the red box – Team will be created as Public with a sensitivity label that only a few people can read

Help me kindly know I am not connected to the internet

I wish all Microsoft applications behaved the same when offline. 

Ideally, they would all have a black bar (or reverse when in dark mode), when they had reduced functionality.

I am on a plane with no wifi…

⚠️This new green message when you are offline, is pretty unfriendly:

Figure: Bad example – Don’t say “server error” when I didn’t do anything wrong
Figure: Good example – Tell me I have no internet connection

Microsoft Teams Approvals App – Help me allow users to be in multiple approver groups

Video: Rick Su explains the issue (2 min)

The Approvals app is great for simple scenarios like purchase approvals and event attendance approvals.

There is a problem with more complex approvals. Say you need approvals from 2 out of 5 designated people, then validation stops this from being done.

The current validation does not allow the same person to be in multiple approver groups. This validation should be removed.

Figure: ❌ It is a problem that the same individual user cannot be assigned to multiple approver groups.

There are other solutions that allow this such as www.KissFlow.com and www.integrify.com

Suggestion:

The Microsoft Teams Approvals App should allow the same individual user to appear in multiple approver groups.  

This modification would give the flexibility to allow more complex approval scenarios.

Microsoft Teams Approval App – Allow me to edit approvals

At SSW we are rolling out the use of the Approvals App with Teams to get requests approved through the organization.  I love how easy it is to create templates and use them to submit requests.  Previously we were using emails to manage these approvals, so another benefit is a reduction of noise across our collective inboxes.

Once an approval is submitted there is no way to alter the data.  While this makes sense for requests that have been approved, it would be great if we could edit requested approvals prior to being approved.  Currently, the only way we can do this is submit another request which means manually entering all information again which takes time. 

Figure: Able to edit SMS messages after being sent on an iPhone.  Image from Edited iMessages in iOS 16 Now Display Original Text, Undo Send Limited to Two Minutes – MacRumors

Workaround:

  1. Send another request with the updated information.
    • ❌ This can be time consuming if multiple edits need to be made
    • ❌ Copying information to another request can be error prone
    • ❌ Approval system gets polluted with duplicate requests

Suggestion:

  1. Add the ability to edit an approval request prior to it being approved.
  2. This would include changing the approver (if the template allowed the user to select approvers)
Figure: Lack of an option to edit an approval request
Figure: Only able to edit approvers during request creation
Figure: Viewing details of an approval request after it’s sent

Microsoft Teams Approval App – Allow me to easily find important approvals

Every company has the need for requests to be approved.  We’ve found that the Microsoft Teams Approval App works well, but only in simple cases.  It is easy to create templates and use them to submit requests. 

When companies switch from emails to a centralized structured approval, processes improve, and emails are reduced.

Senior Management are often responsible for approving most requests and as such can have a large backlog of requests to approve.  In order to help approvers action the most important requests I would like to see the following enhancements:

  1. Allow Priority to be set in Custom Approval Templates – ideally the priority level would be set in the Custom Approval Template, and not able to be changed by the user making the request.
  2. The ‘Request title’ field is not enough.  We need another column called ‘Approval Template Type’.
  3. We can sort on the column titles, but we need the ability to filter by Priority and Approval Template Name
Figure 1: Approval Hub – Can see Priority and Title, but not Request Type
Figure 2: Not able to filter by Priority and/or Request Type
Figure 3: We are able to configure priority for basic requests, but NOT able to do this for Custom Request Templates.  We need access to this field in Custom Request Templates.
Figure 4: Why are there only two priorities?  We would like to have 3 levels (for example, similar to how Outlook works (see below))
Figure 5: In Outlook we have 3 priorities.  For consistency, we would like 3 priorities in the Teams Approval App also.

Microsoft Teams – Help me forward chat history

I work in the China office, and we keep reverting to WeChat because it offers this feature which is super useful. It is missing from Teams.

I want to be able to forward a group of messages in my private chat with someone else not in the chat. This often happens when a problem comes up in the discussion and I realized I have already discussed a similar issue. Therefore, I want to share a section of my chat history to them quickly.

❌ My current workarounds:
Option 1: Copy + paste the messages one by one to the other chat.
Option 2: Take a long screenshot of the chat history and share the image.

✅ Suggestion:
Allow people to cherry-pick messages in their chat and forward them in a bundle.

❌ Figure: I want to forward just the section in the red box to someone else (but I don’t want to share irrelevant information about my annual review)
✅ Figure: WeChat lets me combine and forward selected messages