Ejemplo n.º 1
0
        public async Task <bool> StartSubject(V4ReferenceContext context)
        {
            var conversation = ConversationState <ConversationData> .Get(context);

            conversation.MainMenuSubject = this;

            switch (context.Activity.Type)
            {
            case ActivityTypes.ConversationUpdate:

                // greet when added to conversation
                var activity = context.Activity.AsConversationUpdateActivity();
                if (activity.MembersAdded.Any(m => m.Id == activity.Recipient.Id))
                {
                    await MainSubjectResponses.ReplyWithGreeting(context);

                    this.Greeted = true;
                }

                break;

            case ActivityTypes.Message:
                // greet on first message if we haven't already
                if (!Greeted)
                {
                    await MainSubjectResponses.ReplyWithGreeting(context);

                    this.Greeted = true;
                }
                return(await this.ContinueSubject(context));
            }
            return(true);
        }
Ejemplo n.º 2
0
        public async Task <bool> ContinueSubject(V4ReferenceContext context)
        {
            var conversation = ConversationState <ConversationData> .Get(context);

            var luisResult = context.Services.Get <RecognizerResult>(LuisRecognizerMiddleware.LuisRecognizerResultKey);

            (string key, double score)topItem = luisResult.GetTopScoringIntent();

            switch (context.Activity.Type)
            {
            case ActivityTypes.Message:
                switch (topItem.key)
                {
                case "GrannyBot":
                    conversation.CurrentSubject = new GrannyBotSubject(this);
                    await conversation.CurrentSubject.StartSubject(context);

                    break;

                case "MainGames":

                    conversation.CurrentSubject = new GamesSubject(this);
                    await conversation.CurrentSubject.StartSubject(context);

                    break;

                case "MainMenu":
                    await MainSubjectResponses.ReplyWithGreeting(context);

                    break;

                case "Help":
                    // show help
                    await MainSubjectResponses.ReplyWithHelp(context);

                    break;

                default:
                    // show our confusion
                    await MainSubjectResponses.ReplyWithConfused(context);

                    break;
                }

                break;

            default:
                break;
            }

            return(true);
        }