在预测之前或预测期间更改话语数据

重要

LUIS 将于 2025 年 10 月 1 日停用,从 2023 年 4 月 1 日开始,你将无法创建新的 LUIS 资源。 建议将 LUIS 应用程序迁移对话语言理解,以便从持续的产品支持和多语言功能中受益。

LUIS 提供在预测之前或预测期间操作陈述的方法。 这些方法包括修复预生成 datetimeV2 的时区问题。

更改预生成 datetimeV2 实体的时区

LUIS 应用使用预生成的 datetimeV2 实体时,可以在预测响应中返回日期/时间值。 请求的时区用于确定要返回的正确日期/时间。 如果请求在到达 LUIS 之前来自机器人或另一个集中式应用程序,则更正 LUIS 使用的时区。

用于更改时区的 V3 预测 API

在 V3 中,datetimeReference 确定时区偏移量。

用于更改时区的 V2 预测 API

可以通过以下方式更正时区:根据 API 版本,使用 timezoneOffset 参数将用户的时区添加到终结点。 要更改时间,此参数值应为正数或负数(以分钟为单位)。

V2 预测夏令时示例

如果需要返回的预生成 datetimeV2 来调整夏令时,则应对该终结点查询使用值为正数/负数(以分钟为单位)的 querystring 参数。

增加 60 分钟:

https://{region}.api.cognitive.azure.cn/luis/v2.0/apps/{appId}?q=Turn the lights on?timezoneOffset=60&verbose={boolean}&spellCheck={boolean}&staging={boolean}&bing-spell-check-subscription-key={string}&log={boolean}

减去 60 分钟:

https://{region}.api.cognitive.azure.cn/luis/v2.0/apps/{appId}?q=Turn the lights on?timezoneOffset=-60&verbose={boolean}&spellCheck={boolean}&staging={boolean}&bing-spell-check-subscription-key={string}&log={boolean}

V2 预测 C# 代码确定正确的参数值

下面的 C# 代码使用 TimeZoneInfo 类的 FindSystemTimeZoneById 方法基于系统时间来确定正确的偏移值:

// Get CST zone id
TimeZoneInfo targetZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");

// Get local machine's value of Now
DateTime utcDatetime = DateTime.UtcNow;

// Get Central Standard Time value of Now
DateTime cstDatetime = TimeZoneInfo.ConvertTimeFromUtc(utcDatetime, targetZone);

// Find timezoneOffset/datetimeReference
int offset = (int)((cstDatetime - utcDatetime).TotalMinutes);