コード例 #1
0
ファイル: SearchCommandSet.cs プロジェクト: aluitink/Nox
        public SearchCommandSet()
        {
            List<Command> commands = new List<Command>();

            Command cmd = new Command();

            ChoiceSet choices = new ChoiceSet();
            choices
                .Add("google")
                .Add("youtube");

            cmd
                .Phrase("Search")
                .Choices("search_provider", choices)
                .Phrase("for")
                .Dictation()
                .Handle(context =>
                {
                    var speechSynthesizer = context.ServiceContainer.GetOrAddService<ISpeechSynthesizer>();
                    var words = context.Phrase.Words.Skip(3);
                    var text = words.Select(w => w.Text);
                    var searchTerm = string.Join(" ", text);

                    var choice = context.VariableResults.FirstOrDefault(c => c.Key == "search_provider");

                    switch (choice.Value)
                    {
                        case "youtube":
                            speechSynthesizer?.Speak("Searching You Tube");
                            SearchYoutube(searchTerm);
                            break;
                        default:
                            speechSynthesizer?.Speak("Searching Google");
                            SearchGoogle(searchTerm);
                            break;
                    }

                    Console.WriteLine(context.Phrase);
                });

            commands.Add(cmd);

            Commands = commands;
        }
コード例 #2
0
ファイル: RecognitionCoreTest.cs プロジェクト: aluitink/Nox
        public void CanPerformComplexChoiceWithDictation()
        {
            ManualResetEvent resetEvent = new ManualResetEvent(false);

            bool success = false;

            Command command = new Command();

            string firstColor = null;
            string secondColor = null;
            string dictation = null;

            var firstColors = new ChoiceSet();
            firstColors
                .Add("red")
                .Add("blue")
                .Add("green");

            var secondColors = new ChoiceSet();
            secondColors
                .Add("yellow")
                .Add("orange")
                .Add("pink");

            command
                .Phrase("I like the colors")
                .Choices("first_color", firstColors)
                .Phrase("and")
                .Choices("second_color", secondColors)
                .Phrase("because")
                .Dictation()
                .Handle(context =>
                {
                    firstColor = context.VariableResults.FirstOrDefault(c => c.Key == "first_color").Value;
                    secondColor = context.VariableResults.FirstOrDefault(c => c.Key == "second_color").Value;
                    dictation = context.VariableResults.FirstOrDefault(c => c.Key == "dictation").Value;
                    resetEvent.Set();
                    success = true;
                });

            _recognitionCore.Add(command);

            string c1 = "red";
            string c2 = "yellow";
            string d1 = "they are pretty";

            string format = string.Format("I like the colors {0} and {1} because {2}", c1, c2, d1);

            _recognitionEngine.EmulateRecognizeAsync(format);

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.AreEqual(c1, firstColor);
            Assert.AreEqual(c2, secondColor);
            Assert.AreEqual(d1, dictation);

            resetEvent.Reset();

            c1 = "blue";
            c2 = "orange";
            d1 = "they clash";

            format = string.Format("I like the colors {0} and {1} because {2}", c1, c2, d1);

            _recognitionEngine.EmulateRecognizeAsync(format);

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.AreEqual(c1, firstColor);
            Assert.AreEqual(c2, secondColor);
            Assert.AreEqual(d1, dictation);

            resetEvent.Reset();

            c1 = "green";
            c2 = "pink";
            d1 = "breast cancer and green bay packers";

            format = string.Format("I like the colors {0} and {1} because {2}", c1, c2, d1);

            _recognitionEngine.EmulateRecognizeAsync(format);

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.AreEqual(c1, firstColor);
            Assert.AreEqual(c2, secondColor);
            Assert.AreEqual(d1, dictation);

            Assert.IsTrue(success);
        }
コード例 #3
0
ファイル: RecognitionCoreTest.cs プロジェクト: aluitink/Nox
        public void CanPerformSimpleChoice()
        {
            ManualResetEvent resetEvent = new ManualResetEvent(false);

            bool success = false;

            Command builder = new Command();

            var colorChoices = new ChoiceSet();
            colorChoices
                .Add("red")
                .Add("blue")
                .Add("green");

            builder
                .Phrase("I like the color")
                .Choices("color_choice", colorChoices)
                .Handle(context =>
                {
                    success = true;
                    resetEvent.Set();
                });

            _recognitionCore.Add(builder);

            _recognitionEngine.EmulateRecognizeAsync("I like the color red");

            WaitHandle.WaitAll(new[] { resetEvent });
            resetEvent.Reset();

            _recognitionEngine.EmulateRecognizeAsync("I like the color blue");

            WaitHandle.WaitAll(new[] { resetEvent });
            resetEvent.Reset();

            _recognitionEngine.EmulateRecognizeAsync("I like the color green");

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.IsTrue(success);
        }
コード例 #4
0
ファイル: RecognitionCoreTest.cs プロジェクト: aluitink/Nox
        public void CanPerformComplexChoice()
        {
            ManualResetEvent resetEvent = new ManualResetEvent(false);

            bool success = false;

            Command command = new Command();

            string firstColor = null;
            string secondColor = null;

            var firstColors = new ChoiceSet();
            firstColors
                .Add("red")
                .Add("blue")
                .Add("green");

            var secondColors = new ChoiceSet();
            secondColors
                .Add("yellow")
                .Add("orange")
                .Add("pink");

            command
                .Phrase("I like the colors")
                .Choices("first_color", firstColors)
                .Phrase("and")
                .Choices("second_color", secondColors)
                .Handle(context =>
                {
                    firstColor = context.VariableResults.FirstOrDefault(c => c.Key == "first_color").Value;
                    secondColor = context.VariableResults.FirstOrDefault(c => c.Key == "second_color").Value;
                    resetEvent.Set();
                    success = true;
                });

            _recognitionCore.Add(command);

            _recognitionEngine.EmulateRecognizeAsync("I like the colors red and yellow");

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.AreEqual("red", firstColor);
            Assert.AreEqual("yellow", secondColor);

            resetEvent.Reset();

            _recognitionEngine.EmulateRecognizeAsync("I like the colors blue and orange");

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.AreEqual("blue", firstColor);
            Assert.AreEqual("orange", secondColor);

            resetEvent.Reset();

            _recognitionEngine.EmulateRecognizeAsync("I like the colors green and pink");

            WaitHandle.WaitAll(new[] { resetEvent });

            Assert.AreEqual("green", firstColor);
            Assert.AreEqual("pink", secondColor);

            Assert.IsTrue(success);
        }
コード例 #5
0
ファイル: Command.cs プロジェクト: aluitink/Nox
 public Command Choices(string key, ChoiceSet choiceSet)
 {
     ArgumentList.Add(new Tuple<GrammarType, object>(GrammarType.Choice, new Tuple<string, ChoiceSet>(key, choiceSet)));
     return this;
 }