示例#1
0
        public async System.Threading.Tasks.Task <SkillResponse> ExecuteIntentAsync()
        {
            SkillResponse response = await PermissionValidator.ValidatorAsync(_input, _locale);

            if (response != null)
            {
                return(response);
            }

            string result = await HttpSenderApi.Call("open-banking/v1/accounts/" + _acc + "/transactions", _token);

            ConsultaExtratoResponseDTO consultaExtratoResponse = JsonConvert.DeserializeObject <ConsultaExtratoResponseDTO>(result);

            string[] arguments       = MappingDtoResponseToEchoMessage(consultaExtratoResponse);
            var      consultaExtrato = await _locale.Get(LanguageKeys.ConsultaExtrato, arguments);

            return(ResponseBuilder.Ask(consultaExtrato, null, _input.Session));
        }
        public async System.Threading.Tasks.Task <SkillResponse> ExecuteIntentAsync()
        {
            SkillResponse response = await PermissionValidator.ValidatorAsync(_input, _locale);

            if (response != null)
            {
                return(response);
            }

            ConsultarTransferenciaRequestDTO consultarTransferenciaRequestDTO = MappingIntentDtoRequest(_input);
            var jsonData = JsonConvert.SerializeObject(consultarTransferenciaRequestDTO);



            string result = await HttpSenderApi.Call("accounts/v1/accounts/" + _acc + "/transfers", _token, jsonData);

            ConsultarTransferenciaResponseDTO consultaTransferenciaResponse = JsonConvert.DeserializeObject <ConsultarTransferenciaResponseDTO>(result);

            var consultaExtrato = await _locale.Get(LanguageKeys.Transferencia, null);

            return(ResponseBuilder.Ask(consultaExtrato, null, _input.Session));
        }
示例#3
0
        public override async Task <ActionResult <IActionResult> > HandleAsync(SkillRequest input)
        {
            /// <summary>
            /// Bloco de segurança para verificando e validar o request enviado pela Alexa,
            /// identificando possiveis fraudes.
            /// </summary>
            var req     = HttpContext.Request;
            var isValid = await input.ValidateRequestAsync(req, _logger);

            if (!isValid)
            {
                return(new BadRequestResult());
            }


            var           request  = input.Request;
            SkillResponse response = new SkillResponse {
                Response = new ResponseBody()
            };

            DictionaryLocaleSpeechStore store = LanguagesResource.SetupLanguageResources();
            ILocaleSpeech locale = input.CreateLocale(store);

            try
            {
                if (input.Session.Attributes == null)
                {
                    input.Session.Attributes = new Dictionary <string, object>();
                }

                if (!(request is IntentRequest intentRequest))
                {
                    return(new BadRequestResult());
                }

                string IntentName = intentRequest.Intent.Name;

                if (string.IsNullOrEmpty((String)input.Session.Attributes["Auth"]))
                {
                    //Autenticação
                    string token = await HttpSenderApi.Call();

                    input.Session.Attributes["Auth"] = token;
                }

                if (intentRequest.Intent.Name == "PinUsuarioIntent")
                {
                    Account user = await new LogInPinAlexa(_repository).LogInAlexaAsync(intentRequest.Intent.Slots["pin"].Value);
                    if (user != null)
                    {
                        input.Session.Attributes.Add("pin", user.AccountId);
                        IOutputSpeech message = await locale.Get(LanguageKeys.Pinvalido, null);

                        response = ResponseBuilder.Ask(message, null, input.Session);
                        return(new OkObjectResult(response));
                    }
                    else
                    {
                        IOutputSpeech message = await locale.Get(LanguageKeys.PinInvalido, null);

                        response = ResponseBuilder.Ask(message, null, input.Session);
                        return(new OkObjectResult(response));
                    }
                }

                if (intentRequest.Intent.Name != "PinUsuarioIntent")
                {
                    response = await ExecuteIntentAlexaAsync(IntentName, input, locale);
                }
            }
            catch (Exception ex)
            {
                var message = await locale.Get(LanguageKeys.Error, null);

                response = ResponseBuilder.Tell(message);
                _logger.LogError(ex.Message + " : ", message);
            }

            return(new OkObjectResult(response));
        }