예제 #1
0
        public override Task OnTurn(ITurnContext turnContext)
        {
            if (turnContext.Activity.Type == ActivityTypes.Message)
            {
                // Check to see if there is an active topic.
                if (HasActiveTopic)
                {
                    // Let the active topic handle this turn by passing context to it's OnReceiveActivity().
                    return(ActiveTopic
                           .OnTurn(turnContext));
                }

                // If you don't have the state you need, prompt for it
                if (State.Name == null)
                {
                    return(SetActiveTopic("namePrompt")
                           .OnTurn(turnContext));
                }

                if (State.Age == null)
                {
                    return(SetActiveTopic("agePrompt")
                           .OnTurn(turnContext));
                }

                // Now that you have the state you need (age and name), use it!
                return(turnContext.SendActivity($"Hello { State.Name }! You are { State.Age } years old."));
            }

            return(Task.CompletedTask);
        }
예제 #2
0
        public override Task OnTurn(ITurnContext context)
        {
            if ((context.Activity.Type == ActivityTypes.Message) && (context.Activity.AsMessageActivity().Text.Length > 0))
            {
                var message = context.Activity.AsMessageActivity();

                //I can use LUIS here!

                // If the user wants to change the topic of conversation...
                if (message.Text.ToLowerInvariant() == "add reservation")
                {
                    // Set the active topic and let the active topic handle this turn.
                    this.SetActiveTopic(ADD_RESERVATION_TOPIC)
                    .OnTurn(context);
                    return(Task.CompletedTask);
                }

                //TODO: implement "delete alarm topic"
                //if (message.Text.ToLowerInvariant() == "delete alarm")
                //{
                //    this.SetActiveTopic(DELETE_ALARM_TOPIC)
                //        .OnReceiveActivity(context);
                //    return Task.CompletedTask;
                //}

                if (message.Text.ToLowerInvariant() == "show reservation")
                {
                    this.ClearActiveTopic();

                    ReservationView.ShowReservations(context, context.GetUserState <BotUserState>().Reservations);
                    return(Task.CompletedTask);
                }

                if (message.Text.ToLowerInvariant() == "help")
                {
                    this.ClearActiveTopic();

                    this.ShowHelp(context);
                    return(Task.CompletedTask);
                }

                // If there is an active topic, let it handle this turn until it completes.
                if (HasActiveTopic)
                {
                    ActiveTopic.OnTurn(context);
                    return(Task.CompletedTask);
                }

                ShowDefaultMessage(context);
            }

            return(Task.CompletedTask);
        }
예제 #3
0
        public override Task OnTurn(ITurnContext turnContext)
        {
            if (HasActiveTopic)
            {
                return(ActiveTopic.OnTurn(turnContext));
            }

            // If there are no alarms to delete...
            if (State.Alarms.Count == 0)
            {
                return(turnContext.SendActivity("There are no alarms to delete."));
            }

            if (State.AlarmIndex == null)
            {
                // If there is only one alarm to delete, use that index. No need to prompt.
                if (State.Alarms.Count == 1)
                {
                    AlarmsView.ShowAlarms(turnContext, State.Alarms);

                    State.AlarmIndex = 0;
                }
                else
                {
                    return(SetActiveTopic(WHICH_ALARM_PROMPT)
                           .OnTurn(turnContext));
                }
            }

            State.Alarm.Title = State.Alarms[(int)State.AlarmIndex].Title;

            if (State.DeleteConfirmed == null)
            {
                return(SetActiveTopic(CONFIRM_DELETE_PROMPT)
                       .OnTurn(turnContext));
            }

            OnSuccess(turnContext,
                      new DeleteAlarmTopicValue
            {
                Alarm           = this.State.Alarm,
                AlarmIndex      = (int)State.AlarmIndex,
                DeleteConfirmed = (bool)State.DeleteConfirmed
            });

            return(Task.CompletedTask);
        }
        public override Task OnTurn(ITurnContext context)
        {
            if (HasActiveTopic)
            {
                ActiveTopic.OnTurn(context);
                return(Task.CompletedTask);
            }
            if (State.confirmation.confirmationState == null)
            {
                this.SetActiveTopic(CONFIRMATION_PROMPT);
                this.ActiveTopic.OnTurn(context);
                return(Task.CompletedTask);
            }

            this.OnSuccess(context, this.State.confirmation);

            return(Task.CompletedTask);
        }
예제 #5
0
        public override Task OnTurn(ITurnContext turnContext)
        {
            if (HasActiveTopic)
            {
                return(ActiveTopic.OnTurn(turnContext));
            }

            if (State.Alarm.Title == null)
            {
                return(SetActiveTopic(TITLE_PROMPT)
                       .OnTurn(turnContext));
            }

            if (State.Alarm.Time == null)
            {
                return(SetActiveTopic(TIME_PROMPT)
                       .OnTurn(turnContext));
            }

            OnSuccess(turnContext, State.Alarm);
            return(Task.CompletedTask);
        }