├── README.md ├── TranscriptSubscriptionSample ├── TranscriptSubscriptionSample │ ├── Views │ │ ├── _ViewStart.cshtml │ │ ├── _ViewImports.cshtml │ │ ├── Home │ │ │ ├── Privacy.cshtml │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── _ValidationScriptsPartial.cshtml │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml.css │ │ │ └── _Layout.cshtml │ │ ├── Subscriptions │ │ │ ├── Delete.cshtml │ │ │ ├── Create.cshtml │ │ │ ├── Transcripts.cshtml │ │ │ ├── Index.cshtml │ │ │ └── Details.cshtml │ │ └── EventSubscriptions │ │ │ ├── Delete.cshtml │ │ │ ├── Create.cshtml │ │ │ └── Index.cshtml │ ├── wwwroot │ │ ├── favicon.ico │ │ ├── js │ │ │ └── site.js │ │ ├── lib │ │ │ ├── jquery │ │ │ │ └── LICENSE.txt │ │ │ ├── jquery-validation │ │ │ │ └── LICENSE.md │ │ │ ├── bootstrap │ │ │ │ ├── LICENSE │ │ │ │ └── dist │ │ │ │ │ └── css │ │ │ │ │ ├── bootstrap-reboot.min.css │ │ │ │ │ ├── bootstrap-reboot.rtl.min.css │ │ │ │ │ ├── bootstrap-reboot.rtl.css │ │ │ │ │ └── bootstrap-reboot.css │ │ │ └── jquery-validation-unobtrusive │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── jquery.validate.unobtrusive.min.js │ │ │ │ └── jquery.validate.unobtrusive.js │ │ └── css │ │ │ ├── site.css │ │ │ └── contoso-theme.css │ ├── Services │ │ ├── Interfaces │ │ │ ├── IUserTokenService.cs │ │ │ ├── IAuthService.cs │ │ │ ├── INotificationProcessor.cs │ │ │ ├── IGraphService.cs │ │ │ └── ISubscriptionsService.cs │ │ ├── UserTokenService.cs │ │ ├── NotificationProcessor.cs │ │ ├── AuthService.cs │ │ ├── SubscriptionService.cs │ │ └── GraphService.cs │ ├── Models │ │ ├── ErrorViewModel.cs │ │ ├── Common │ │ │ └── CustomException.cs │ │ ├── ViewModels │ │ │ ├── EventSubscriptionViewModels.cs │ │ │ ├── SubscriptionViewModels.cs │ │ │ └── LogsViewModel.cs │ │ ├── Subscription.cs │ │ ├── TranscriptionModels.cs │ │ └── MeetingEventModels.cs │ ├── Handlers │ │ ├── ISubscriptionFactoryHandler.cs │ │ ├── SubscriptionFactoryHandler.cs │ │ └── SubscriptionHandler.cs │ ├── Logging │ │ ├── InMemoryLoggerProvider.cs │ │ ├── InMemoryLogger.cs │ │ └── InMemoryLogStore.cs │ ├── TranscriptSubscriptionSample.csproj │ ├── appsettings.json │ ├── appsettings.Development.json │ ├── Controllers │ │ ├── HomeController.cs │ │ ├── NotificationController.cs │ │ ├── LogsController.cs │ │ ├── EventSubscriptionsController.cs │ │ └── SubscriptionsController.cs │ ├── Configurations │ │ └── GraphConfigurations.cs │ ├── Utilities │ │ ├── CertificateLoader.cs │ │ ├── MeetingUrlParser.cs │ │ └── NotificationDecryption.cs │ ├── Delegate │ │ └── AuthenticationDelegatingHandler.cs │ └── Program.cs ├── TranscriptSubscriptionSample.sln └── README.md ├── CODE_OF_CONDUCT.md ├── SECURITY.md ├── CONTRIBUTING.ms ├── LICENSE └── .gitignore /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftgraph/copilot-realtime-activity-subscription-samples/main/README.md -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using TranscriptSubscriptionSample 2 | @using TranscriptSubscriptionSample.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/Views/Home/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |
Use this page to detail your site's privacy policy.
7 | -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftgraph/copilot-realtime-activity-subscription-samples/main/TranscriptSubscriptionSample/TranscriptSubscriptionSample/wwwroot/favicon.ico -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/Services/Interfaces/IUserTokenService.cs: -------------------------------------------------------------------------------- 1 | namespace TranscriptSubscriptionSample.Services 2 | { 3 | public interface IUserTokenService 4 | { 5 | Task
12 | Request ID: @Model.RequestId
13 |
18 | Swapping to Development environment will display more detailed information about the error that occurred. 19 |
20 |21 | The Development environment shouldn't be enabled for deployed applications. 22 | It can result in displaying sensitive information from exceptions to end users. 23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 24 | and restarting the app. 25 |
26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 navali-msft 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/Views/Shared/_Layout.cshtml.css: -------------------------------------------------------------------------------- 1 | /* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | for details on configuring this project to bundle and minify static web assets. */ 3 | 4 | a.navbar-brand { 5 | white-space: normal; 6 | text-align: center; 7 | word-break: break-all; 8 | } 9 | 10 | a { 11 | color: #0077cc; 12 | } 13 | 14 | .btn-primary { 15 | color: #fff; 16 | background-color: #1b6ec2; 17 | border-color: #1861ac; 18 | } 19 | 20 | .nav-pills .nav-link.active, .nav-pills .show > .nav-link { 21 | color: #fff; 22 | background-color: #1b6ec2; 23 | border-color: #1861ac; 24 | } 25 | 26 | .border-top { 27 | border-top: 1px solid #e5e5e5; 28 | } 29 | .border-bottom { 30 | border-bottom: 1px solid #e5e5e5; 31 | } 32 | 33 | .box-shadow { 34 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); 35 | } 36 | 37 | button.accept-policy { 38 | font-size: 1rem; 39 | line-height: inherit; 40 | } 41 | 42 | .footer { 43 | position: absolute; 44 | bottom: 0; 45 | width: 100%; 46 | white-space: nowrap; 47 | line-height: 60px; 48 | } 49 | -------------------------------------------------------------------------------- /TranscriptSubscriptionSample/TranscriptSubscriptionSample/Views/Subscriptions/Create.cshtml: -------------------------------------------------------------------------------- 1 | @model TranscriptSubscriptionSample.Models.CreateSubscriptionViewModel 2 | 3 | @{ 4 | ViewData["Title"] = "Create Subscription"; 5 | } 6 | 7 |10 | 11 | Create New Event Subscription 12 | 13 |
14 | 15 | @if (TempData["Success"] != null) 16 | { 17 || @Html.DisplayNameFor(model => model.Id) | 35 |@Html.DisplayNameFor(model => model.OrganizerId) | 36 |@Html.DisplayNameFor(model => model.ExpirationDate) | 37 |@Html.DisplayNameFor(model => model.CreatedAt) | 38 |Actions | 39 |
|---|---|---|---|---|
| @Html.DisplayFor(modelItem => item.Id) | 46 |@Html.DisplayFor(modelItem => item.OrganizerId) | 47 |@Html.DisplayFor(modelItem => item.ExpirationDate) | 48 |@Html.DisplayFor(modelItem => item.CreatedAt) | 49 |50 | Delete 51 | | 52 |
10 | Create New Subscription 11 |
12 | 13 | @if (TempData["Success"] != null) 14 | { 15 || ID | 33 |Meeting URL | 34 |Status | 35 |Actions | 36 |
|---|---|---|---|
| @Html.DisplayFor(modelItem => item.Id) | 43 |@Html.DisplayFor(modelItem => item.MeetingUrl) | 44 |45 | 46 | @Html.DisplayFor(modelItem => item.Status) 47 | 48 | | 49 |50 | Details 51 | Transcripts 52 | Delete 53 | | 54 |
Monitor and transcribe Microsoft Teams meetings in real-time using Microsoft Graph API
8 | 9 |Get live transcriptions of Teams meetings as they happen
16 |Track participants and gather valuable meeting data
25 |Powered by Microsoft Graph and Azure services
34 |Showing latest 20 transcripts. View all transcripts
59 | } 60 | else 61 | { 62 |