public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            var saudacao = _saudacaoService.RecuperaSaudacaoSegundaria();
            //   SalvaFluxoMensagem(argument.GetAwaiter().GetResult(), new FluxoMensagemDTO {Texto = "Teste 123 ", Tipo = Enums.TipoFaseBot.Saudacao });
            await context.PostAsync(saudacao.Texto);

            context.Wait(MessageReceivedAsync);
        }
        private async Task <FluxoMensagemDTO> RecuperaFluxoRetorno(FluxoMensagemDTO fluxoAtual, Activity activity)
        {
            var fluxoRetorno = fluxoAtual;

            switch (fluxoAtual.TipoFaseBot)
            {
            case TipoFaseBot.Saudacao:
                fluxoRetorno = new FluxoMensagemDTO
                {
                    Texto       = _saudacaoService.RecuperaSaudacaoSegundaria().Texto,
                    TipoFaseBot = fluxoAtual.TipoFaseBot
                };

                break;

            case TipoFaseBot.FluxoDuvidas:
                fluxoRetorno = _fluxoDuvidasService.RecuperaPassoAhPassoDuvida(fluxoAtual);

                break;

            case TipoFaseBot.AcompanhamentoDiario:

                break;

            case TipoFaseBot.FluxoDeclaracaoSimplificada:

                string pathArquivo = "";
                if (activity.Attachments != null)
                {
                    pathArquivo = activity.Attachments[0].ContentUrl;
                }

                if (fluxoRetorno.TipoFasePasso_1.HasValue &&
                    fluxoRetorno.TipoFasePasso_1 == TipoFasePassoAhPasso.Fase_2 &&
                    !string.IsNullOrEmpty(pathArquivo))
                {
                    var aa = await _ocr.GetDocumentData(pathArquivo);

                    fluxoAtual.Texto           = aa;
                    fluxoAtual.TipoFasePasso_1 = TipoFasePassoAhPasso.Fase_3;
                }
                else
                {
                    fluxoRetorno = _fluxoDeclSimplificadaService.RecuperaFluxoDeclSimplificada(fluxoAtual, pathArquivo);
                }
                break;

            case TipoFaseBot.OhQueNaoSouber:
                fluxoRetorno.TipoFaseBot     = fluxoAtual.TipoFaseBotAnterior;
                fluxoRetorno.TipoFasePasso_1 = TipoFasePassoAhPasso.Fase_1;
                break;

            case TipoFaseBot.FluxoFinalizacao:

                fluxoRetorno.Texto = _fluxoFinalizacaoService.MensagemDeFinalizacao();

                break;

            case TipoFaseBot.FluxoErro:
                fluxoRetorno = _fluxoErroService.MontaErro(fluxoAtual);
                break;
            }

            return(fluxoRetorno);
        }