예제 #1
0
        public Queue <CommItem> ProcessItems(Queue <CommItem> input, ItemManager[] managers)
        {
            PureFacts pfManager = (PureFacts)managers.SingleOrDefault(x => x is PureFacts);

            if (pfManager == null)
            {
                SharedHelper.LogError("No Pure Fact Manager in SpeechAdaptationEN."); return(null);
            }

            List <CommItem> list = input.ToList();

            if (!FlagsShared.InitialGreetingPerformed)
            {
                list.Insert(0, new CommItem {
                    TextToSay = phrases.SayHello(), IsGreeting = true
                });
                FlagsShared.InitialGreetingPerformed = true;
            }

            string username = pfManager.GetValueByName("UserName");

            for (int i = 0; i < list.Count; i++)
            {
                //add joke announcement
                //if (list[i].Action == Actions.MakeSuggestion && list[i].Suggestion == Suggestions.TellJoke)
                //{
                //    CommItem item = list[i];
                //    item.TextToSay = AddJokeAnnouncement(item.TextToSay);
                //    list[i] = item;
                //}

                //add song announcement
                if (list[i].Category == ActionsEnum.MakeSuggestion && list[i].SubCategory == SuggestionsEnum.ListenToSong)
                {
                    CommItem item = list[i];
                    item.TextToSay = AddSongAnnouncement(item.TextToSay, OneSongAlreadyPlanned);
                    list[i]        = item;

                    OneSongAlreadyPlanned = true;
                }

                // add user name for the interaction
                if (list[i].Category == ActionsEnum.AskUncertanFactQuestion ||
                    list[i].SubCategory == ActionsEnum.AskPureFactQuestionAboutUser ||
                    list[i].Category == ActionsEnum.ChangeVisualAppearance ||
                    (list[i].Category == ActionsEnum.MakeSuggestion && list[i].SubCategory != "" && list[i].SubCategory != SuggestionsEnum.TellJoke)
                    )
                {
                    CommItem item = list[i];
                    item.TextToSay = AddCallByName(item.TextToSay, username);
                    list[i]        = item;
                }
            }

            DisablePlayMusicAftertInitialGreeting(ref list, managers);

            KorraModelHelper.CoupleTwoInteractionsTogether(ref list, "UserName", "BotName");

            KorraModelHelper.CoupleTwoInteractionsTogether(ref list, "UserLikesVideoGames", "UserThinksVideoGameIsGoodPresent");

            return(new Queue <CommItem>(list));
        }