Exemple #1
0
        public async Task <SkillResponse> GetResponse(SkillRequest skillRequest)
        {
            var session = skillRequest.Session;
            var context = skillRequest.Context;

            m_logger.LogDebug("Getting preferences for user.");
            var user = await m_dbAccess.GetPreferenceAsync(session.User.UserId).ConfigureAwait(false);

            var input = await m_cinemaDialogWorker.GetInput(skillRequest, user).ConfigureAwait(false);

            if (input.PendingResponse != null)
            {
                return(input.PendingResponse);
            }

            m_logger.LogDebug("Retrieving day overview");
            var dayOverview = await m_kinoheldService.GetDayOverviewForCinema(input.SelectedCinema, input.SelectedDate, input.SelectedDayTime).ConfigureAwait(false);

            if (dayOverview == null)
            {
                m_logger.LogWarning("Something went wrong during retrieval of the day overview");
                return(ResponseBuilder.Tell(m_messages.ErrorRetrievingShows));
            }

            if (user != null && !user.DisableEmails)
            {
                m_logger.LogDebug("Sending email");
                dayOverview.AlexaId = session.User.UserId;
                SendEmailAsync(context, dayOverview);
            }

            m_logger.LogDebug("Formatting day overview for Alexa");
            var result = m_dayOverviewSsmlFormatter.Format(dayOverview);

            return(ResponseBuilder.Tell(new SsmlOutputSpeech
            {
                Ssml = result
            }));
        }
Exemple #2
0
        public async Task <SkillResponse> GetResponse(SkillRequest skillRequest)
        {
            var request = (IntentRequest)skillRequest.Request;
            var session = skillRequest.Session;

            var dialogResponse = PendingDialog(request);

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

            if (request.Intent.ConfirmationStatus == "DENIED")
            {
                return(ResponseBuilder.Tell(m_messages.EmailSettingsAbort));
            }

            var disableEmails = true;

            m_logger.LogDebug("Retrieving user preferences");
            var userPreferences = await m_kinoheldDbAccess.GetPreferenceAsync(session.User.UserId).ConfigureAwait(false);

            if (userPreferences != null)
            {
                disableEmails = !userPreferences.DisableEmails;
            }

            m_logger.LogDebug("Saving user preferences");
            await m_kinoheldDbAccess.SetEmailPreferenceAsync(session.User.UserId, disableEmails).ConfigureAwait(false);

            if (disableEmails)
            {
                return(ResponseBuilder.Tell(m_messages.EmailUnsubscribed));
            }

            return(ResponseBuilder.Tell(m_messages.EmailSubscribed));
        }