// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System.Text.Json.Serialization; using Microsoft.Teams.Common; namespace Microsoft.Teams.Api.MessageExtensions; /// /// Possible values include: 'result', 'auth', 'config', 'message', 'botMessagePreview', 'silentAuth'. /// [JsonConverter(typeof(JsonConverter))] public class ResultType(string value) : StringEnum(value) { public static readonly ResultType Result = new("result"); public bool IsResult => Result.Equals(Value); public static readonly ResultType Auth = new("auth"); public bool IsAuth => Auth.Equals(Value); public static readonly ResultType Config = new("config"); public bool IsConfig => Config.Equals(Value); public static readonly ResultType Message = new("message"); public bool IsMessage => Message.Equals(Value); public static readonly ResultType BotMessagePreview = new("botMessagePreview"); public bool IsBotMessagePreview => BotMessagePreview.Equals(Value); public static readonly ResultType SilentAuth = new("silentAuth"); public bool IsSilentAuth => SilentAuth.Equals(Value); } /// /// Messaging extension result /// public class Result { /// /// Hint for how to deal with multiple attachments. Possible values include: 'list', 'grid' /// [JsonPropertyName("attachmentLayout")] [JsonPropertyOrder(0)] public Api.Attachment.Layout? AttachmentLayout { get; set; } /// /// The type of the result. Possible values include: /// 'result', 'auth', 'config', 'message', 'botMessagePreview' /// [JsonPropertyName("type")] [JsonPropertyOrder(1)] public ResultType? Type { get; set; } /// /// (Only when type is result) Attachments /// [JsonPropertyName("attachments")] [JsonPropertyOrder(2)] public IList? Attachments { get; set; } /// /// suggested actions /// [JsonPropertyName("suggestedActions")] [JsonPropertyOrder(3)] public SuggestedActions? SuggestedActions { get; set; } /// /// (Only when type is message) Text /// [JsonPropertyName("text")] [JsonPropertyOrder(4)] public string? Text { get; set; } /// /// (Only when type is botMessagePreview) Message activity to preview /// [JsonPropertyName("activityPreview")] [JsonPropertyOrder(5)] public Activities.Activity? ActivityPreview { get; set; } }