private static async Task <ProcessadorResult> ProcessarAcao(LuisResult result, BotData userData) { var subscriptionId = userData.GetProperty <string>("SUBSCRIPTION"); var applicationId = userData.GetProperty <string>("APPLICATIONID"); var secretKey = userData.GetProperty <string>("SECRETKEY"); var recursos = userData.GetProperty <List <AzureResource> >("RESOURCES"); var acao = result.Entities.FirstOrDefault(a => string.Equals(a.Type.Trim(), "OPERACOES", StringComparison.CurrentCultureIgnoreCase)); if (acao == null) { return new ProcessadorResult { Processado = false, Mensagem = $"Acao informada não permitida." } } ; var recurso = result.Entities.FirstOrDefault(a => a.Type.ToUpper() == "ACAORECURSO"); if (recurso == null) { return new ProcessadorResult { Processado = false, Mensagem = $"Necessário informar o nome do recuros que deseja {acao.Entity}" } } ; var nomeRecurso = recurso.Entity.Replace(acao.Entity, "").Trim().Split(' ')[0].RemoverPontuacao(); var targertResource = recursos.FirstOrDefault(r => string.Equals(r.Name.Trim(), nomeRecurso.Trim(), StringComparison.CurrentCultureIgnoreCase)); if (targertResource == null) { return new ProcessadorResult { Processado = false, Mensagem = $"Recuros informado não encontrado na lista de recursos listados." } } ; var actionResult = "..."; if (targertResource.Type == "sites") { var actionName = acao.Entity == "parar" ? "stop" : "start"; actionResult = acao.Entity == "parar" ? "parando" : "iniciando"; await ActionBuilder.StartStopResource(subscriptionId, applicationId, secretKey, targertResource.ResrouceGroupName, targertResource.Name, actionName); } else { var actionName = acao.Entity == "parar" ? "deallocate" : "start"; actionResult = acao.Entity == "parar" ? "parando" : "iniciando"; await ActionBuilder.StartDeallocateVm(subscriptionId, applicationId, secretKey, targertResource.ResrouceGroupName, targertResource.Name, actionName); } return(new ProcessadorResult { Processado = true, Mensagem = $"O recurso solicitado está sendo {actionResult}" }); }