我想我应该升级我的LuisRecognizer来使用LuisRecognizerOptionsV3。然而,我似乎不能以我喜欢的方式设置预测选项-我如何设置时区?v3预测选项缺少此字段。
在我的机器人中,我目前正在做:
var predictionOptions = new LuisPredictionOptions();
predictionOptions.TimezoneOffset = turnContext.Activity.LocalTimestamp.Value.Offset.TotalMinutes;我找不到v3版本的数据结构中的等价物。
发布于 2020-05-02 05:24:46
提供timezoneOffset参数主要是为了确定用户的日期,以防他们说“今天”或“明天”之类的内容。当用户输入一个相对时间,比如“在三个小时内”时,它也会有所帮助。使用timezoneOffset参数时,返回的实体使用的是提供的时区,而不是世界时。
在LUIS v3中,您提供的不是偏移量,而是DateTime引用,LUIS使用该引用来处理相对时间。您可以看到有文档记录的here。请注意,datetimeReference属性仅在POST requests中可用,而不是GET请求中,因为它是在请求正文中提供的,而不是作为查询参数提供的。
还要注意,datetimeReference属性目前在Bot Builder SDK中不可用。您可以编写自己的代码来使用HttpClient直接访问LUIS API,但是如果您仍然希望使用预构建的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));https://stackoverflow.com/questions/61533713
复制相似问题