コード例 #1
0
        public async Task RetryHelpers_CustomRetryHelper()
        {
            DateTime dateTime = DateTime.MinValue;
            int      count    = 0;
            TestDelegatingHandler testDelegatingHandler = GenerateTestHandler(count);

            Activity        sampleActivity = JsonConvert.DeserializeObject <Activity>(File.ReadAllText(@"Jsons\SampleActivityNoMentions.json"));
            ConnectorClient conClient      = new ConnectorClient(new Uri("https://testservice.com"), "Test", "Test", testDelegatingHandler);

            conClient.SetRetryPolicy(RetryHelpers.DefaultPolicyBuilder.WaitAndRetryAsync(new[]
            {
                TimeSpan.FromSeconds(1),
                TimeSpan.FromSeconds(2),
                TimeSpan.FromSeconds(6),
                TimeSpan.FromSeconds(10),
                TimeSpan.FromSeconds(20)
            }));
            await conClient.Conversations.SendToConversationWithRetriesAsync(sampleActivity);
        }
コード例 #2
0
        public async Task RetryHelpers_CustomRetryHelper()
        {
            DateTime dateTime = DateTime.MinValue;
            int      count    = 0;
            TestDelegatingHandler testDelegatingHandler = new TestDelegatingHandler((request) =>
            {
                if (count < 3)
                {
                    dateTime = DateTime.Now;
                    count++;
                    var response     = new HttpResponseMessage((HttpStatusCode)429);
                    response.Content = new StringContent(JsonConvert.SerializeObject(new ResourceResponse("ID")));
                    return(Task.FromResult(response));
                }
                else
                {
                    if (!(DateTime.Now - dateTime > TimeSpan.FromSeconds(5) && (DateTime.Now - dateTime < TimeSpan.FromSeconds(20))))
                    {
                        Assert.Fail("Invalid backoff time detected for default retry strategy" + (DateTime.Now - dateTime));
                    }

                    var response     = new HttpResponseMessage((HttpStatusCode)200);
                    response.Content = new StringContent(JsonConvert.SerializeObject(new ResourceResponse("ID")));
                    return(Task.FromResult(response));
                }
            });

            Activity        sampleActivity = JsonConvert.DeserializeObject <Activity>(File.ReadAllText(@"Jsons\SampleActivityNoMentions.json"));
            ConnectorClient conClient      = new ConnectorClient(new Uri("https://testservice.com"), "Test", "Test", testDelegatingHandler);

            conClient.SetRetryPolicy(RetryHelpers.DefaultPolicyBuilder.WaitAndRetryAsync(new[]
            {
                TimeSpan.FromSeconds(1),
                TimeSpan.FromSeconds(2),
                TimeSpan.FromSeconds(6),
                TimeSpan.FromSeconds(10),
                TimeSpan.FromSeconds(20)
            }));
            await conClient.Conversations.SendToConversationWithRetriesAsync(sampleActivity);
        }
コード例 #3
0
        private async Task <Activity> HandleSystemMessageAsync(Activity message)
        {
            TeamEventBase eventData = message.GetConversationUpdateData();

            switch (eventData.EventType)
            {
            case TeamEventType.MembersAdded:

                var client = new ConnectorClient(
                    new Uri(message.ServiceUrl),
                    ConfigurationManager.AppSettings["MicrosoftAppId"],
                    ConfigurationManager.AppSettings["MicrosoftAppPassword"]);
                client.SetRetryPolicy(RetryHelpers.DefaultPolicyBuilder.WaitAndRetryAsync(new[] { TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10) }));

                var tenantId    = message.GetTenantId();
                var botAccount  = message.Recipient;
                var channelData = message.GetChannelData <TeamsChannelData>();

                if (EventHelpers.MemberAddedIsBot(message))
                {
                    // Fetch the members in the current conversation
                    IList <ChannelAccount> channelAccount = await client.Conversations.GetConversationMembersAsync(message.Conversation.Id);

                    IEnumerable <TeamsChannelAccount> members = channelAccount.AsTeamsChannelAccounts();

                    // send a OneToOne message to each member
                    foreach (TeamsChannelAccount member in members)
                    {
                        await EventHelpers.SendOneToOneWelcomeMessage(client, channelData, botAccount, member, tenantId);
                    }
                }
                else
                {
                    // send a OneToOne message to new member
                    await EventHelpers.SendOneToOneWelcomeMessage(client, channelData, botAccount, message.From, tenantId);
                }


                break;

            case TeamEventType.MembersRemoved:
                break;

            case TeamEventType.ChannelCreated:
                break;

            case TeamEventType.ChannelDeleted:
                break;

            case TeamEventType.ChannelRenamed:
                break;

            case TeamEventType.TeamRenamed:
                break;

            default:
                break;
            }

            return(null);
        }
コード例 #4
0
        private async Task <Activity> HandleSystemMessageAsync(Activity message)
        {
            TeamEventBase eventData = message.GetConversationUpdateData();

            switch (eventData.EventType)
            {
            case TeamEventType.MembersAdded:
                var connector = new ConnectorClient(new Uri(message.ServiceUrl));
                connector.SetRetryPolicy(
                    RetryHelpers.DefaultPolicyBuilder.WaitAndRetryAsync(
                        new[] { TimeSpan.FromSeconds(2),
                                TimeSpan.FromSeconds(5),
                                TimeSpan.FromSeconds(10) })
                    );

                var tenantId    = message.GetTenantId();
                var botAccount  = message.Recipient;
                var channelData = message.GetChannelData <TeamsChannelData>();

                // if the bot is in the collection of added members,
                // then send a welcome to all team members
                if (message.MembersAdded.Any(m => m.Id.Equals(botAccount.Id)))
                {
                    // Fetch the members in the current conversation
                    IList <ChannelAccount> channelAccount =
                        await connector.Conversations.GetConversationMembersAsync(
                            message.Conversation.Id);

                    IEnumerable <TeamsChannelAccount> members =
                        channelAccount.AsTeamsChannelAccounts();

                    // send a OneToOne message to each member
                    foreach (TeamsChannelAccount member in members)
                    {
                        await MessageHelpers.SendOneToOneWelcomeMessage(
                            connector, channelData, botAccount, member, tenantId);
                    }
                }
                else
                {
                    // send a OneToOne message to new members
                    foreach (TeamsChannelAccount member in message.MembersAdded.AsTeamsChannelAccounts())
                    {
                        await MessageHelpers.SendOneToOneWelcomeMessage(
                            connector, channelData, botAccount, member, tenantId);
                    }
                }
                break;

            case TeamEventType.MembersRemoved:
                break;

            case TeamEventType.ChannelCreated:
                break;

            case TeamEventType.ChannelDeleted:
                break;

            case TeamEventType.ChannelRenamed:
                break;

            case TeamEventType.TeamRenamed:
                break;

            default:
                break;
            }
            return(null);
        }