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); }
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); }
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); }
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); }