diff --git a/libraries/Microsoft.Bot.Schema/Converters/SurfaceConverter.cs b/libraries/Microsoft.Bot.Schema/Converters/SurfaceConverter.cs index a1ec541510..80e4a0cd83 100644 --- a/libraries/Microsoft.Bot.Schema/Converters/SurfaceConverter.cs +++ b/libraries/Microsoft.Bot.Schema/Converters/SurfaceConverter.cs @@ -57,6 +57,9 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist var contentType = jsonObject.GetValue("contentType", StringComparison.OrdinalIgnoreCase)?.ToObject(); parsedSurface = CreateMeetingStageSurfaceWithContentType(contentType); break; + case SurfaceType.MeetingTabIcon: + parsedSurface = new MeetingTabIconSurface(); + break; default: throw new ArgumentException($"Invalid surface type: {surfaceType}"); } diff --git a/libraries/Microsoft.Bot.Schema/Teams/MeetingTabIconSurface.cs b/libraries/Microsoft.Bot.Schema/Teams/MeetingTabIconSurface.cs new file mode 100644 index 0000000000..1c021b1ec6 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/Teams/MeetingTabIconSurface.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace Microsoft.Bot.Schema.Teams +{ + using Newtonsoft.Json; + + /// + /// Specifies meeting tab icon surface. + /// + public class MeetingTabIconSurface : Surface + { + /// + /// Initializes a new instance of the class. + /// + public MeetingTabIconSurface() + : base(SurfaceType.MeetingTabIcon) + { + } + + /// + /// Gets or sets optional field tab entity Id of this . + /// + /// + /// The tab entity Id of this . + /// + [JsonProperty("tabEntityId")] + public string TabEntityId { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/Teams/SurfaceType.cs b/libraries/Microsoft.Bot.Schema/Teams/SurfaceType.cs index fdbf39a8b1..d5258108d5 100644 --- a/libraries/Microsoft.Bot.Schema/Teams/SurfaceType.cs +++ b/libraries/Microsoft.Bot.Schema/Teams/SurfaceType.cs @@ -17,5 +17,10 @@ public enum SurfaceType /// TeamsSurfaceType is MeetingStage. /// MeetingStage, + + /// + /// TeamsSurfaceType is MeetingTabIcon. + /// + MeetingTabIcon } } diff --git a/tests/Microsoft.Bot.Builder.Tests/Teams/TeamsInfoTests.cs b/tests/Microsoft.Bot.Builder.Tests/Teams/TeamsInfoTests.cs index 194d771398..e058544777 100644 --- a/tests/Microsoft.Bot.Builder.Tests/Teams/TeamsInfoTests.cs +++ b/tests/Microsoft.Bot.Builder.Tests/Teams/TeamsInfoTests.cs @@ -525,7 +525,7 @@ private MeetingNotificationBase GetTargetedMeetingNotification(ChannelAccount fr recipients.Add("failingid"); } - var surface = new MeetingStageSurface + var meetingStageSurface = new MeetingStageSurface { Content = new TaskModuleContinueResponse { @@ -539,10 +539,15 @@ private MeetingNotificationBase GetTargetedMeetingNotification(ChannelAccount fr ContentType = ContentType.Task }; + var meetingTabIconSurface = new MeetingTabIconSurface + { + TabEntityId = "test tab entity id" + }; + var value = new TargetedMeetingNotificationValue { Recipients = recipients, - Surfaces = new[] { surface } + Surfaces = new List { meetingStageSurface, meetingTabIconSurface } }; var obo = new OnBehalfOf