Store meeting transcript on SharePoint
Microsoft Teams has great features like automatic recordings and transcripts. It is even possible to download the transcript after the meeting. In this blog I will show you how you can retrieve and store a meeting transcript on SharePoint Online via a Power Automate flow.
Inspiration
I was inspired by the tweet below from Lee Holmes. He showed that it was possible to retrieve the transcript content via PowerShell. And I thought, why not try it via Power Automate as well?
So cool! Recorded Teams meetings have a JSON version of the transcript. You can use PowerShell to find out if you’re consuming all of the air in the room.
Look for the ‘streamContent?format=json’ URL in the DevTools Network tab. pic.twitter.com/8FksKtNqw5
— Lee Holmes (@Lee_Holmes) October 7, 2022
YouTube video
Before you continue reading. I also have a YouTube video about the setup.
Meeting Policies
Transcription is a feature which will be enabled or disabled in one of your Meeting Policies. Double check this before you start with your Power Automate setup.
GET callTranscript content
After reading some several Graph API docs I figured out this would be possible.
The onlineMeeting id can be retrieved via the Get onlineMeeting method and a $filter query parameter and the JoinWebUrl.
After that it is possible to retrieve all transcripts of our meeting with a List transcripts method.
And finally the transcript content can be retrieved in application/vnd.openxmlformats-officedocument.wordprocessingml.document format via the Get callTranscript method.
Lets try and turn this into a working flow!
Flow setup
Checklist before you start:
– This example uses HTTP connector actions which are part of a premium feature, make sure you have a license which covers this.
– The HTTP actions also use an app (with the correct Graph API permissions) in Azure Active Directory for authentication.
1. Add a When an upcoming event is starting soon (V3) action.
a. Select your Calendar Id, in this case Calendar
2. Add a Get my profile (v2) action.
To retrieve my own email for the Author field of the SharePoint page.
3. Add a Initialize variable action.
a. Provide a Name, in this example onlineMeetingId
b. Select a Type, String
c. Leave Value empty
4. Add a second Initialize variable action.
a. Provide a Name, in this example transcriptId
b. Select a Type, String
c. Leave Value empty
5. Add a Condition action.
In this condition the body field within the body is checked for the meetup-join hyperlink. A indexOf function is used. If this is found it will output 1. If it is not found (equal to -1), it will output 0.
a. Use the expression below for the where statement
6. Add a HTTP action (in the If Yes section).
A Get onlineMeeting method from the Graph API is used. In this case specifically with a $filter query parameter and the JoinWebUrl. This is information we can retrieve from the body/body of the event message.
a. Select the GET method
b. Use the URI from the code snippet below
c. Select Active Directory OAuth for the Authentication, provide the details of your Azure AD App.
7. Add a Set Variable action (in the If Yes section).
a. In the Name field select the onlineMeetingId variable
b. In the Value field use the expression from the code snippet below
8. Add a Delay until action (in the If Yes section).
a. In the Timestamp field use the expression from the code snippet below
9. Add a second HTTP action (in the If Yes section).
A List transcripts method is used to retrieve the transcripts of the specific online meeting.
a. Select the GET method
b. Use the URI from the code snippet below
c. Select Active Directory OAuth for the Authentication, provide the details of your Azure AD App.
10. Add a second Set Variable action (in the If Yes section).
a. In the Name field select the transcriptId variable
b. In the Value field use the expression from the code snippet below
11. Add a third HTTP action (in the If Yes section).
A Get callTranscript method is used to retrieve the content of an individual transcripts in the application/vnd.openxmlformats-officedocument.wordprocessingml.document format.
a. Select the GET method
b. Use the URI from the code snippet below
c. Select Active Directory OAuth for the Authentication, provide the details of your Azure AD App.
12. Add a Create File action.
a. Select the Site Address from the dropdown, or use an environment variable (parameter) like me
b. Select a Folder Path, in this example /Shared Documents/Meeting Transcripts
c. Use the expression from the code snippet below for the File Name
d. Use the Body field of the HTTP – Transcript action
That is it for the setup of this example.
Testing Transcription
You can start a transcript from within the More menu option.
When the transcript is started you would see it in the side panel during the meeting.
After the meeting you will see it in the Recordings & Transcripts tab
But also as a file in our specified Document Library
When you open the file you should see something like below
You can now e-mail/share a link to the document. Or potentially process it with an AI model. More on that in a future blog…
For now, Happy testing!
This is great, Dennis! Thanks so much for documenting!
Do you think that the same process could be used to obtain the Attendance reports for meetings? If so, do you know how the process would differ?
@S. Sprague, yes the process would be pretty much the same. I actually have written another blog about this as well: https://www.expiscornovus.com/2022/10/24/share-attendance-directly-after-meeting/
Hi,
Thank you for you tutorial. I seem to be getting this error on the first HTTP
ActionBranchingConditionNotSatisfied. The execution of template action ‘HTTP’ skipped: the branching condition for this action is not satisfied.