예제 #1
0
        public async Task UpcomingBooking_Should_Return_UpcomingBookings_For_Valid_Request()
        {
            var goApiClient = new GoApiClient();
            var result      = await goApiClient.UpcomingBookings();

            Assert.NotNull(result);
            Assert.True(result.Data.Any());
        }
        public SkillResponse Handle(IntentRequest intent, ILambdaContext context, Session inputSession)
        {
            var goApiClient = new GoApiClient();
            var result      = goApiClient.UpcomingBookings().Result;

            if (result.Errors.Any())
            {
                return(ResponseBuilder.Tell($"{result.Errors.First().Message}"));
            }

            if (result.Data.Any() == false)
            {
                var speech = new SsmlOutputSpeech {
                    Ssml = "<speak>I didn't find any bookings.</speak>"
                };
                var repromptMessage = new PlainTextOutputSpeech {
                    Text = "Would you like to book class now ?"
                };
                var repromptBody = new Reprompt();
                repromptBody.OutputSpeech = repromptMessage;
                var finalResponse = ResponseBuilder.Ask(speech, repromptBody);
                return(finalResponse);
            }

            var day = result.Data.Select(x => x.ClassStartDate).First().ToString("dddd d MMMM",
                                                                                 CultureInfo.CreateSpecificCulture("en-US"));

            var bookingsResponse = string.Join(',', result.Data.OrderBy(x => x.ClassStartDate).
                                               Select(x => $" {x.ClassName} at {x.ClassStartDate.ToShortTimeString()}"));



            var speech1 = new SsmlOutputSpeech {
                Ssml = $"<speak>{GetFirstPartResponse(result.Data.Count(), day)}{bookingsResponse}</speak>"
            };
            var repromptMessage1 = new PlainTextOutputSpeech {
                Text = ""
            };
            var repromptBody1 = new Reprompt();

            repromptBody1.OutputSpeech = repromptMessage1;
            var finalResponse1 = ResponseBuilder.Ask(speech1, repromptBody1);

            return(finalResponse1);

            //  return ResponseBuilder.Tell($"{GetFirstPartResponse(result.Data.Count(), day)}{bookingsResponse}");
        }