Добавить высказывания в приложение LUIS, используя C # - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь реализовать код C#, который может добавлять высказывания в мои Luis API, как это показано в этом руководстве .

Так что меня интересует толькофункцию AddUtterances() и чтобы проверить ее, я включил ее в функцию ShowLuisResult(), чтобы убедиться, что она будет использоваться каждый раз, когда я отправляю сообщение в чат-бота, но когда я смотрю в API, я вижу, что никакое высказывание не добавляется...

Я поместил файл utterances.json в то же место, что и BasicLuisDialog.cs, и в /d/home в консоли kudu, чтобы убедиться, что он работает.

Вот код:

using System;
using System.Configuration;
using System.Threading.Tasks;

using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Builder.Luis;
using Microsoft.Bot.Builder.Luis.Models;

using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;
using System.Net.Http;
using System.Xml.Linq;

namespace Microsoft.Bot.Sample.LuisBot
{
    // For more information about this template visit http://aka.ms/azurebots-csharp-luis
    [Serializable]
    public class BasicLuisDialog : LuisDialog<object>
    {

        // NOTE: Replace this example LUIS application ID with the ID of your LUIS application.
        static string appID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";

        // NOTE: Replace this example LUIS application version number with the version number of your LUIS application.
        static string appVersion = "0.1";

        // NOTE: Replace this example LUIS authoring key with a valid key.
        static string authoringKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

        static string host = "https://westus.api.cognitive.microsoft.com";
        static string path = "/luis/api/v2.0/apps/" + appID + "/versions/" + appVersion + "/";


    public BasicLuisDialog() : base(new LuisService(new LuisModelAttribute(
        ConfigurationManager.AppSettings["LuisAppId"], 
        ConfigurationManager.AppSettings["LuisAPIKey"], 
        domain: ConfigurationManager.AppSettings["LuisAPIHostName"])))
    {
    }

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

    // Go to https://luis.ai and create a new intent, then train/publish your luis app.
    // Finally replace "Greeting" with the name of your newly created intent in the following handler
    [LuisIntent("Greeting")]
    public async Task GreetingIntent(IDialogContext context, LuisResult result)
    {
        await this.ShowLuisResult(context, result);
    }

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

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

    private async Task ShowLuisResult(IDialogContext context, LuisResult result) 
    {
        AddUtterances("utterances.json");
        await context.PostAsync($"You have reached {result.Intents[0].Intent}. You said: {result.Query}");
        context.Wait(MessageReceived);
    }


    async static Task AddUtterances(string input_file)
    {
        string uri = host + path + "examples";
        string requestBody = File.ReadAllText(input_file);
        var response = await SendPost(uri, requestBody);
        var result = await response.Content.ReadAsStringAsync();
    }

    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);
            request.Content = new StringContent(requestBody, Encoding.UTF8, "text/json");
            request.Headers.Add("Ocp-Apim-Subscription-Key", authoringKey);
            return await client.SendAsync(request);
        }
    }


}

}

А вот содержание utterances.json:

[
    {
        "text": "go to Seattle",
        "intentName": "Help",
        "entityLabels": []
    },
    {
        "text": "book a flight",
        "intentName": "Greeting",
        "entityLabels": []
    }
]

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Я не проверял ваш код, но заметил, что вы не ожидаете вызова AddUtterances из ShowLuisResult:

private async Task ShowLuisResult(IDialogContext context, LuisResult result)
{
    AddUtterances("utterances.json"); //<-- NOTE: this line should be awaited
    await context.PostAsync($"You have reached {result.Intents[0].Intent}. You said: {result.Query}");
    context.Wait(MessageReceived);
}
0 голосов
/ 27 августа 2018

По какой-то причине инструменты Botbuilder для Luis ушли с Github, как видно, что они были здесь 2 недели назад -

Кэш Google инструментов Luis Bot Builder git

Захват изображения git со всеми функциями формы CLI Luis - нет необходимости в полной программе

Я пока не могу опубликовать изображения, поэтому здесь есть ссылка на картинку https://imgur.com/Rl41wtn

...