Beispiel #1
0
        private async Task CreateUserWalletAsync(IDialogContext context, IAwaitable <object> result)
        {
            var activity = await result as Activity;

            await activity.StartTypingAndWaitAsync();

            var recognizes = new PromptRecognizer().RecognizeDouble(activity);
            var recognize  = recognizes.FirstOrDefault();

            if (recognize != null)
            {
                var userId   = context.GetUserId();
                var walletId = await FinancialApi.Dispatcher.CreateWalletAsync(userId.Value, recognize.Entity);

                context.SetUserWalletId(walletId);
                await context.PostAsync("Bacana! Temos tudo configurado agora! Podemos começar a registrar suas transações!");

                context.Done(RootDialog.Ok);
            }
            else
            {
                await context.PostAsync("Por favor, escreva um valor válido!");

                context.Wait(CreateUserWalletAsync);
            }
        }
        public bool?RecognizeEntity(IMessageActivity messageActivity)
        {
            var yesKey  = PromptDialog.PromptConfirm.Yes.ToString(CultureInfo.InvariantCulture);
            var noKey   = PromptDialog.PromptConfirm.No.ToString(CultureInfo.InvariantCulture);
            var choices = new Dictionary <string, IReadOnlyList <string> >
            {
                {
                    yesKey,
                    this.patterns[PromptDialog.PromptConfirm.Yes].Select(x => x.ToLowerInvariant())
                    .ToList()
                },
                {
                    noKey,
                    this.patterns[PromptDialog.PromptConfirm.No].Select(x => x.ToLowerInvariant())
                    .ToList()
                }
            };

            var promptRecognizer = new PromptRecognizer();
            var entityMatches    = promptRecognizer.RecognizeChoices(messageActivity, choices);
            var entityWinner     = entityMatches.MaxBy(x => x.Score) ?? new RecognizeEntity <string>();

            return(entityWinner.Entity == yesKey
                ? true
                : (entityWinner.Entity == noKey
                    ? (bool?)false
                    : null));
        }
Beispiel #3
0
        public void TestNotRecognizeRegex()
        {
            var activity = new Activity {
                Text = "foo"
            };
            var result = new PromptRecognizer().RecognizeLocalizedRegExp(activity, "Exp1", TestResources.ResourceManager);

            Assert.AreEqual(result.Count(), 0);
        }
Beispiel #4
0
        public void TestRecognizeUsingDefaultCultureWhenLocaleNotFound()
        {
            var activity = new Activity {
                Text = "aider", Locale = "fr-FR"
            };
            var result = new PromptRecognizer().RecognizeLocalizedRegExp(activity, "Exp1", TestResources.ResourceManager);

            Assert.AreEqual(result.Count(), 0);
        }
Beispiel #5
0
        public void RecognizeTerm()
        {
            var activity = new Activity()
            {
                Text = "the value is twelve."
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity, null);

            Assert.AreEqual(12, result.FirstOrDefault().Entity);
        }
        private void PromptRecognizersChoice(string choicesKey, string text, string expected, string locale = null)
        {
            var activity = new Activity {
                Text = text, Locale = locale
            };
            var results = new PromptRecognizer().RecognizeLocalizedChoices(activity, choicesKey, Resources.ResourceManager, null);
            var top     = results.MaxBy(x => x.Score);

            Assert.AreEqual(expected, top.Entity);
        }
Beispiel #7
0
        private void PromptRecognizersOrdinals(string text, long expected, string locale = null)
        {
            var activity = new Activity {
                Text = text, Locale = locale
            };
            var results = new PromptRecognizer().RecognizeOrdinals(activity);
            var top     = results.MaxBy(x => x.Score);

            Assert.AreEqual(expected, top.Entity);
        }
Beispiel #8
0
        public void TestRecognizeBooleanFalse()
        {
            var activity = new Activity {
                Text = "no"
            };
            var result = new PromptRecognizer().RecognizeBooleans(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(false, result.First().Entity);
        }
Beispiel #9
0
        public void TestRecognizeChoiceWithoutSynonym()
        {
            var expectedValue = "c";
            var activity      = new Activity {
                Text = "c"
            };
            var result = new PromptRecognizer().RecognizeLocalizedChoices(activity, "Choices1", TestResources.ResourceManager, null);

            Assert.AreEqual(result.Count(), 1);
            Assert.AreEqual(result.FirstOrDefault().Entity, expectedValue);
        }
Beispiel #10
0
        public void TestRecognizeUsingDefaultCulture()
        {
            var expectedValue = "help";
            var activity      = new Activity {
                Text = expectedValue, Locale = "fr-FR"
            };
            var result = new PromptRecognizer().RecognizeLocalizedRegExp(activity, "Exp1", TestResources.ResourceManager);

            Assert.AreEqual(result.Count(), 1);
            Assert.AreEqual(result.FirstOrDefault().Entity, expectedValue);
        }
Beispiel #11
0
        public void TestRecognizeCardinal()
        {
            var activity = new Activity {
                Text = "1.23"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(1.23, result.First().Entity); // Can change the decimal point?
        }
Beispiel #12
0
        public void TestRecognizeCardinalWords()
        {
            var activity = new Activity {
                Text = "seven"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(7, result.First().Entity);
        }
Beispiel #13
0
        public void TestRecognizePositiveNumber()
        {
            var activity = new Activity {
                Text = "I will take +12"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(12, result.First().Entity);
        }
Beispiel #14
0
        public void RecognizeTerm_Spanish()
        {
            var activity = new Activity()
            {
                Text   = "El valor es doce.",
                Locale = "es"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity, null);

            Assert.AreEqual(12, result.FirstOrDefault().Entity);
        }
Beispiel #15
0
        public void TestRecognizeOrdinal()
        {
            var activity = new Activity {
                Text = "i'd like the second one"
            };
            var result = new PromptRecognizer().RecognizeOrdinals(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(2, result.First().Entity);
        }
Beispiel #16
0
        public void TestRecognizeNegativeNumber()
        {
            var activity = new Activity {
                Text = "-13"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(-13, result.First().Entity);
        }
Beispiel #17
0
        public void TestNotRecognizeChoiceValueIgnored()
        {
            var activity = new Activity {
                Text = "a"
            };
            var options = new PromptRecognizeChoicesOptions {
                ExcludeValue = true
            };
            var result = new PromptRecognizer().RecognizeLocalizedChoices(activity, "Choices1", TestResources.ResourceManager, options);

            Assert.AreEqual(result.Count(), 0);
        }
Beispiel #18
0
        public void TestRecognizeMultipleBoolean()
        {
            var activity = new Activity {
                Text = "yes and no"
            };
            var result = new PromptRecognizer().RecognizeBooleans(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(true, result.First().Entity);
            Assert.AreEqual(false, result.Last().Entity);
        }
Beispiel #19
0
        public void RecognizeNumbersWithLimits()
        {
            var activity = new Activity()
            {
                Text = "the value is 12"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity, new PromptRecognizeNumbersOptions {
                IntegerOnly = true, MinValue = 50, MaxValue = 100
            });

            Assert.AreEqual(0, result.Count());
        }
Beispiel #20
0
        public void TestRecognizeMultipleNumber()
        {
            var activity = new Activity {
                Text = "1.7 and seven"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity);

            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(1.7, result.First().Entity);
            Assert.AreEqual(7, result.Last().Entity);
        }
Beispiel #21
0
        private void TestRecognizeBooleanValue(string text, bool expectedResult)
        {
            var activity = new Activity()
            {
                Text = text
            };
            var result = new PromptRecognizer().RecognizeBooleans(activity);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());
            Assert.AreEqual(expectedResult, result.FirstOrDefault().Entity);
        }
Beispiel #22
0
        public void TestRecognizeReverseOrdinal()
        {
            var activity = new Activity {
                Text = "i'd like the second to last one"
            };
            var results = new PromptRecognizer().RecognizeOrdinals(activity);

            Assert.IsNotNull(results);
            Assert.IsTrue(results.Count() >= 2);
            var top = results.MaxBy(x => x.Score);

            Assert.AreEqual(-2, top.Entity);
        }
Beispiel #23
0
        public void TestRecognizeRangeNumbers()
        {
            var activity = new Activity {
                Text = "1, 2.3, and seven"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity, new PromptRecognizeNumbersOptions {
                MinValue = 2, MaxValue = 5
            });

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(2.3, result.First().Entity);
        }
Beispiel #24
0
        public void TestRecognizeMultipleIntegerOnly()
        {
            var activity = new Activity {
                Text = "1, 2.3, and seven"
            };
            var result = new PromptRecognizer().RecognizeNumbers(activity, new PromptRecognizeNumbersOptions {
                IntegerOnly = true
            });

            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(1, result.First().Entity);
            Assert.AreEqual(7, result.Last().Entity);
        }
Beispiel #25
0
        private void TestRecognizeTimeValue(string text, int hour = 0, int minute = 0, int second = 0, int millisecond = 0)
        {
            var activity = new Activity()
            {
                Text = text
            };

            var result = new PromptRecognizer().RecognizeTimes(activity);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());

            DateTime now          = DateTime.Now;
            DateTime expectedDate = new DateTime(now.Year, now.Month, now.Day, hour, minute, second, millisecond);

            string expectedResult = expectedDate.TimeOfDay.ToString();

            Assert.AreEqual(expectedResult, result.FirstOrDefault().Entity);
        }