Exemplo n.º 1
0
        public static void ReadsBooleanConfigurationValues(string propertyName, string configurationKey)
        {
            var trueConfiguration = new ConfigurationBuilder()
                                    .AddInMemoryCollection(new Dictionary <string, string>
            {
                { configurationKey, true.ToString(CultureInfo.InvariantCulture) },
            })
                                    .Build();

            var trueLuisConfiguration = new LuisConfiguration(trueConfiguration);
            var property          = typeof(LuisConfiguration).GetProperty(propertyName);
            var truePropertyValue = property.GetValue(trueLuisConfiguration);

            truePropertyValue.As <bool>().Should().BeTrue();

            var emptyConfiguration = new ConfigurationBuilder()
                                     .Build();

            var emptyLuisConfiguration = new LuisConfiguration(emptyConfiguration);
            var emptyPropertyValue     = property.GetValue(emptyLuisConfiguration);

            emptyPropertyValue.As <bool>().Should().BeFalse();

            var falseConfiguration = new ConfigurationBuilder()
                                     .AddInMemoryCollection(new Dictionary <string, string>
            {
                { configurationKey, false.ToString(CultureInfo.InvariantCulture) },
            })
                                     .Build();

            var falseLuisConfiguration = new LuisConfiguration(falseConfiguration);
            var falsePropertyValue     = property.GetValue(falseLuisConfiguration);

            falsePropertyValue.As <bool>().Should().BeFalse();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        private static void Main(string[] args)
        {
            //ApplicationContext ctx = new ApplicationContext();
            //ctx.Database.Initialize(false);

            var context = new Dictionary <string, object>
            {
                { "outputStrings", outputStrings }
            };

            LuisConfiguration configuration = null;
            XmlSerializer     serializer    = new XmlSerializer(typeof(LuisConfiguration));

            using (TextReader reader = new StreamReader(FILENAME))
            {
                configuration = (LuisConfiguration)serializer.Deserialize(reader);
            }

            var luisConfiguration           = XmlStatesConverter.Convert(configuration);
            LuisCommunicationManager client = new LuisCommunicationManager(
                "a9777fd2-0c56-4a76-b3b4-740b387c05d5", "0c13af8b1228447bb2ce26e7be709940",
                luisConfiguration, context);

            client.Start();

            foreach (var message in userInputs)
            {
                Console.WriteLine("User: "******"\nPress any key to continue...");
            Console.ReadKey();
        }
Exemplo n.º 3
0
        public static void EmptyConfigurationReturnsNullValue(string propertyName)
        {
            var luisConfiguration = new LuisConfiguration(new ConfigurationBuilder().Build());
            var property          = typeof(LuisConfiguration).GetProperty(propertyName);

            property.GetValue(luisConfiguration).Should().BeNull();
        }
Exemplo n.º 4
0
        public static void GeneratesRandomAppNameWithEmptyConfiguration()
        {
            var configuration = new ConfigurationBuilder()
                                .Build();

            var luisConfiguration = new LuisConfiguration(configuration);

            luisConfiguration.AppName.Should().MatchRegex(@"^[A-Z]{8}$");
        }
Exemplo n.º 5
0
        public static void GeneratesVersionWithPrefixAndBuildId()
        {
            var luisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                          .AddInMemoryCollection(new Dictionary <string, string>
            {
                { "luisVersionPrefix", "2.0" },
                { "BUILD_BUILDID", 999.ToString(CultureInfo.InvariantCulture) },
            })
                                                          .Build());

            luisConfiguration.VersionId.Should().Be("2.0.999");
        }
Exemplo n.º 6
0
        public static void GeneratesAppNameWithPrefix()
        {
            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(new Dictionary <string, string>
            {
                { "luisAppNamePrefix", "foo" },
            })
                                .Build();

            var luisConfiguration = new LuisConfiguration(configuration);

            luisConfiguration.AppName.Should().MatchRegex(@"^foo_[A-Z]{8}$");
        }
Exemplo n.º 7
0
        public static void UseSpeechEndpointWithCustomSpeechAppId()
        {
            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(new Dictionary <string, string>
            {
                { "customSpeechAppId", Guid.NewGuid().ToString() },
            })
                                .Build();

            var luisConfiguration = new LuisConfiguration(configuration);

            luisConfiguration.UseSpeechEndpoint.Should().BeTrue();
        }
Exemplo n.º 8
0
        public static void ThrowsInvalidOperationForMissingConfiguration(string propertyName, params string[] configurationKeys)
        {
            var    luisConfiguration    = new LuisConfiguration(new ConfigurationBuilder().Build());
            var    property             = typeof(LuisConfiguration).GetProperty(propertyName);
            Action missingConfiguration = () => property.GetValue(luisConfiguration);
            var    shouldThrow          = missingConfiguration.Should().Throw <TargetInvocationException>();

            shouldThrow.And.InnerException.Should().BeOfType <InvalidOperationException>();

            foreach (var key in configurationKeys)
            {
                shouldThrow.And.InnerException.Message.Should().Contain(key);
            }
        }
Exemplo n.º 9
0
        public static void ReadsStringConfigurationValues(string propertyName, string configurationKey)
        {
            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(new Dictionary <string, string>
            {
                { configurationKey, Guid.NewGuid().ToString() },
            })
                                .Build();

            var luisConfiguration = new LuisConfiguration(configuration);
            var property          = typeof(LuisConfiguration).GetProperty(propertyName);
            var propertyValue     = property.GetValue(luisConfiguration);

            propertyValue.Should().Be(configuration[configurationKey]);
        }
Exemplo n.º 10
0
        public static void CreatesDefaultSpeechEndpoint(string regionKey, string regionValue)
        {
            var luisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                          .AddInMemoryCollection(new Dictionary <string, string>
            {
                { regionKey, regionValue },
            })
                                                          .Build());

            luisConfiguration.SpeechEndpoint.Should().Be(
                new Uri(string.Format(
                            CultureInfo.InvariantCulture,
                            @"https://{0}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US",
                            regionValue)));
        }
Exemplo n.º 11
0
        public static void CreatesDefaultSpeechEndpointFromSpeechRegion()
        {
            var speechRegion      = Guid.NewGuid().ToString();
            var luisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                          .AddInMemoryCollection(new Dictionary <string, string>
            {
                { "speechRegion", speechRegion },
            })
                                                          .Build());

            luisConfiguration.SpeechEndpoint.Should().Be(
                string.Format(
                    CultureInfo.InvariantCulture,
                    @"https://{0}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US",
                    speechRegion));
        }
Exemplo n.º 12
0
        public static void CreatesEndpointFromRegion(string propertyName, string configurationKey, string template, string otherKey)
        {
            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(new Dictionary <string, string>
            {
                { configurationKey, Guid.NewGuid().ToString() },
                { otherKey, Guid.NewGuid().ToString() },
            })
                                .Build();

            var luisConfiguration = new LuisConfiguration(configuration);
            var property          = typeof(LuisConfiguration).GetProperty(propertyName);
            var propertyValue     = property.GetValue(luisConfiguration);

            propertyValue.Should().Be(string.Format(CultureInfo.InvariantCulture, template, configuration[configurationKey]));
        }
Exemplo n.º 13
0
            public LuisNLUTrainClient Build()
            {
                this.MockLuisTrainClient.SetReturnsDefault(
                    Task.FromResult <IList <ModelTrainingInfo> >(
                        Array.Empty <ModelTrainingInfo>()));

                var luisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                              .AddInMemoryCollection(new Dictionary <string, string>
                {
                    { "luisAppId", this.AppId },
                    { "luisVersionId", this.AppVersion },
                    { "luisAppName", this.AppName },
                })
                                                              .Build());

                return(new LuisNLUTrainClient(luisConfiguration, this.LuisSettings, this.MockLuisTrainClient.Object));
            }
Exemplo n.º 14
0
        public static void CreatesCustomSpeechEndpoint(string regionKey, string regionValue)
        {
            var appId             = Guid.NewGuid().ToString();
            var luisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                          .AddInMemoryCollection(new Dictionary <string, string>
            {
                { regionKey, regionValue },
                { "customSpeechAppId", appId },
            })
                                                          .Build());

            luisConfiguration.SpeechEndpoint.Should().Be(
                new Uri(string.Format(
                            CultureInfo.InvariantCulture,
                            @"https://{0}.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?language=en-US&?cid={1}",
                            regionValue,
                            appId)));
        }
Exemplo n.º 15
0
 public TwitchChatBotService(
     IOptions <TwitchConfiguration> twitchConfiguration,
     IOptions <LuisConfiguration> luisConfiguration,
     IChatMessageService chatMessageService,
     ITwitchUserChatRepository twitchUserChatRepository,
     ITwitchNewSubscriberRepository twitchNewSubscriberRepository,
     ITwitchUserAttendanceEventRepository twitchUserAttendanceEventRepository,
     ILuisService luisService
     )
 {
     _twitchConfiguration                 = twitchConfiguration.Value ?? throw new ArgumentNullException(nameof(twitchConfiguration));
     _luisConfiguration                   = luisConfiguration.Value ?? throw new ArgumentNullException(nameof(luisConfiguration));
     _chatMessageService                  = chatMessageService ?? throw new ArgumentNullException(nameof(chatMessageService));
     _twitchUserChatRepository            = twitchUserChatRepository ?? throw new ArgumentNullException(nameof(twitchUserChatRepository));
     _twitchNewSubscriberRepository       = twitchNewSubscriberRepository ?? throw new ArgumentNullException(nameof(twitchNewSubscriberRepository));
     _twitchUserAttendanceEventRepository = twitchUserAttendanceEventRepository ?? throw new ArgumentNullException(nameof(twitchUserAttendanceEventRepository));
     _twitchClientConnectionCredentials   = new ConnectionCredentials(_twitchConfiguration.BotUserName, _twitchConfiguration.BotToken);
     _luisService  = luisService ?? throw new ArgumentNullException(nameof(luisService));
     _twitchClient = new TwitchClient();
 }
Exemplo n.º 16
0
        public static void ThrowsArgumentNull()
        {
            var    luisTrainClient       = new Mock <ILuisTrainClient>().Object;
            var    luisConfiguration     = new LuisConfiguration(new ConfigurationBuilder().Build());
            Action nullLuisConfiguration = () => new LuisNLUTrainClient(null, new LuisSettings(), luisTrainClient);
            Action nullLuisSettings      = () => new LuisNLUTrainClient(luisConfiguration, null, luisTrainClient);
            Action nullLuisClient        = () => new LuisNLUTrainClient(luisConfiguration, new LuisSettings(), null);

            nullLuisConfiguration.Should().Throw <ArgumentNullException>().And.ParamName.Should().Be("luisConfiguration");
            nullLuisSettings.Should().Throw <ArgumentNullException>().And.ParamName.Should().Be("luisSettings");
            nullLuisClient.Should().Throw <ArgumentNullException>().And.ParamName.Should().Be("luisClient");

            using (var luis = new LuisNLUTrainClientBuilder().Build())
            {
                Func <Task> nullUtterances = () => luis.TrainAsync(null);
                Func <Task> nullUtterance  = () => luis.TrainAsync(new Models.LabeledUtterance[] { null });
                nullUtterances.Should().Throw <ArgumentNullException>().And.ParamName.Should().Be("utterances");
                nullUtterance.Should().Throw <ArgumentException>().And.ParamName.Should().Be("utterances");
            }
        }
Exemplo n.º 17
0
        public static void UsesSlotNameBasedOnIsStaging()
        {
            var emptyLuisConfiguration = new LuisConfiguration(new ConfigurationBuilder().Build());

            emptyLuisConfiguration.SlotName.Should().Be("Production");

            var isStagingLuisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                                   .AddInMemoryCollection(new Dictionary <string, string>
            {
                { "luisIsStaging", true.ToString(CultureInfo.InvariantCulture) },
            })
                                                                   .Build());

            isStagingLuisConfiguration.SlotName.Should().Be("Staging");

            var notIsStagingLuisConfiguration = new LuisConfiguration(new ConfigurationBuilder()
                                                                      .AddInMemoryCollection(new Dictionary <string, string>
            {
                { "luisIsStaging", false.ToString(CultureInfo.InvariantCulture) },
            })
                                                                      .Build());

            notIsStagingLuisConfiguration.SlotName.Should().Be("Production");
        }
Exemplo n.º 18
0
        public LuisService(IOptions <LuisConfiguration> luisConfiguration)
        {
            _luisConfiguration = luisConfiguration.Value ?? throw new ArgumentNullException(nameof(luisConfiguration));

            _httpClient = new HttpClient();
        }