public override async Task <SpeechletResponse> OnIntentAsync(IntentRequest intentRequest, Session session)
        {
            if (AlexaUtils.IsRequestInvalid(session))
            {
                return(await Task.FromResult <SpeechletResponse>(InvalidApplicationId(session)));
            }

            var intent     = intentRequest.Intent;
            var intentName = intent?.Name;

            switch (intentName.ToUpper())
            {
            case "BALANCE":
                return(await GetBalance.GetResults(session));

            case "TRANSACTIONS":
                return(await GetTransactions.GetResults(session, intentRequest.Intent.Slots["date"].Value));

            case "PAYMENT":
                return(await MakePayment.GetResults(session, decimal.Parse(intentRequest.Intent.Slots["amount"].Value), intentRequest.Intent.Slots["account"].Value));

            case "WINNERS":
                return(await Winners.GetResults());

            case "MORTGAGE":
                return(await Mortgage.GetResults(session));

            case "SAVINGS":
                return(await Insights.GetResults(session));

            default:
                return(await Task.FromResult <SpeechletResponse>(GetOnLaunchAsyncResult(session)));
            }
        }