Возврат объекта только из LUIS

Что, если я просто хочу вернуть объект из текста, отправленного в LUIS из BotFramework, но он не запускается каким-либо намерением? Например, мой бот уже попросил пользователя указать временной диапазон, например ((с понедельника в 15:00 до понедельника в 21:00), и я просто хочу отправить это, чтобы получить builtin.datetimeV2.datetimerange назад? В настоящее время я просто отправляю его в LuisIntent («Нет»), и это работает, но это кажется неправильным. Следует ли мне делать это по-другому?


person T.J. McNaboe    schedule 11.05.2017    source источник


Ответы (2)


Маркировка ваших объектов с намерением «Нет» - это нормально.

Это для вызова LUIS внутри диалога? Или это для вызова LUIS, который инициирует диалог?

person Steven G.    schedule 11.05.2017
comment
Спасибо. Нет, это просто внутри диалога. Фактически, я, скорее всего, снова буду использовать один и тот же вызов в нескольких диалогах. Должен ли я иметь это в отдельном приложении только для этого? - person T.J. McNaboe; 11.05.2017
comment
Вы используете C # SDK или Node SDK? Я бы сказал, что да для обоих, хотя я недостаточно знаком с C # SDK, чтобы рекомендовать, как это сделать. - person Steven G.; 11.05.2017
comment
Да C #. Это определенно работает, это просто плохой образец. - person T.J. McNaboe; 11.05.2017
comment
Извините, мы можем думать о разных вещах. Когда вы сказали приложение, я думал о том, чтобы сделать простой вызов REST для LUIS. Например. ваш чат-бот достигает конечной точки LUIS, а затем анализирует результаты. Примером этого в Node было бы просто использование обещания с асинхронным вызовом внутри диалогового окна. - person Steven G.; 11.05.2017
comment
В Node вы должны использовать модуль для настройки указанного вызова REST и назначить его вспомогательной функции, которая может быть вызвана внутри любого диалогового окна; ваш чат-бот будет анализировать результаты LUIS внутри водопада. Это то, о чем я на самом деле думал в своем соглашении с вами - person Steven G.; 11.05.2017

Как упоминал @Steven G, вы можете просто вызвать LUIS напрямую и проанализировать результат json.

public class LUISRestService
{
    public static async Task<string> GetLuisResult(string searchFor)
    {
        string LUISEndpoint = $"https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/[YOURLUSAPPID]?subscription-key=[YOURSUBSCRIPTIONKEY]&timezoneOffset=0&verbose=true&q={searchFor}";
        string result = "";
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(LUISEndpoint);

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage response = await client.GetAsync(LUISEndpoint);
        if (response.IsSuccessStatusCode)
        {
            result = await response.Content.ReadAsStringAsync();                
        }
        else
        {
            Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        }
        return result;
    }
}
person Eric Dahlvang    schedule 12.05.2017