public async Task SessionTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);

            var firstService  = new AIDataService(config);
            var secondService = new AIDataService(config);

            {
                var weatherRequest  = new AIRequest("weather");
                var weatherResponse = await MakeRequestAsync(firstService, weatherRequest);

                Assert.IsNotNull(weatherResponse);
            }

            {
                var checkSecondRequest  = new AIRequest("check weather");
                var checkSecondResponse = await MakeRequestAsync(secondService, checkSecondRequest);

                Assert.IsTrue(string.IsNullOrEmpty(checkSecondResponse.Result.Action));
            }

            {
                var checkFirstRequest  = new AIRequest("check weather");
                var checkFirstResponse = await MakeRequestAsync(firstService, checkFirstRequest);

                Assert.IsNotNull(checkFirstResponse.Result.Action);
                Assert.IsTrue(checkFirstResponse.Result.Action.Equals("checked", StringComparison.CurrentCultureIgnoreCase));
            }
        }
        public async Task SessionTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);

            var firstService = new AIDataService(config);
            var secondService = new AIDataService(config);

            {
                var weatherRequest = new AIRequest("weather");
                var weatherResponse = await MakeRequestAsync(firstService, weatherRequest);
                Assert.IsNotNull(weatherResponse);
            }

            {
                var checkSecondRequest = new AIRequest("check weather");
                var checkSecondResponse = await MakeRequestAsync(secondService, checkSecondRequest);
                Assert.IsTrue(string.IsNullOrEmpty(checkSecondResponse.Result.Action));
            }

            {
                var checkFirstRequest = new AIRequest("check weather");
                var checkFirstResponse = await MakeRequestAsync(firstService, checkFirstRequest);
                Assert.IsNotNull(checkFirstResponse.Result.Action);
                Assert.IsTrue(checkFirstResponse.Result.Action.Equals("checked", StringComparison.CurrentCultureIgnoreCase));
            }
        }
예제 #3
0
        private AIDataService CreateDataService()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            return(dataService);
        }
        public async Task WrongEntitiesTest()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var aiRequest = new AIRequest("hi nori");

            var myDwarfs = new Entity("not_dwarfs");

            myDwarfs.AddEntry(new EntityEntry("Ori", new[] { "ori", "Nori" }));
            myDwarfs.AddEntry(new EntityEntry("bifur", new[] { "Bofur", "Bombur" }));

            var extraEntities = new List <Entity> {
                myDwarfs
            };

            aiRequest.Entities = extraEntities;

            try
            {
                var aiResponse = await MakeRequestAsync(dataService, aiRequest);

                Assert.IsTrue(false, "Request should throws bad_request exception");
            }
            catch (AIServiceException e)
            {
                Assert.IsTrue(true);
            }
        }
        public async Task DifferentAgentsTest()
        {
            var query = "I want pizza";

            {
                var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
                var dataService = new AIDataService(config);

                var request = new AIRequest(query);

                var response = await dataService.RequestAsync(request);

                Assert.IsNotNull(response.Result);
                Assert.AreEqual("pizza", response.Result.Action);
            }

            {
                var config      = new AIConfiguration("968235e8e4954cf0bb0dc07736725ecd", SupportedLanguage.English);
                var dataService = new AIDataService(config);
                var request     = new AIRequest(query);

                var response = await dataService.RequestAsync(request);

                Assert.IsNotNull(response.Result);
                Assert.IsTrue(string.IsNullOrEmpty(response.Result.Action));
            }
        }
        public async Task DifferentAgentsTest()
        {
            var query = "I want pizza";

            {
                var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
                var dataService = new AIDataService(config);

                var request = new AIRequest(query);

                var response = await dataService.RequestAsync(request);
                Assert.IsNotNull(response.Result);
                Assert.AreEqual("pizza", response.Result.Action);

            }

            {
                var config = new AIConfiguration(SUBSCRIPTION_KEY, "968235e8e4954cf0bb0dc07736725ecd", SupportedLanguage.English);
                var dataService = new AIDataService(config);
                var request = new AIRequest(query);

                var response = await dataService.RequestAsync(request);
                Assert.IsNotNull(response.Result);
                Assert.IsTrue(string.IsNullOrEmpty(response.Result.Action));

            }

        }
예제 #7
0
        public void SessionTest()
        {
            var config = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);

            var firstService  = new AIDataService(config);
            var secondService = new AIDataService(config);

            {
                var weatherRequest  = new AIRequest("weather");
                var weatherResponse = MakeRequest(firstService, weatherRequest);
                Assert.IsNotNull(weatherResponse);
            }

            {
                var checkSecondRequest  = new AIRequest("check weather");
                var checkSecondResponse = MakeRequest(secondService, checkSecondRequest);
                Assert.IsEmpty(checkSecondResponse.Result.Action);
            }

            {
                var checkFirstRequest  = new AIRequest("check weather");
                var checkFirstResponse = MakeRequest(firstService, checkFirstRequest);
                Assert.IsNotNull(checkFirstResponse.Result.Action);
                Assert.IsTrue(checkFirstResponse.Result.Action.Equals("checked", StringComparison.InvariantCultureIgnoreCase));
            }
        }
예제 #8
0
        private AIResponse MakeRequest(AIDataService service, AIRequest request)
        {
            var aiResponse = service.Request(request);

            Assert.IsNotNull(aiResponse);
            Assert.IsFalse(aiResponse.IsError);
            Assert.IsFalse(string.IsNullOrEmpty(aiResponse.Id));
            Assert.IsNotNull(aiResponse.Result);
            return(aiResponse);
        }
        private async Task <AIResponse> MakeRequestAsync(AIDataService service, AIRequest request)
        {
            var aiResponse = await service.RequestAsync(request);

            Assert.IsNotNull(aiResponse);
            Assert.IsFalse(aiResponse.IsError);
            Assert.IsFalse(string.IsNullOrEmpty(aiResponse.Id));
            Assert.IsNotNull(aiResponse.Result);
            return(aiResponse);
        }
예제 #10
0
        public static string getDialogflow(Request request)
        {
            var config      = new AIConfiguration(accessToken, SupportedLanguage.English);
            var dataService = new AIDataService(config);
            var aiRequest   = new AIRequest(request.Message);
            var aiResponse  = dataService.Request(aiRequest);

            var dialogflowresult = aiResponse.Result.Fulfillment.Speech;

            return(dialogflowresult);
        }
        public async Task TestTextRequest()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var request = new AIRequest("Hello");

            var response = await dataService.RequestAsync(request);

            Assert.IsNotNull(response);
            Assert.AreEqual("greeting", response.Result.Action);
            Assert.AreEqual("Hi! How are you?", response.Result.Fulfillment.Speech);
        }
        public async Task TestTextRequest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var request = new AIRequest("Hello");

            var response = await dataService.RequestAsync(request);

            Assert.IsNotNull(response);
            Assert.AreEqual("greeting", response.Result.Action);
            Assert.AreEqual("Hi! How are you?", response.Result.Fulfillment.Speech);
        }
        public async Task ContextsTest()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);
            var aiRequest   = new AIRequest("weather");

            await dataService.ResetContextsAsync();

            var aiResponse = await MakeRequestAsync(dataService, aiRequest);

            var action = aiResponse.Result.Action;

            Assert.AreEqual("showWeather", action);
            Assert.IsTrue(aiResponse.Result.Contexts.Any(c => c.Name == "weather"));
        }
예제 #14
0
        public void TimeParameterTest()
        {
            var config = new AIConfiguration("23e7d37f6dd24e4eb7dbbd7491f832cf", // special agent with domains
                                             SupportedLanguage.English);

            var dataService = new AIDataService(config);

            var aiRequest = new AIRequest("set alarm to ten pm");
            var response  = MakeRequest(dataService, aiRequest);

            Assert.AreEqual("domains", response.Result.Source);
            Assert.AreEqual("clock.alarm_set", response.Result.Action);

            var stringParameter = response.Result.GetStringParameter("time");

            Assert.IsNotNull(stringParameter);
        }
예제 #15
0
        public void ComplexParameterTest()
        {
            var config = new AIConfiguration("23e7d37f6dd24e4eb7dbbd7491f832cf", // special agent with domains
                                             SupportedLanguage.English);

            var dataService = new AIDataService(config);

            var aiRequest = new AIRequest("Turn off TV at 7pm");
            var response  = MakeRequest(dataService, aiRequest);

            Assert.AreEqual("domains", response.Result.Source);
            Assert.AreEqual("smarthome.appliances_off", response.Result.Action);

            var actionCondition = response.Result.GetJsonParameter("action_condition");

            var timeToken = actionCondition.SelectToken("time");

            Assert.IsNotNull(timeToken);
        }
        public async Task ParametersTest()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var request = new AIRequest("what is your name");

            var response = await MakeRequestAsync(dataService, request);

            Assert.IsNotNull(response.Result.Parameters);
            Assert.IsTrue(response.Result.Parameters.Count > 0);

            Assert.IsTrue(response.Result.Parameters.ContainsKey("my_name"));
            Assert.IsTrue(response.Result.Parameters.ContainsValue("Sam"));

            Assert.IsNotNull(response.Result.Contexts);
            Assert.IsTrue(response.Result.Contexts.Length > 0);
            var context = response.Result.Contexts[0];

            Assert.IsNotNull(context.Parameters);
            Assert.IsTrue(context.Parameters.ContainsKey("my_name"));
            Assert.IsTrue(context.Parameters.ContainsValue("Sam"));
        }
        public async Task EntitiesTest()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var aiRequest = new AIRequest("hi nori");

            var myDwarfs = new Entity("dwarfs");

            myDwarfs.AddEntry(new EntityEntry("Ori", new[] { "ori", "Nori" }));
            myDwarfs.AddEntry(new EntityEntry("bifur", new[] { "Bofur", "Bombur" }));

            var extraEntities = new List <Entity> {
                myDwarfs
            };

            aiRequest.Entities = extraEntities;

            var aiResponse = await MakeRequestAsync(dataService, aiRequest);

            Assert.IsTrue(!string.IsNullOrEmpty(aiResponse.Result.ResolvedQuery));
            Assert.AreEqual("say_hi", aiResponse.Result.Action);
            Assert.AreEqual("hi Bilbo, I am Ori", aiResponse.Result.Fulfillment.Speech);
        }
        public void DifferentAgentsTest()
        {
            var query = "I want pizza";

            {
                var dataService = CreateDataService();

                var request = new AIRequest(query);

                var response = dataService.Request(request);
                Assert.IsNotNull(response.Result);
                Assert.AreEqual("pizza", response.Result.Action);
            }

            {
                var config      = new AIConfiguration(SUBSCRIPTION_KEY, "968235e8e4954cf0bb0dc07736725ecd", SupportedLanguage.English);
                var dataService = new AIDataService(config);
                var request     = new AIRequest(query);

                var response = dataService.Request(request);
                Assert.IsNotNull(response.Result);
                Assert.IsTrue(string.IsNullOrEmpty(response.Result.Action));
            }
        }
        public async Task ResetContextsTest()
        {
            var config      = new AIConfiguration(ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            await dataService.ResetContextsAsync();

            {
                var aiRequest  = new AIRequest("what is your name");
                var aiResponse = await MakeRequestAsync(dataService, aiRequest);

                Assert.IsTrue(aiResponse.Result.Contexts.Any(c => c.Name == "name_question"));
                var resetSucceed = await dataService.ResetContextsAsync();

                Assert.IsTrue(resetSucceed);
            }

            {
                var aiRequest  = new AIRequest("hello");
                var aiResponse = await MakeRequestAsync(dataService, aiRequest);

                Assert.IsFalse(aiResponse.Result.Contexts.Any(c => c.Name == "name_question"));
            }
        }
예제 #20
0
 protected AIService(AIConfiguration config)
 {
     this.config = config;
     dataService = new AIDataService(config);
 }
 private async Task<AIResponse> MakeRequestAsync(AIDataService service, AIRequest request)
 {
     var aiResponse = await service.RequestAsync(request);
     Assert.IsNotNull(aiResponse);
     Assert.IsFalse(aiResponse.IsError);
     Assert.IsFalse(string.IsNullOrEmpty(aiResponse.Id));
     Assert.IsNotNull(aiResponse.Result);
     return aiResponse;
 }
        public async Task WrongEntitiesTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var aiRequest = new AIRequest("hi nori");

            var myDwarfs = new Entity("not_dwarfs");
            myDwarfs.AddEntry(new EntityEntry("Ori", new[] { "ori", "Nori" }));
            myDwarfs.AddEntry(new EntityEntry("bifur", new[] { "Bofur", "Bombur" }));

            var extraEntities = new List<Entity> { myDwarfs };

            aiRequest.Entities = extraEntities;

            try
            {
                var aiResponse = await MakeRequestAsync(dataService, aiRequest);
                Assert.IsTrue(false, "Request should throws bad_request exception");
            }
            catch (AIServiceException e)
            {
                Assert.IsTrue(true);
            }
        }
        public async Task ResetContextsTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            await dataService.ResetContextsAsync();

            {
                var aiRequest = new AIRequest("what is your name");
                var aiResponse = await MakeRequestAsync(dataService, aiRequest);
                Assert.IsTrue(aiResponse.Result.Contexts.Any(c => c.Name == "name_question"));
                var resetSucceed = await dataService.ResetContextsAsync();
                Assert.IsTrue(resetSucceed);
            }

            {
                var aiRequest = new AIRequest("hello");
                var aiResponse = await MakeRequestAsync(dataService, aiRequest);
                Assert.IsFalse(aiResponse.Result.Contexts.Any(c => c.Name == "name_question"));
            }

        }
        public async Task ContextsTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);
            var aiRequest = new AIRequest("weather");

            await dataService.ResetContextsAsync();

            var aiResponse = await MakeRequestAsync(dataService, aiRequest);
            var action = aiResponse.Result.Action;
            Assert.AreEqual("showWeather", action);
            Assert.IsTrue(aiResponse.Result.Contexts.Any(c => c.Name == "weather"));

        }
        public async Task EntitiesTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var aiRequest = new AIRequest("hi nori");

            var myDwarfs = new Entity("dwarfs");
            myDwarfs.AddEntry(new EntityEntry("Ori", new[] { "ori", "Nori" }));
            myDwarfs.AddEntry(new EntityEntry("bifur", new[] { "Bofur", "Bombur" }));

            var extraEntities = new List<Entity> { myDwarfs };

            aiRequest.Entities = extraEntities;

            var aiResponse = await MakeRequestAsync(dataService, aiRequest);

            Assert.IsTrue(!string.IsNullOrEmpty(aiResponse.Result.ResolvedQuery));
            Assert.AreEqual("say_hi", aiResponse.Result.Action);
            Assert.AreEqual("hi Bilbo, I am Ori", aiResponse.Result.Fulfillment.Speech);
        }
예제 #26
0
 private void Init(string accessToken = "Paste your default 'Client access token' from api.ai settings here")
 {
     messagesFromBot = new List <string>();
     config          = new AIConfiguration(accessToken, SupportedLanguage.English);
     dataService     = new AIDataService(config);
 }
        public async Task ParametersTest()
        {
            var config = new AIConfiguration(SUBSCRIPTION_KEY, ACCESS_TOKEN, SupportedLanguage.English);
            var dataService = new AIDataService(config);

            var request = new AIRequest("what is your name");

            var response = await MakeRequestAsync(dataService, request);

            Assert.IsNotNull(response.Result.Parameters);
            Assert.IsTrue(response.Result.Parameters.Count > 0);

            Assert.IsTrue(response.Result.Parameters.ContainsKey("my_name"));
            Assert.IsTrue(response.Result.Parameters.ContainsValue("Sam"));

            Assert.IsNotNull(response.Result.Contexts);
            Assert.IsTrue(response.Result.Contexts.Length > 0);
            var context = response.Result.Contexts[0];

            Assert.IsNotNull(context.Parameters);
            Assert.IsTrue(context.Parameters.ContainsKey("my_name"));
            Assert.IsTrue(context.Parameters.ContainsValue("Sam"));
        }