microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/add-new-feature

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Contexts/Context.Send.cs

116lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5
6namespace Microsoft.Teams.Apps;
7
8public partial interface IContext<TActivity>
9{
10 /// <summary>
11 /// send an activity to the conversation
12 /// </summary>
13 /// <param name="activity">activity activity to send</param>
14 /// <param name="cancellationToken">optional cancellation token</param>
15 public Task<T> Send<T>(T activity, CancellationToken cancellationToken = default) where T : IActivity;
16
17 /// <summary>
18 /// send a message activity to the conversation
19 /// </summary>
20 /// <param name="text">the text to send</param>
21 /// <param name="cancellationToken">optional cancellation token</param>
22 public Task<MessageActivity> Send(string text, CancellationToken cancellationToken = default);
23
24 /// <summary>
25 /// send a message activity with a card attachment
26 /// </summary>
27 /// <param name="card">the card to send as an attachment</param>
28 /// <param name="cancellationToken">optional cancellation token</param>
29 public Task<MessageActivity> Send(Cards.AdaptiveCard card, CancellationToken cancellationToken = default);
30
31 /// <summary>
32 /// send an activity to the conversation as a reply
33 /// </summary>
34 /// <param name="activity">activity activity to send</param>
35 /// <param name="cancellationToken">optional cancellation token</param>
36 public Task<T> Reply<T>(T activity, CancellationToken cancellationToken = default) where T : IActivity;
37
38 /// <summary>
39 /// send a message activity to the conversation as a reply
40 /// </summary>
41 /// <param name="text">the text to send</param>
42 /// <param name="cancellationToken">optional cancellation token</param>
43 public Task<MessageActivity> Reply(string text, CancellationToken cancellationToken = default);
44
45 /// <summary>
46 /// send a message activity with a card attachment as a reply
47 /// </summary>
48 /// <param name="card">the card to send as an attachment</param>
49 /// <param name="cancellationToken">optional cancellation token</param>
50 public Task<MessageActivity> Reply(Cards.AdaptiveCard card, CancellationToken cancellationToken = default);
51
52 /// <summary>
53 /// send a typing activity
54 /// </summary>
55 /// <param name="text">optional text to include</param>
56 /// <param name="cancellationToken">optional cancellation token</param>
57 public Task<TypingActivity> Typing(string? text = null, CancellationToken cancellationToken = default);
58}
59
60public partial class Context<TActivity> : IContext<TActivity>
61{
62 public async Task<T> Send<T>(T activity, CancellationToken cancellationToken = default) where T : IActivity
63 {
64 var res = await Sender.Send(activity, Ref, CancellationToken);
65 await OnActivitySent(res, ToActivityType<IActivity>());
66 return res;
67 }
68
69 public Task<MessageActivity> Send(string text, CancellationToken cancellationToken = default)
70 {
71 return Send(new MessageActivity(text), cancellationToken);
72 }
73
74 public Task<MessageActivity> Send(Cards.AdaptiveCard card, CancellationToken cancellationToken = default)
75 {
76 return Send(new MessageActivity().AddAttachment(card), cancellationToken);
77 }
78
79 public Task<T> Reply<T>(T activity, CancellationToken cancellationToken = default) where T : IActivity
80 {
81 activity.Conversation = Ref.Conversation.Copy();
82 activity.Conversation.Id = Ref.Conversation.ThreadId;
83
84 if (activity is MessageActivity message)
85 {
86 message.Text = string.Join("\n", [
87 Activity.ToQuoteReply(),
88 message.Text != string.Empty ? $"<p>{message.Text}</p>" : string.Empty
89 ]);
90 }
91
92 return Send(activity, cancellationToken);
93 }
94
95 public Task<MessageActivity> Reply(string text, CancellationToken cancellationToken = default)
96 {
97 return Reply(new MessageActivity(text), cancellationToken);
98 }
99
100 public Task<MessageActivity> Reply(Cards.AdaptiveCard card, CancellationToken cancellationToken = default)
101 {
102 return Reply(new MessageActivity().AddAttachment(card), cancellationToken);
103 }
104
105 public Task<TypingActivity> Typing(string? text = null, CancellationToken cancellationToken = default)
106 {
107 var activity = new TypingActivity();
108
109 if (text is not null)
110 {
111 activity.Text = text;
112 }
113
114 return Send(activity, cancellationToken);
115 }
116}