Skip to main content

Microsoft Teams meeting recordings

The Microsoft Teams integration imports recorded Teams meetings organized by the users you choose. Each recording is transcribed and analyzed like any other call.

What is imported​

  • Recordings of online meetings organized by a watched user.
  • The meeting subject becomes the call name. The organizer is treated as the agent, and the first attendee from outside the organizer's domain as the customer (empty for internal meetings).
  • Recordings are video. Speechlytics extracts the audio and discards the video.
  • Teams meetings are processed as mono audio, so speaker-separated metrics are not available.

Not imported: channel meetings, ad hoc Teams calls, Teams Phone calls, and Teams' own transcripts.

How it works​

Speechlytics subscribes to recording notifications for each watched user and renews the subscriptions automatically. An hourly check also lists recent recordings, so nothing is lost if a notification is missed.

Setting it up​

1. Register an application in Microsoft Entra ID​

In your tenant's Entra admin center, register an application and create a client secret. Note the Directory (tenant) ID, Application (client) ID and the secret value.

2. Grant permissions​

Add these Microsoft Graph application permissions and grant admin consent:

PermissionUsed to
OnlineMeetingRecording.Read.AllReceive notifications and download meeting recordings.
OnlineMeetings.Read.AllRead meeting details such as the subject and attendees.
User.Read.AllLook up the users you add to the watch list.

3. Allow the application to access users' meetings​

Teams requires an application access policy. In Teams PowerShell:

New-CsApplicationAccessPolicy -Identity Speechlytics-Recordings -AppIds "<application-client-id>" -Description "Speechlytics recording import"
Grant-CsApplicationAccessPolicy -PolicyName Speechlytics-Recordings -Identity "user@yourcompany.com"

Grant the policy to every user whose meetings should be imported, or use -Global to grant it tenant-wide.

4. Make sure meetings are recorded​

The users' Teams meeting policy must allow cloud recording, and meetings must actually be recorded.

5. Configure Speechlytics​

Provide your Speechlytics representative with the tenant ID, client ID, client secret, and a webhook secret of up to 128 characters. Speechlytics must be reachable from Microsoft over HTTPS, because Graph validates the notification address before creating a subscription.

Once the integration is saved:

  1. switch the integration on;
  2. add the users whose meetings should be imported, by their user principal name (for example user@yourcompany.com). Each user is checked against your directory and subscribed immediately.

Users added while the integration is still off are subscribed at the next hourly synchronization after it is switched on.

Costs and requirements​

  • Microsoft bills access to meeting recordings through Graph as a metered API. Charges are made to your Azure subscription.
  • When a user is added, recordings from the previous 24 hours are picked up by the next hourly check; after that, new recordings arrive as they are created.

Troubleshooting​

SymptomWhat to check
Adding a user fails with a directory errorThe application lacks User.Read.All, or the user principal name is wrong.
A user is not subscribedThe integration reports Microsoft Graph's own error message for that user. Typical causes: the application access policy has not been granted to that user, consent is missing, the Speechlytics notification address is not reachable from Microsoft, or the webhook secret is longer than 128 characters. Failed subscriptions are retried every hour; remove and re-add the user to retry immediately.
Recordings arrive without a subject or customerOnlineMeetings.Read.All is missing; the recording is still imported.
No recordings arriveConfirm meetings were recorded, the user organized them, and the integration is enabled.