在 Teams 中啟用會議錄影時,系統同時也會產生會議的文字記錄 (Transcript)。
這些文字記錄不僅能協助參與者回顧內容,還能交給 GPT 或其他工具產生更完整的會議紀錄。
一般情況下,只有會議主持人才能手動下載這些文字記錄。
那麼,是否能讓應用程式自動存取並下載會議文字記錄呢?本文將逐步示範實作方式。
實作
1.註冊要存取的 App
由於必須透過 AP 存取,因此需先註冊一個 Azure AD App。完成後建立 Client Secret,並保存其 Value,稍後將用於取得存取 Token。詳細可以參考Teams App 代替使用者建立線上會議,讓該使用者為會議主持人的說明來註冊 App。
2.設定 APP 需要的權限
需要 Microsoft Graph API, Type 為 Application 的以下權限,
1 | User.ReadBasic.All |
設定完成後,請記得該 Azure 管理者 按一下 Grant admin consent for … 允許 App 可以用這些 API,如下圖所示:

Console 程式碼實作
以下為 C# Console 的程式碼,先設定需要的變數,例如 clientId, clientSecret …
1 | using System.Dynamic; |
3.取得 App 的 access token
先取得 App 的 access token,用於呼叫 Graph API
1 | var getTokenUrl = $"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token"; |
4.取得使用者的 AAD UserId
呼叫 API 取得使用者的 Azure AD User Id (User.ReadBasic.All 權限
)
1 | var getUserUrl = $"https://graph.microsoft.com/v1.0/users/{userPrincipalName}"; |
- 註: 使用者必需要是會議的參與者,否則會取不到資料
5.依會議主旨來取得行事曆事件
依會議主旨查詢 Events,並取得 Join URL
1 | var searchSubject = "TID"; |
6.透過線上會議的 Link 來取得線上會議的 Id
如果一開始就有線上會議的 Link,就可以省略4.依會議主旨來取得行事曆事件
1 | var joinWebUrl = @"https://teams.microsoft.com/l/meetup-join/....."; |
- 註: 如果出現
No application access policy found for this app.
的錯誤,請依Allow applications to access online meetings on behalf of a user方式來設定讓 App 有權限去執行 - 註: 建議一開始先設定測試的使用者比較快生效,例如
Grant-CsApplicationAccessPolicy -PolicyName "teams-meetings-policy" -Identity "{userId}"
,如果設定Global需要等蠻久一段時間(超過 30 分鐘)才會生效
7.取得線上會議的文字記錄(多筆)的資訊
1 | var getMeetingTranscriptsUrl = $"https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/{meetingId}/transcripts"; |
線上會議的文字記錄可能會有多筆,可以依createdDateTime
過濾所需的記錄。本文示範取最後一筆作為測試。
8.取得最後一筆線上會議的文字記錄
有了 TranscriptId 就可以取得文字記錄,格式選擇text/vtt
1 | var meetingTranscriptUrl = $"https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/{meetingId}/transcripts('{lastTranscriptId}')/content?$format=text/vtt"; |
結論
綜合以上步驟,我們可以透過 Microsoft Graph API 依主旨或日期找到會議事件,取得 Join URL,再進一步查詢 OnlineMeeting Id,最後存取該會議的 Transcript。
此流程能協助開發者自動化取得 Teams 線上會議的逐字稿,進一步應用於會議紀錄、智慧摘要或 NLP 分析。
參考資源
Teams App 代替使用者建立線上會議,讓該使用者為會議主持人
Microsoft Graph API Get a user
Microsoft Graph API Get onlineMeeting
Allow applications to access online meetings on behalf of a user