microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
samples/migration-bot

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Api/Clients/ConversationClient.cs

98lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using System.Text.Json.Serialization;
5
6using Microsoft.Teams.Api.Activities;
7using Microsoft.Teams.Common.Http;
8
9namespace Microsoft.Teams.Api.Clients;
10
11public class ConversationClient : Client
12{
13 public readonly string ServiceUrl;
14 public readonly ActivityClient Activities;
15 public readonly MemberClient Members;
16 #pragma warning disable ExperimentalTeamsReactions
17 public readonly ReactionClient Reactions;
18 #pragma warning restore ExperimentalTeamsReactions
19
20 public ConversationClient(string serviceUrl, CancellationToken cancellationToken = default) : base(cancellationToken)
21 {
22 ServiceUrl = serviceUrl;
23 Activities = new ActivityClient(serviceUrl, _http, cancellationToken);
24 Members = new MemberClient(serviceUrl, _http, cancellationToken);
25 #pragma warning disable ExperimentalTeamsReactions
26 Reactions = new ReactionClient(serviceUrl, _http, cancellationToken);
27 #pragma warning restore ExperimentalTeamsReactions
28 }
29
30 public ConversationClient(string serviceUrl, IHttpClient client, CancellationToken cancellationToken = default) : base(client, cancellationToken)
31 {
32 ServiceUrl = serviceUrl;
33 Activities = new ActivityClient(serviceUrl, _http, cancellationToken);
34 Members = new MemberClient(serviceUrl, _http, cancellationToken);
35 #pragma warning disable ExperimentalTeamsReactions
36 Reactions = new ReactionClient(serviceUrl, _http, cancellationToken);
37 #pragma warning restore ExperimentalTeamsReactions
38 }
39
40 public ConversationClient(string serviceUrl, IHttpClientOptions options, CancellationToken cancellationToken = default) : base(options, cancellationToken)
41 {
42 ServiceUrl = serviceUrl;
43 Activities = new ActivityClient(serviceUrl, _http, cancellationToken);
44 Members = new MemberClient(serviceUrl, _http, cancellationToken);
45 #pragma warning disable ExperimentalTeamsReactions
46 Reactions = new ReactionClient(serviceUrl, _http, cancellationToken);
47 #pragma warning restore ExperimentalTeamsReactions
48 }
49
50 public ConversationClient(string serviceUrl, IHttpClientFactory factory, CancellationToken cancellationToken = default) : base(factory, cancellationToken)
51 {
52 ServiceUrl = serviceUrl;
53 Activities = new ActivityClient(serviceUrl, _http, cancellationToken);
54 Members = new MemberClient(serviceUrl, _http, cancellationToken);
55 #pragma warning disable ExperimentalTeamsReactions
56 Reactions = new ReactionClient(serviceUrl, _http, cancellationToken);
57 #pragma warning restore ExperimentalTeamsReactions
58 }
59
60 public async Task<ConversationResource> CreateAsync(CreateRequest request, CancellationToken cancellationToken = default)
61 {
62 var token = cancellationToken != default ? cancellationToken : _cancellationToken;
63 var req = HttpRequest.Post($"{ServiceUrl}v3/conversations", body: request);
64 var res = await _http.SendAsync<ConversationResource>(req, token);
65 return res.Body;
66 }
67
68 public class CreateRequest
69 {
70 [JsonPropertyName("isGroup")]
71 [JsonPropertyOrder(0)]
72 public bool? IsGroup { get; set; }
73
74 [JsonPropertyName("bot")]
75 [JsonPropertyOrder(1)]
76 public Account? Bot { get; set; }
77
78 [JsonPropertyName("members")]
79 [JsonPropertyOrder(2)]
80 public IList<Account>? Members { get; set; }
81
82 [JsonPropertyName("topicName")]
83 [JsonPropertyOrder(3)]
84 public string? TopicName { get; set; }
85
86 [JsonPropertyName("tenantId")]
87 [JsonPropertyOrder(4)]
88 public string? TenantId { get; set; }
89
90 [JsonPropertyName("activity")]
91 [JsonPropertyOrder(5)]
92 public IActivity? Activity { get; set; }
93
94 [JsonPropertyName("channelData")]
95 [JsonPropertyOrder(6)]
96 public IDictionary<string, object>? ChannelData { get; set; }
97 }
98}