示例#1
0
        static async Task ProcessTexts()
        {
            string spellCheckKey = File.ReadAllText(@"security\bingSpellcheck.apiKey.private");
            string apiUrl        = File.ReadAllText(@"security\luis.apiUrl.private");
            string apiKey        = File.ReadAllText(@"security\luis.apiKey.private");
            string appId         = File.ReadAllText(@"security\luis.appId.private");

            LuisService svc = new LuisService(apiUrl, apiKey, appId, spellCheckKey);

            string            query1  = "I want to drink latte";
            LuisServiceResult result1 = await svc.Query(query1);

            Console.WriteLine(result1.ToJson());
            Console.WriteLine();

            string            query2  = "I LOVE coffee! I can't wait to drink more!!";
            LuisServiceResult result2 = await svc.Query(query2);

            Console.WriteLine(result2.ToJson());
            Console.WriteLine();

            string            query3  = "I am SO HUNGRY - need food!";
            LuisServiceResult result3 = await svc.Query(query3);

            Console.WriteLine(result3.ToJson());
            Console.WriteLine();
        }
示例#2
0
        protected override async Task MessageReceived(IDialogContext context, IAwaitable <IMessageActivity> item)
        {
            LuisServiceResult winner = await GetWinner(context, item);

            if (winner == null)
            {
                throw new InvalidOperationException("No winning intent selected from Luis results.");
            }

            ILuisAction luisAction = this.actionResolver.ResolveActionFromLuisIntent(winner.Result, out string intentName);

            if (luisAction != null)
            {
                var executionContextChain = new ActionExecutionContext(intentName, luisAction).ToSingleList();
                while (LuisActionResolver.IsContextualAction(luisAction))
                {
                    if (!LuisActionResolver.CanStartWithNoContextAction(luisAction, out LuisActionBindingAttribute luisActionDefinition))
                    {
                        await context.PostAsync($"Cannot start contextual action '{luisActionDefinition.FriendlyName}' without a valid context.");

                        return;
                    }

                    luisAction = LuisActionResolver.BuildContextForContextualAction(luisAction, out intentName);
                    if (luisAction != null)
                    {
                        this.onContextCreation?.Invoke(luisAction, context);
                        executionContextChain.Insert(0, new ActionExecutionContext(intentName, luisAction));
                    }
                }

                if (!luisAction.IsValid(out ICollection <ValidationResult> validationResults))
                {
                    var childDialog = new LuisActionMissingEntitiesDialog(winner.LuisService, executionContextChain);
                    context.Call(childDialog, this.LuisActionMissingDialogFinished);
                }
                else
                {
                    await this.DispatchToLuisActionActivityHandler(context, item, intentName, luisAction);
                }
            }
        }