public override async Task NotifyAsync(IVssRequestContext requestContext, INotification notification, BotElement bot, EventRuleElement matchingRule) { var token = bot.GetSetting("token"); if (string.IsNullOrEmpty(token)) throw new ArgumentException("Missing token!"); var tasks = new List<Task>(); var slackClient = new SlackClient(); foreach (string tfsUserName in notification.TargetUserNames) { var userId = bot.GetMappedUser(tfsUserName); if (userId != null) { Message slackMessage = ToSlackMessage((dynamic)notification, bot, null, true); if (slackMessage != null) { slackMessage.AsUser = true; var t = Task.Run(async () => { var response = await slackClient.SendApiMessageAsync(slackMessage, token, userId); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); }); tasks.Add(t); } } } await Task.WhenAll(tasks); }
public async Task NotifyAsync(TeamFoundationRequestContext requestContext, INotification notification, BotElement bot, EventRuleElement matchingRule) { var channels = bot.GetCsvSetting("channels"); var tasks = new List<Task>(); var slackClient = new SlackClient(); foreach (string channel in channels) { Message slackMessage = ToSlackMessage((dynamic)notification, bot, channel); if (slackMessage != null) { tasks.Add(slackClient.SendMessageAsync(slackMessage, bot.GetSetting("webhookUrl")).ContinueWith(t => t.Result.EnsureSuccessStatusCode())); } } await Task.WhenAll(tasks); }