microsoft/teams.net

Public

mirrored from https://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
feat/a365-mcp

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

core/src/Microsoft.Teams.Apps/Schema/MessageActivityExtensions.cs

100lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Apps.Schema.Entities;
5using Microsoft.Teams.Core.Schema;
6
7namespace Microsoft.Teams.Apps.Schema;
8
9/// <summary>
10/// Fluent extension methods for <see cref="MessageActivity"/> that delegate to <see cref="TeamsActivityBuilder"/> internally.
11/// These methods provide backward compatibility with the old library's <c>message.WithText(...).WithSuggestedActions(...)</c> pattern.
12/// </summary>
13public static class MessageActivityExtensions
14{
15 /// <summary>
16 /// Sets the text content of the message.
17 /// </summary>
18 /// <param name="message">The message activity.</param>
19 /// <param name="text">The text to set.</param>
20 /// <param name="textFormat">The text format. Default is "plain".</param>
21 /// <returns>The message activity for chaining.</returns>
22 public static MessageActivity WithText(this MessageActivity message, string text, string textFormat = TextFormats.Plain)
23 {
24 ArgumentNullException.ThrowIfNull(message);
25 message.Text = text;
26 message.TextFormat = textFormat;
27 return message;
28 }
29
30 /// <summary>
31 /// Sets the suggested actions for the message.
32 /// </summary>
33 /// <param name="message">The message activity.</param>
34 /// <param name="suggestedActions">The suggested actions to set.</param>
35 /// <returns>The message activity for chaining.</returns>
36 public static MessageActivity WithSuggestedActions(this MessageActivity message, SuggestedActions suggestedActions)
37 {
38 ArgumentNullException.ThrowIfNull(message);
39 message.SuggestedActions = suggestedActions;
40 return message;
41 }
42
43 /// <summary>
44 /// Sets the text format for the message.
45 /// </summary>
46 /// <param name="message">The message activity.</param>
47 /// <param name="textFormat">The text format. See <see cref="TextFormats"/> for common values.</param>
48 /// <returns>The message activity for chaining.</returns>
49 public static MessageActivity WithTextFormat(this MessageActivity message, string textFormat)
50 {
51 ArgumentNullException.ThrowIfNull(message);
52 message.TextFormat = textFormat;
53 return message;
54 }
55
56 /// <summary>
57 /// Sets the attachment layout for the message.
58 /// </summary>
59 /// <param name="message">The message activity.</param>
60 /// <param name="attachmentLayout">The attachment layout (e.g., "list", "carousel").</param>
61 /// <returns>The message activity for chaining.</returns>
62 public static MessageActivity WithAttachmentLayout(this MessageActivity message, string attachmentLayout)
63 {
64 ArgumentNullException.ThrowIfNull(message);
65 message.AttachmentLayout = attachmentLayout;
66 return message;
67 }
68
69 /// <summary>
70 /// Adds one or more attachments to the message.
71 /// </summary>
72 /// <param name="message">The message activity.</param>
73 /// <param name="attachments">The attachments to add.</param>
74 /// <returns>The message activity for chaining.</returns>
75 public static MessageActivity AddAttachment(this MessageActivity message, params TeamsAttachment[] attachments)
76 {
77 ArgumentNullException.ThrowIfNull(message);
78 ArgumentNullException.ThrowIfNull(attachments);
79 message.Attachments ??= [];
80 foreach (TeamsAttachment attachment in attachments)
81 {
82 message.Attachments.Add(attachment);
83 }
84 return message;
85 }
86
87 /// <summary>
88 /// Marks the message as a final streaming message by adding a <see cref="StreamInfoEntity"/>
89 /// with <see cref="StreamType.Final"/>.
90 /// </summary>
91 /// <param name="message">The message activity.</param>
92 /// <returns>The message activity for chaining.</returns>
93 public static MessageActivity AddStreamFinal(this MessageActivity message)
94 {
95 ArgumentNullException.ThrowIfNull(message);
96 message.Entities ??= [];
97 message.Entities.Add(new StreamInfoEntity { StreamType = StreamType.Final });
98 return message;
99 }
100}
101