以编程方式向Luis添加意图

时间:2019-02-19 13:43:00

标签: c# .net-core luis

我需要使用@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/assets/**").addResourceLocations("/assets/"); } 代码将Intents添加到我的Luis应用中。在MS文档中,仅存在以编程方式添加语音的示例。但是我尝试自己做。因此,我在浏览器中导航到我的应用程序,然后添加了一个新的Intent并检查了“网络”标签,并收到了c#这样的请求:

uri: https://westus.api.cognitive.microsoft.com/luis/api/v2.0/apps/App_ID/versions/0.1/intents

这样的请求正文(其中“ testIntent”是添加的意图的名称):

Post

然后我编写了以下代码:

{
  "name": "testIntent"
}

class Program { static void Main(string[] args) { AddIntent().Wait(); } async static Task<HttpResponseMessage> SendPost(string uri, string requestBody) { using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Post; request.RequestUri = new Uri(uri); if (!String.IsNullOrEmpty(requestBody)) { request.Content = new StringContent(requestBody, Encoding.UTF8, "text/json"); } request.Headers.Add("Ocp-Apim-Subscription-Key", authoringKey); return await client.SendAsync(request); } } async static Task AddIntent() { string uri = "https://westus.api.cognitive.microsoft.com/luis/api/v2.0/apps/App_ID/versions/0.1/intents"; string requestBody = File.ReadAllText("json.json"); var response = await SendPost(uri, requestBody); var result = await response.Content.ReadAsStringAsync(); Console.WriteLine(JsonFormatter.Format(result)); } } 文件如下:

json.json

我遇到了错误:

[
    {
      "name": "Intent from c# code!"
    }
]

1 个答案:

答案 0 :(得分:1)

有关Create Intent方法的信息,请参见LUIS API文档:https://westus.dev.cognitive.microsoft.com/docs/services/5890b47c39e2bb17b84a55ff/operations/5890b47c39e2bb052c5b9c0c

身体应如下所示:

{
    "name": "BookFlight"
}

在您的情况下,您提供了一个包含1个项目的数组。

更正它,它将起作用(见下文):

enter image description here