Пример #1
0
 public ILuisService MakeLuisService(ILuisModel model)
 {
     if (model.SubscriptionKey == KeyOne && model.ModelID == ModelOne)
     {
         return(luisOne.Object);
     }
     if (model.SubscriptionKey == KeyTwo && model.ModelID == ModelTwo)
     {
         return(luisTwo.Object);
     }
     throw new NotImplementedException();
 }
Пример #2
0
        public static ILuisService MakeMockedLuisService(ILuisModel model)
        {
            var mock    = new Mock <ILuisService>(MockBehavior.Strict);
            var request = new LuisRequest(query: UtteranceSetAlarm);

            var uri = request.BuildUri(model);

            mock
            .Setup(l => l.BuildUri(It.IsAny <LuisRequest>()))
            .Returns <LuisRequest>(r => ((ILuisService) new LuisService(model)).BuildUri(r));

            mock
            .Setup(l => l.ModifyRequest(It.IsAny <LuisRequest>()))
            .Returns <LuisRequest>(r => r);

            mock
            .Setup(l => l.QueryAsync(It.Is <Uri>(u => u == uri), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new LuisResult()
            {
                Intents = new[]
                {
                    new IntentRecommendation()
                    {
                        Intent = ExampleBot.IntentSetAlarm.IntentName,
                        Score  = 1.0
                    }
                },
                Entities = Array.Empty <EntityModel>(),
            });

            mock
            .Setup(l => l.QueryAsync(It.Is <Uri>(u => u != uri), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new LuisResult()
            {
                Intents  = Array.Empty <IntentRecommendation>(),
                Entities = Array.Empty <EntityModel>(),
            });

            return(mock.Object);
        }
Пример #3
0
 public Task LuisAllTypes(
     ILuisModel model,
     IntentRecommendation intent,
     LuisResult result,
     [Entity("entityTypeA")] string entityA_as_String,
     [Entity("entityTypeA")] IEnumerable <string> entityA_as_IEnumerable_String,
     [Entity("entityTypeA")] IReadOnlyCollection <string> entityA_as_IReadOnlyCollection_String,
     [Entity("entityTypeA")] IReadOnlyList <string> entityA_as_IReadOnlyList_String,
     [Entity("entityTypeA")] EntityRecommendation entityA_as_EntityRecommendation,
     [Entity("entityTypeA")] IEnumerable <EntityRecommendation> entityA_as_IEnumerable_EntityRecommendation,
     [Entity("entityTypeA")] IReadOnlyCollection <EntityRecommendation> entityA_as_IReadOnlyCollection_EntityRecommendation,
     [Entity("entityTypeA")] IReadOnlyList <EntityRecommendation> entityA_as_IReadOnlyList_EntityRecommendation,
     [Entity("entityTypeB")] string entityB_as_String,
     [Entity("entityTypeB")] IEnumerable <string> entityB_as_IEnumerable_String,
     [Entity("entityTypeB")] IReadOnlyCollection <string> entityB_as_IReadOnlyCollection_String,
     [Entity("entityTypeB")] IReadOnlyList <string> entityB_as_IReadOnlyList_String,
     [Entity("entityTypeB")] EntityRecommendation entityB_as_EntityRecommendation,
     [Entity("entityTypeB")] IEnumerable <EntityRecommendation> entityB_as_IEnumerable_EntityRecommendation,
     [Entity("entityTypeB")] IReadOnlyCollection <EntityRecommendation> entityB_as_IReadOnlyCollection_EntityRecommendation,
     [Entity("entityTypeB")] IReadOnlyList <EntityRecommendation> entityB_as_IReadOnlyList_EntityRecommendation)
 {
     return(methods.LuisAllTypes(model, intent, result, entityA_as_String, entityA_as_IEnumerable_String, entityA_as_IReadOnlyCollection_String, entityA_as_IReadOnlyList_String, entityA_as_EntityRecommendation, entityA_as_IEnumerable_EntityRecommendation, entityA_as_IReadOnlyCollection_EntityRecommendation, entityA_as_IReadOnlyList_EntityRecommendation, entityB_as_String, entityB_as_IEnumerable_String, entityB_as_IReadOnlyCollection_String, entityB_as_IReadOnlyList_String, entityB_as_EntityRecommendation, entityB_as_IEnumerable_EntityRecommendation, entityB_as_IReadOnlyCollection_EntityRecommendation, entityB_as_IReadOnlyList_EntityRecommendation));
 }
Пример #4
0
 protected virtual ILuisService MakeService(ILuisModel model)
 {
     return(new LuisService(model));
 }
Пример #5
0
 protected override ILuisService MakeService(ILuisModel model)
 {
     return(this.luis);
 }
Пример #6
0
 public static IScorable <IResolver, IntentRecommendation> When(this IScorable <IResolver, Binding> scorable, ILuisModel model, LuisIntentAttribute intent, ILuisService service = null)
 {
     service = service ?? new LuisService(model);
     return(new LuisIntentScorable <Binding, Binding>(service, model, intent, scorable));
 }
Пример #7
0
 public Task LuisTwo(
     ILuisModel model,
     [Entity("entityTypeA")] string entityA)
 {
     return(methods.LuisTwo(model, entityA));
 }
Пример #8
0
 public LuisIntentScorable(ILuisModel model, LuisIntentAttribute intent, IScorable <IResolver, InnerScore> inner)
     : base(inner)
 {
     SetField.NotNull(out this.model, nameof(model), model);
     SetField.NotNull(out this.intent, nameof(intent), intent);
 }
 /// <summary>
 /// Creates a new <see cref="LuisRecognizerMiddleware"/> object.
 /// </summary>
 /// <param name="luisModel">The LUIS model to use to recognize text.</param>
 /// <param name="luisRecognizerOptions">The LUIS recognizer options to use.</param>
 /// <param name="options">The LUIS request options to use.</param>
 public LuisRecognizerMiddleware(ILuisModel luisModel, ILuisRecognizerOptions luisRecognizerOptions = null, ILuisOptions luisOptions = null)
 {
     _luisModel      = luisModel ?? throw new ArgumentNullException(nameof(luisModel));
     _luisOptions    = luisOptions;
     _luisRecognizer = new LuisRecognizer(luisModel, luisRecognizerOptions, luisOptions);
 }
Пример #10
0
 protected override ILuisService MakeService(ILuisModel model)
 {
     return(MakeLuisService(model));
 }
Пример #11
0
 private static async Task EmitTraceInfo(IBotContext context, LuisResult luisResult, ILuisOptions luisOptions, ILuisModel luisModel)
 {
     var luisTraceInfo = new LuisTraceInfo
     {
         LuisResult  = luisResult,
         LuisOptions = luisOptions,
         LuisModel   = RemoveSensitiveData(luisModel)
     };
     var activity = Activity.CreateTraceActivityReply(context.Activity as Activity, LuisTraceName, LuisTraceType, luisTraceInfo, LuisTraceLabel) as IMessageActivity;
     await context.PostAsync(activity);
 }
Пример #12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LuisService"/> class using the model information.
 /// </summary>
 /// <param name="model">The LUIS model information.</param>
 /// <param name="httpClient">an optional alternate HttpClient.</param>
 public LuisService(ILuisModel model, HttpClient httpClient = null)
 {
     _httpClient = httpClient ?? DefaultHttpClient;
     SetField.NotNull(out this.model, nameof(model), model);
 }
Пример #13
0
 private static async Task EmitTraceInfo(DialogContext context, LuisResult luisResult, ILuisOptions luisOptions, ILuisModel luisModel)
 {
     var luisTraceInfo = new LuisTraceInfo
     {
         LuisResult  = luisResult,
         LuisOptions = luisOptions,
         LuisModel   = RemoveSensitiveData(luisModel)
     };
     var trace = context.Context.Activity.CreateTrace(LuisTraceName, luisTraceInfo, LuisTraceType, LuisTraceLabel);
     await context.Context.SendActivityAsync(trace);
 }
Пример #14
0
 public LuisDialog(ILuisModel model) : base(new LuisService(model))
 {
 }
Пример #15
0
        /// <summary>
        /// Build the Uri for issuing the request for the specified Luis model.
        /// </summary>
        /// <param name="model"> The Luis model.</param>
        /// <returns> The request Uri.</returns>
        public Uri BuildUri(ILuisModel model)
        {
            if (model.ModelID == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "id");
            }
            if (model.SubscriptionKey == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "subscriptionKey");
            }

            var queryParameters = new List <string>();

            queryParameters.Add($"subscription-key={Uri.EscapeDataString(model.SubscriptionKey)}");
            queryParameters.Add($"q={Uri.EscapeDataString(Query)}");
            UriBuilder builder;

            var id = Uri.EscapeDataString(model.ModelID);

            switch (model.ApiVersion)
            {
#pragma warning disable CS0612
            case LuisApiVersion.V1:
                builder = new UriBuilder(model.UriBase);
                queryParameters.Add($"id={id}");
                break;

#pragma warning restore CS0612
            case LuisApiVersion.V2:
                //v2.0 have the model as path parameter
                builder = new UriBuilder(new Uri(model.UriBase, id));
                break;

            default:
                throw new ArgumentException($"{model.ApiVersion} is not a valid Luis api version.");
            }

            if (Log != null)
            {
                queryParameters.Add($"log={Uri.EscapeDataString(Convert.ToString(Log))}");
            }
            if (SpellCheck != null)
            {
                queryParameters.Add($"spellCheck={Uri.EscapeDataString(Convert.ToString(SpellCheck))}");
            }
            if (Staging != null)
            {
                queryParameters.Add($"staging={Uri.EscapeDataString(Convert.ToString(Staging))}");
            }
            if (TimezoneOffset != null)
            {
                queryParameters.Add($"timezoneOffset={Uri.EscapeDataString(Convert.ToString(TimezoneOffset))}");
            }
            if (Verbose != null)
            {
                queryParameters.Add($"verbose={Uri.EscapeDataString(Convert.ToString(Verbose))}");
            }
            if (!string.IsNullOrWhiteSpace(BingSpellCheckSubscriptionKey))
            {
                queryParameters.Add($"bing-spell-check-subscription-key={Uri.EscapeDataString(BingSpellCheckSubscriptionKey)}");
            }
#pragma warning disable CS0618
            if (ContextId != null)
            {
                queryParameters.Add($"contextId={Uri.EscapeDataString(ContextId)}");
            }
            if (ForceSet != null)
            {
                queryParameters.Add($"forceSet={Uri.EscapeDataString(ForceSet)}");
            }
#pragma warning restore CS0618
            if (ExtraParameters != null)
            {
                queryParameters.Add(ExtraParameters);
            }
            builder.Query = string.Join("&", queryParameters);
            return(builder.Uri);
        }
Пример #16
0
 public Task LuisNone(ILuisModel model)
 {
     return(methods.LuisNone(model));
 }
Пример #17
0
 /// <summary>
 /// Construct the LUIS service using the model information.
 /// </summary>
 /// <param name="model">The LUIS model information.</param>
 public LuisService(ILuisModel model)
 {
     SetField.NotNull(out this.model, nameof(model), model);
 }
Пример #18
0
 public Task LuisOne(
     ILuisModel model,
     [Entity("entityTypeA")] IEnumerable <string> entityA)
 {
     return(methods.LuisOne(model, entityA));
 }
 /// <summary>
 /// Removes sensitive information from a LUIS model.
 /// </summary>
 /// <param name="luisModel">The model.</param>
 /// <returns>A new model with the sensitive information removed.</returns>
 public static ILuisModel RemoveSensitiveData(ILuisModel luisModel)
 {
     return(new LuisModel(luisModel.ModelID, Obfuscated, luisModel.UriBase, luisModel.ApiVersion));
 }
Пример #20
0
 public static ILuisModel RemoveSensitiveData(ILuisModel luisModel)
 {
     return(new LuisModelAttribute(luisModel.ModelID, Obfuscated, luisModel.ApiVersion, luisModel.UriBase.Host, luisModel.Threshold));
 }