LuisV3.PredictionOptions не позволяет мне использовать часовой пояс - как это сделать? - PullRequest
1 голос
/ 01 мая 2020

Я решил обновить LuisRecognizer для использования LuisRecognizerOptionsV3. Однако я не могу установить параметры прогнозирования так, как мне нравится - как мне установить часовой пояс? В параметрах прогнозирования v3 отсутствует это поле.

В моем боте я сейчас выполняю:

var predictionOptions = new LuisPredictionOptions();
predictionOptions.TimezoneOffset = turnContext.Activity.LocalTimestamp.Value.Offset.TotalMinutes;

и не могу найти эквивалент в версии структуры данных v3.

1 Ответ

0 голосов
/ 02 мая 2020

Параметр timezoneOffset в основном предоставлялся для определения того, какой сегодня день для пользователя, если он говорит что-то вроде «сегодня» или «завтра». Это также помогает, когда пользователь вводит относительное время, например, «через три часа». При использовании параметра timezoneOffset возвращаемая сущность находится в предоставленном часовом поясе, а не в универсальном времени.

В LUIS v3 вместо предоставления смещения вы предоставляете ссылку DateTime, а LUIS использует ее для обработки относительного время. Вы можете увидеть это документально здесь . Обратите внимание, что свойство datetimeReference доступно только в запросах POST , а не в запросах GET, поскольку вы предоставляете его в теле запроса, а не в качестве параметра запроса.

Также обратите внимание, что datetimeReference свойство в настоящее время недоступно в Bot Builder SDK. Вы можете написать свой собственный код для прямого доступа к API LUIS с помощью HttpClient, но если вам все еще нужен предварительно собранный SDK для обработки, вы можете использовать этот пакет NuGet: Microsoft. Azure .CognitiveServices. Language.LUIS.Runtime 3.0.0

Вот пример того, как его использовать:

var appId = new Guid("<LUIS APP ID>");
var client = new LUISRuntimeClient(new ApiKeyServiceClientCredentials("<SERVICE KEY>"));

client.Endpoint = "https://westus2.api.cognitive.microsoft.com";

var options = new PredictionRequestOptions(activity.LocalTimestamp.Value.DateTime);
var request = new PredictionRequest("Book a flight in three hours", options);
var response = await client.Prediction.GetSlotPredictionAsync(appId, "PRODUCTION", request);

Console.WriteLine(JsonConvert.SerializeObject(response.Prediction.Entities, Formatting.Indented));
...