如何以编程方式查询 LUIS

How to query into LUIS programmatically

默认情况下,这是我们如何将文本发送到 LUIS 进行处理和 returns 意图。

    [Serializable]
    public class LuisDialogController : LuisDialog<FAQConversation>
    {
        private readonly BuildFormDelegate<FAQConversation> _newConversation;

        public LuisDialogController(BuildFormDelegate<FAQConversation> newConversation) : base(new LuisService(new LuisModelAttribute(
            ConfigurationManager.AppSettings["LuisAppId"],
            ConfigurationManager.AppSettings["LuisAPIKey"],
            domain: ConfigurationManager.AppSettings["LuisAPIHostName"])))
        {
            this._newConversation = newConversation;
        }

        [LuisIntent("None")]
        public async Task NoneIntent(IDialogContext context, LuisResult result)
        {
            await this.ShowLuisResult(context, result);
        }
}

我想知道如何以编程方式向 LUIS 发送文本。

//pseudocode
var foo = new Luis();
var luisIntent = foo.processLanguage("How are you?");
switch(luisIntent)
{
   case LuisIntent.Inquiry:
   {
       //do something; break;
   }
   default:
   {
       //do something else; break;
   }
}

我一直在看这个 solution,但是他没有给出正则表达式来回答。

这个想法可行吗?

在您的 LUIS 模型的发布部分,您有 "Resources and Keys" 小节

在 "Endpoint" 列下方,您有 url(s) 可用于通过 http GET 从 LUIS 检索数据:

https://*.api.cognitive.microsoft.com/luis/v2.0/apps/
*?subscription-key=*&verbose=true&timezoneOffset=0&q=this%20is%20test%20sentence

它将为您提供 JSON 结果,其结构类似于:

{
  "query": "this is test sentence",
  "topScoringIntent": {
    "intent": "None",
    "score": 0.522913933
  },
  "intents": [
    ...
  ],
  "entities": []
}

参见 more detail and sample C# code here

或者您可以使用:

    using Microsoft.Bot.Builder.Luis;
    ...
    var model = new LuisModel() {};
    var luisService = new LuisService(model);
    var result = await luisService.QueryAsync(textToAnalyze, CancellationToken.None);