LuisV3.PredictionOptions不让我用时区--怎么做?

问题描述 投票:1回答:1

我想我应该升级我的LuisRecognizer来使用LuisRecognizerOptionsV3。然而我似乎无法按照我喜欢的方式设置预测选项--如何设置时区? v3预测选项缺少这个字段。

在我的机器人中,我目前正在做。

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

而我无法找出v3版本数据结构中的等价物。

c# botframework luis
1个回答
1
投票

timezoneOffset 参数主要是为了在用户说 "今天 "或 "明天 "这样的话时,确定今天是什么日子。当用户输入 "三小时后 "这样的相对时间时,它也有帮助。当使用 "今天 "或 "明天 "这样的相对时间时,它还可以帮助用户输入一个相对时间,比如 "三小时后"。timezoneOffset 参数,返回的实体是在所提供的时区而不是通用时间。

在LUIS v3中,不是提供一个偏移量,而是提供一个 DateTime 引用,LUIS使用它来处理相对时间。你可以看到文档中的 此处. 注意 datetimeReference 财产只有在 POST请求 而不是GET请求,因为你在请求体中提供了它,而不是作为查询参数。

还要注意的是 datetimeReference 属性目前在Bot Builder SDK中是不可用的。你可以写你自己的代码来直接访问LUIS API,并使用一个 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));
© www.soinside.com 2019 - 2024. All rights reserved.