Beispiel #1
0
        private static string[] ExtractV1TimeEntities(ChatState state, LuisResponse luisResponse)
        {
            LuisDateParser parser = new LuisDateParser(state.GetUserTimeZoneOffset());

            var luisTimes = parser.ParseLuisTimes(luisResponse.Entities);

            return((from time in luisTimes
                    where time.Time != null
                    select time.Time.Format12Hour).ToArray());
        }
Beispiel #2
0
        private DateTimeParseResult[] ExtractDateResults(ChatState chatState, LuisResponse luisResponse, bool assumeFuture)
        {
            LuisDateParser parser = new LuisDateParser(chatState.GetUserTimeZoneOffset());

            if (luisResponse?.Entities.Length > 0)
            {
                return(parser.ParseLuisDates(luisResponse.Entities, assumeFuture));
            }

            return(null);
        }
Beispiel #3
0
        public void TestLuisDates()
        {
            var testText  = File.ReadAllText("LuisDateTest.json");
            var testData  = JsonConvert.DeserializeObject <dynamic>(testText);
            int testCount = 0;

            foreach (var test in testData.tests)
            {
                testCount++;
                Console.WriteLine($"Testing {test.input} with Future:{test.assumeFuture}");

                var temp     = JsonConvert.SerializeObject(test.entities);
                var entities = JsonConvert.DeserializeObject <LuisEntity[]>(temp);

                LuisDateParser        parser = new LuisDateParser((DateTime)testData.now, 0);
                DateTimeParseResult[] result = parser.ParseLuisDates(entities, (bool)test.assumeFuture);

                Assert.AreEqual(test.expectedDates.Count, result.Length, (string)test.input);

                for (int i = 0; i < test.expectedDates.Count; i++)
                {
                    Assert.AreEqual((DateTime?)test.expectedDates[i].dateTime, result[i].DateTime, (string)test.input);
                    Assert.AreEqual((DateTime?)test.expectedDates[i].endDateTime, result[i].EndDateTime, (string)test.input);

                    if ((TimeSpan?)test.expectedDates[i].time == null)
                    {
                        Assert.IsNull(result[i].Time);
                    }
                    else
                    {
                        Assert.AreEqual(new Time(((TimeSpan?)test.expectedDates[i].time).Value), result[i].Time, (string)test.input);
                    }

                    if ((TimeSpan?)test.expectedDates[i].endTime == null)
                    {
                        Assert.IsNull(result[i].EndTime);
                    }
                    else
                    {
                        Assert.AreEqual(new Time(((TimeSpan?)test.expectedDates[i].endTime).Value), result[i].EndTime, (string)test.input);
                    }

                    Assert.AreEqual((string)test.expectedDates[i].modifier, result[i].Modifier, (string)test.input);
                }
            }

            // Advanced!
            // this week 5-9pm and next week 6-8pm

            Console.WriteLine($"Ran {testCount} date/time tests");
        }