public async Task <IActionResult> WinnerNominationAsync([FromBody] IList <AwardWinnerNotification> details) { try { if (details == null) { return(this.BadRequest()); } var emails = string.Join(",", details.Select(row => row.NominatedToPrincipalName)).Split(",").Select(row => row.Trim()).Distinct(); string teamId = details.First().TeamId; var claims = this.GetUserClaims(); var teamDetails = await this.teamStorageProvider.GetTeamDetailAsync(teamId); string serviceUrl = teamDetails.ServiceUrl; string appId = this.configuration["MicrosoftAppId"]; string appBaseUrl = this.configuration.GetValue <string>("Bot:AppBaseUri"); string manifestId = this.configuration.GetValue <string>("Bot:ManifestId"); MicrosoftAppCredentials.TrustServiceUrl(serviceUrl); var conversationParameters = new ConversationParameters() { ChannelData = new TeamsChannelData() { Team = new TeamInfo() { Id = teamId }, Channel = new ChannelInfo() { Id = teamId } }, Activity = (Activity)MessageFactory.Carousel(WinnerCarouselCard.GetAwardWinnerCard(appBaseUrl, details, this.localizer, manifestId)), Bot = new ChannelAccount() { Id = appId }, IsGroup = true, TenantId = this.configuration.GetValue <string>("Bot:TenantId"), }; await((BotFrameworkAdapter)this.adapter).CreateConversationAsync( Channel, serviceUrl, new MicrosoftAppCredentials(this.configuration.GetValue <string>("MicrosoftAppId"), this.configuration.GetValue <string>("MicrosoftAppPassword")), conversationParameters, async(turnContext, cancellationToken) => { Activity mentionActivity = await CardHelper.GetMentionActivityAsync(emails, claims.FromId, teamId, turnContext, this.localizer, this.logger, MentionActivityType.Winner, default); await((BotFrameworkAdapter)this.adapter).ContinueConversationAsync( this.configuration.GetValue <string>("MicrosoftAppId"), turnContext.Activity.GetConversationReference(), async(continueConversationTurnContext, continueConversationCancellationToken) => { mentionActivity.ApplyConversationReference(turnContext.Activity.GetConversationReference()); await continueConversationTurnContext.SendActivityAsync(mentionActivity, continueConversationCancellationToken); }, cancellationToken); }, default);
public async Task <IActionResult> WinnerNominationAsync([FromBody] AwardWinner details) { try { if (details == null || details.Winners == null) { return(this.BadRequest(new { message = "Award winner details can not be null." })); } var emails = string.Join(",", details.Winners.Select(row => row.NomineeUserPrincipalNames)).Split(",").Select(row => row.Trim()).Distinct(); string teamId = details.TeamId; var claims = this.GetUserClaims(); var teamDetails = await this.teamStorageProvider.GetTeamDetailAsync(teamId); string serviceUrl = teamDetails.ServiceUrl; string appBaseUrl = this.botSettingsOptions.Value.AppBaseUri; MicrosoftAppCredentials.TrustServiceUrl(serviceUrl); var conversationParameters = new ConversationParameters() { ChannelData = new TeamsChannelData() { Channel = new ChannelInfo() { Id = teamId } }, Activity = (Activity)MessageFactory.Carousel(WinnerCarouselCard.GetAwardWinnerCard(appBaseUrl, details.Winners, this.localizer)), Bot = new ChannelAccount() { Id = this.microsoftAppCredentials.MicrosoftAppId }, IsGroup = true, TenantId = this.botSettingsOptions.Value.TenantId, }; await((BotFrameworkAdapter)this.adapter).CreateConversationAsync( Constants.TeamsBotFrameworkChannelId, serviceUrl, this.microsoftAppCredentials, conversationParameters, async(turnContext, cancellationToken) => { Activity mentionActivity = await CardHelper.GetMentionActivityAsync(emails, claims.FromId, teamId, turnContext, this.localizer, this.logger, MentionActivityType.Winner, default); await turnContext.SendActivityAsync(mentionActivity, cancellationToken); await turnContext.SendActivityAsync(MessageFactory.Text(this.localizer.GetString("ViewWinnerTabText")), cancellationToken); }, default);
public async Task <IActionResult> WinnerNominationAsync([FromBody] IList <AwardWinnerNotification> details) { try { if (details == null) { return(this.BadRequest()); } var emails = string.Join(",", details.Select(row => row.NominatedToPrincipalName)).Split(",").Select(row => row.Trim()).Distinct(); string teamId = details.First().TeamId; var claims = this.GetUserClaims(); var teamDetails = await this.teamStorageProvider.GetTeamDetailAsync(teamId); string serviceUrl = teamDetails.ServiceUrl; string appId = this.configuration["MicrosoftAppId"]; MicrosoftAppCredentials.TrustServiceUrl(serviceUrl); var conversationReference = new ConversationReference() { ChannelId = Channel, Bot = new ChannelAccount() { Id = appId }, ServiceUrl = serviceUrl, Conversation = new ConversationAccount() { ConversationType = ChannelConversationType, IsGroup = true, Id = teamId, TenantId = this.configuration.GetValue <string>("Bot:TenantId"), }, }; await((BotFrameworkAdapter)this.adapter).ContinueConversationAsync( appId, conversationReference, async(conversationTurnContext, conversationCancellationToken) => { System.Diagnostics.Debug.WriteLine(conversationTurnContext.Activity.ServiceUrl); var result = await conversationTurnContext.SendActivityAsync(MessageFactory.Carousel(WinnerCarouselCard.GetAwardWinnerCard(details, this.localizer))); Activity mentionActivity = await CardHelper.GetMentionActivityAsync(emails, claims.FromId, teamId, conversationTurnContext, this.localizer, this.logger, default); conversationReference.Conversation.Id = $"{teamId};messageid={result.Id}"; await conversationTurnContext.SendActivityAsync(mentionActivity); },