/// <summary> /// Sample Adaptive card for Meeting Start event. /// </summary> private Attachment GetAdaptiveCardForMeetingStart(MeetingStartEventDetails meeting) { AdaptiveCard card = new AdaptiveCard(new AdaptiveSchemaVersion("1.2")) { Body = new List <AdaptiveElement> { new AdaptiveTextBlock { Text = meeting.Title + "- started", Weight = AdaptiveTextWeight.Bolder, Spacing = AdaptiveSpacing.Medium, }, new AdaptiveColumnSet { Columns = new List <AdaptiveColumn> { new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto, Items = new List <AdaptiveElement> { new AdaptiveTextBlock { Text = "Start Time : ", Wrap = true, }, }, }, new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto, Items = new List <AdaptiveElement> { new AdaptiveTextBlock { Text = Convert.ToString(meeting.StartTime.ToLocalTime()), Wrap = true, }, }, }, }, }, }, Actions = new List <AdaptiveAction> { new AdaptiveOpenUrlAction { Title = "Join meeting", Url = meeting.JoinUrl, }, }, }; return(new Attachment() { ContentType = AdaptiveCard.ContentType, Content = card, }); }
/// <summary> /// Activity Handler for Meeting start event /// </summary> /// <param name="meeting"></param> /// <param name="turnContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected override async Task OnTeamsMeetingStartAsync(MeetingStartEventDetails meeting, ITurnContext <IEventActivity> turnContext, CancellationToken cancellationToken) { // Save any state changes that might have occurred during the turn. var conversationStateAccessors = _conversationState.CreateProperty <MeetingData>(nameof(MeetingData)); var conversationData = await conversationStateAccessors.GetAsync(turnContext, () => new MeetingData()); conversationData.StartTime = meeting.StartTime; await _conversationState.SaveChangesAsync(turnContext, false, cancellationToken); await turnContext.SendActivityAsync(MessageFactory.Attachment(GetAdaptiveCardForMeetingStart(meeting))); }
/// <summary> /// Invoked when a Teams Meeting Start event activity is received from the connector. /// Override this in a derived class to provide logic for when a meeting is started. /// </summary> /// <param name="meeting">The details of the meeting.</param> /// <param name="turnContext">A strongly-typed context object for this turn.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects /// or threads to receive notice of cancellation.</param> /// <returns>A task that represents the work queued to execute.</returns> protected virtual Task OnTeamsMeetingStartAsync(MeetingStartEventDetails meeting, ITurnContext <IEventActivity> turnContext, CancellationToken cancellationToken) { return(Task.CompletedTask); }