系统实体
了解有关 IBM 提供的可供您开箱即用的系统实体。 这些内置实用程序实体可帮助助手识别交谈中客户常用的词汇和引用,例如数字和日期。
有关如何将系统实体添加到对话框中的信息,请参阅 创建实体。
@sys-currency 实体
@sys-currency
系统实体用于在用户输入中检测货币值的提及项。 货币可能使用货币符号或特定于货币的词汇表示。 在两种情况下,都会返回数字。
可识别的格式
- 20 cents
- Five dollars
- $10
属性
.literal
:输入中解释为货币提及项的精确短语。.numeric_value
:格式为整数或双精度值的规范数字值(以基本单位表示)。.location
:列出解释为货币提及项的短语的文本字符串中第一个和最后一个字母的索引元素值。.unit
:货币的基本单位,由三个字母的ISO货币代码表示。 例如,USD
或EUR
。
下表说明了每个属性从用户输入中捕获到的信息。
属性 | Type | 示例(输入 = twenty dollars ) |
示例(输入 = $1,234.56 ) |
---|---|---|---|
@sys-currency | 字符串 | 20 |
1234.56 |
@sys-currency.literal | 字符串 | twenty dollars |
$1,234.56 |
@sys-currency.numeric_value | 数字 | 20 |
1234.56 |
@sys-currency.location | 阵列 | [0,14] |
[0,9] |
@sys-currency.unit | 字符串 | USD |
USD |
对于输入 veinte euro
(西班牙语为 twenty euro
)或 €1.234,56
,@sys-currency 返回以下值:
属性 | Type | 输入为 veinte euro |
输入为 €1.234,56 |
---|---|---|---|
@sys-currency | 字符串 | 20 | 1234.56 |
@sys-currency.literal | 字符串 | veinte euro | €1.234,56 |
@sys-currency.numeric_value | 数字 | 20 | 1234.56 |
@sys-currency.location | 阵列 | [0.11] | [0.9] |
@sys-currency.unit | 字符串 | EUR | EUR |
对于其他支持的语言和国家货币,将返回同样的结果。
@sys-currency 用法提示
如果将 @sys-currency
实体用作节点条件,并且用户将 $0
指定为值,那么该值会正确识别为货币,但该条件会求值为数字零,而不是货币零。 因此,条件中的 null
会求值为 false,并且不会处理节点。 要以正确处理零的方式检查货币值,请改为在节点条件中使用表达式 @sys-currency OR @sys-currency == 0
。
有关按语言识别的货币的更多信息,请参阅 货币支持。
@sys-date
@sys-date
系统实体用于在用户输入中检测日期的提及项。 日期值会存储为 yyyy-MM-dd
格式的字符串。 例如,提及项 May 8
会存储为 "2020-05-08"
。 系统会使用当前日期值扩充日期中缺少的元素(例如,对于 "May 8"
,会扩充年份)。
如果您在用户输入框中输入了无效日期,@sys-date
系统实体将无法识别该日期,并显示 Invalid date
错误。
如果您选择英语作为语言,系统将使用美国英语( en-us
)作为区域设置。 仅对于美国英语语言环境,日期的格式为 MM/DD/YYYY
。 仅当日期的前两个数字大于 12 时,日期格式才会更改为 DD/MM/YYYY
。 存储的值的格式为 yyyy-MM-dd
。
可识别的格式
- 星期五
- 今天
- May 8
属性
.alternatives
:在输入可供解释时保存备用日期值。 通常,会返回未来的日期作为@sys-date
值。 如果存在不确定性,那么会将过去的日期保存为备用日期。 例如,对于输入in January
(1 月),将返回未来的日期。 但是,如果现在是 2 月(今年的 1 月已过去),那么还会返回过去的 1 月作为备用日期。 如果在指定星期几时未使用修饰语,那么还会为星期几提供备用日期。 例如,对于输入Are you open Wednesday?
(你们星期三营业吗?),将存储未来的日期,但同时还会创建使用上星期三日期的备用日期。 备用日期是针对包含修饰语(例如,next
、this
或last
)的短语进行创建的,修饰语可能在不同的语言环境中具有不同的含义。 watsonx Assistant 服务将last
和next
日期视为引用最接近的上一个日期或下一个日期(可能是同一周,也可能是前一周)。 对于某些修饰语,是否创建备用日期取决于当前是星期几。 例如,可能输入包含this Wednesday
(本星期三)。 如果现在是星期一,那么将存储未来的日期,并且不会创建备用日期。 但是,如果现在是星期三,那么将假定日期为下一周的星期三,而将今天的日期存储为备用日期。 每个备用日期都会保存为对象,其中包含每个备用日期的值和置信度。 备用日期对象以 JSON 数组格式存储。 要获取备用值,请使用语法:@sys-date.alternative
。.calendar_type
: 指定正在使用的时区的日历类型。GREGORIAN
是唯一受支持的类型。.datetime_link
:请参阅日期和时间提及项。.day
:返回日期中日期的帮助程序方法。.day_of_week
:以小写字符串形式返回日期中的星期几。.festival
:识别特定于语言环境的假日名称,并可以返回即将来临的假日的日期,例如Thanksgiving
、Christmas
和Halloween
。 如果需要在条件 (例如@sys-date.festival == 'thanksgiving'
) 中指定假日名称,请使用所有小写字母。有关识别的假日的更多信息,请参阅 节日。.granularity
:识别时间范围提及项。 选项包括day
、weekend
、week
、fortnight
、month
、quarter
和year
。.interpretation
:您的助手返回的对象,其中包含新的字段,可提高系统实体分类器的精确度。 可以在用于引用其字段的表达式中省略interpretation
。 例如,您可以使用快捷语法<? @sys-date.festival ?>
来访问解释对象中festival
字段的值。.literal
:输入中解释为日期的精确短语。.location
:解释为日期的短语的文本字符串中第一个和最后一个字母的索引元素值。.month
:返回日期中月份的帮助程序方法。.range_link
:如果提供,指示用户的输入包含日期范围。 包含日期范围的字符串的开始和结束索引值会保存为链接名称的一部分。 这提供了额外的信息,包括每个@sys-date
在范围关系中扮演的角色。 例如,开始日期的角色类型为date_from
,结束日期的角色类型为date_to
。 要检查角色值,可以使用语法@sys-date.role?.type == 'date_from'
。 如果用户输入隐含范围,但仅指定了一个日期,那么不会返回range_link
属性,而只会返回一个角色类型。 例如,如果用户询问Have you been open since yesterday
。 那么会将 yesterday 的日期识别为@sys-date
提及项,并且会为其返回类型为date_from
的角色。 此外,还会返回range_modifier
,用于标识输入中触发识别范围的词。 在此示例中,修饰符为since
。.relative_{timeframe}
:识别并捕获用户输入中相对日期值的提及项。 返回的数字表示当前日期与指定日期之间的相差单位数。 {time frame} 单位可以是year
、month
、week
、weekend
或day
。.specific_{timeframe}
:识别并捕获用户输入中特定日期单位的提及项。 {time frame} 单位可以是year
、quarter
、month
、day
或day_of_week
。.year
:返回日期中年份的帮助程序方法。
下表说明了每个属性从用户输入中捕获到的信息。
属性 | Type | 示例 |
---|---|---|
@sys-date | 字符串 | 如果输入为 May 13, 2020 ,将返回 2020-05-13 。 |
@sys-date.alternatives | 阵列 | 例如,如果今天的日期是 10 March 2019 ,而用户输入了 on March 1 ,那么1st将保存为 @sys-date ( 2020-03-01 )。然而,用户可能指的是 1st。 因此,系统还会将今年的日期 (2019-03-01 ) 保存为备用日期值。 再例如,如果现在是星期二,用户输入了 this Tuesday (本星期二)或
next Tuesday (下星期二),那么 @sys-date 会设置为下周的星期二,并且不会创建备用日期。 |
@sys-date.calendar_type | 字符串 | 对于任何日期提及项,都会返回 GREGORIAN 。 |
@sys-date.datetime_link | 字符串 | 不适用 |
@sys-date.day | 字符串 | 如果输入为 13 May 2020 ,将返回 13 。 |
@sys-date.day_of_week | 字符串 | 如果输入为 13 May 2020 ,并且现在是星期三,那么将返回 wednesday 。 |
@sys-date.festival | 字符串 | 如果输入包含 Thanksgiving Day ,将返回 2020-11-26 。 |
@sys-date.granularity | 字符串 | 如果输入提及 next year ,将返回 year 。 |
@sys-date.literal | 字符串 | 如果输入为 I plan to leave on Saturday. ,将返回 on Saturday 。 |
@sys-date.location | 阵列 | 如果输入为 My vacation starts tomorrow. ,将返回 [19, 27] 。 |
@sys-date.month | 字符串 | 如果输入为 13 May 2020 ,将返回 5 。 |
@sys-date.range_link | 字符串 | 例如,输入可能为 I will travel from March 15 to March 22 。 检测到的每个 @sys-date 实体在其输出中都会有名为 range_link 的 date_range_14_39 属性,其中日期范围文本的位置为 [14,39] 。 开始日期 (2020-05-15 ) 的角色类型为
date_from 。 结束日期 (2020-05-22 ) 的角色类型为 date_to 。 |
@sys-date.relative_{timeframe} | 数字 | 如果输入为 two weeks ago ,将返回 relative_week = -2 。 如果输入为 this weekend ,将返回 relative_weekend = 0 。 如果输入为 today ,将返回 relative_day = 0 。 |
@sys-date.specific_{timeframe} | 字符串 | 对于 2020 ,将返回 specific_year = 2020 。 对于 Q2 2020 或 second quarter 2020 ,将返回 specific_quarter = 2 。 对于 March ,将返回 specific_month = 3 。 对于 Monday ,将返回
specific_day_of_week = monday 。 对于 May 3rd ,将返回 specific_day = 3 。 |
@sys-date.year | 字符串 | 如果输入为 13 May 2020 ,将返回 2020 。 |
@sys-time
@sys-time
系统实体用于在用户输入中检测时间的提及项。 此实体将以 HH:mm:ss
格式返回用户输入中指定的时间。 例如,"13:00:00"
表示 1pm
。
可识别的格式
- 2pm
- at 4
- 15:30
属性
.alternatives
:捕获除作为@sys-time
值保存的时间以外的时间,当时间未明确显示时,用户可能指的是这个时间。 备用值会保存为对象,其中包含每个备用时间的值和置信度,并以 JSON 数组格式存储。 要获取备用值,请使用语法:@sys-time.alternative
。.calendar_type
: 指定正在使用的时区的日历类型。GREGORIAN
是唯一受支持的类型。.granularity
:识别时间范围的提及项。 选项包括hour
、minute
、second
和instant
。.hour
:将时间中指定的小时作为数字值返回的帮助程序方法。.interpretation
:您的助手返回的对象,其中包含新的字段,可提高系统实体分类器的精确度。 可以在用于引用其字段的表达式中省略interpretation
。 例如,您可以使用快捷语法<? @sys-time.granularity ?>
来访问解释对象中granularity
字段的值。.literal
:输入中确切的短语被解释为时间。.location
:列出解释为时间提及项的短语的文本字符串中第一个和最后一个字母的索引元素值。.minute
:返回时间中指定的分钟值的帮助程序方法。.part_of_day
:识别表示一天中时间的词汇,例如morning
、afternoon
、evening
、night
或now
。 还可为一天中的每个部分设置时间范围。 响应包含两个@sys-time
值,一个用于时间范围的开始值,一个用于时间范围的结束值。 实体数组包含具有range_link
和time-from
角色类型的time-to
对象。 一天中不同部分的时间范围可能因语言环境而有所不同。 对于美式英语,上午是6:00:00
到12:00:00
。 下午是12:00:00
到18:00:00
。 晚上是18:00:00
到22:00:00
。 夜间为22:00:00
到23:59:59
。 夜间正好在午夜开始前结束,否则夜间将与新的一天重叠,新的一天由@sys-date
进行度量。.range_link
:如果提供,指示用户的输入包含时间范围。 包含时间范围的字符串的开始和结束索引值会保存为链接名称的一部分。 这提供了额外的信息,包括每个@sys-time
在范围关系中扮演的角色。 例如,开始时间的角色类型为time_from
,结束时间的角色类型为time_to
。 要检查角色值,可以使用语法@sys-time.role?.type == 'time_from'
。 如果用户输入隐含范围,但仅指定了一个时间,那么不会返回range_link
属性,而只会返回一个角色类型。 此外,还会返回range_modifier
,用于标识输入中触发识别范围的词。.relative_{timeframe}
:识别时间的相对提及项,并且返回的数字表示当前时间与指定时间之间的相差单位数。 {timeframe} 单位可以是hour
、minute
或second
。.second
:返回时间中指定的秒值的帮助程序方法。.specific_{timeframe}
:识别并捕获用户输入中特定时间单位的提及项。 {timeframe} 单位可以是hour
、minute
或second
。
下表说明了每个属性从用户输入中捕获到的信息。
属性 | Type | 示例 |
---|---|---|
@sys-time | 字符串 | 对于输入 6:30 PM ,将返回 18:30:00 。 |
@sys-time.alternatives | 阵列 | 例如,如果用户说 The meeting is at 5 ,那么系统会将时间计算为 5:00:00 或 5 AM ,并将其保存为 @sys-time 。 然而,用户可能指的是 17:00:00 或 5 PM 。 因此,系统还会将后一个时间保存为备用时间值。 如果用户输入 The meeting is at 5pm ,那么
@sys-time 会设置为 17:00:00 ,并且不会创建备用值,因为不存在 AM 和 PM 混淆的问题。 |
@sys-time.calendar_type | 字符串 | 对于任何时间提及项,都会返回 GREGORIAN 。 |
@sys-time.granularity | 字符串 | 如果输入为 now ,将返回 instant 。 对于 3 o'clock 或 noon ,将返回 hour 。 对于 17:00:00 ,将返回 second 。 |
@sys-time.hour | 数字 | 如果输入包含 5:30:10 PM ,将返回 17 以表示 5 PM。 |
@sys-time.literal | 字符串 | 对于输入 The store closes at 8PM ,将返回 at 8PM 。 |
@sys-time.location | 阵列 | 对于输入 The store closes at 8PM ,将返回 [17, 23] 。 |
@sys-time.minute | 数字 | 如果输入提及时间 5:30:10 PM ,将返回 30 。 如果未指定分钟,那么此助手函数会返回 0 。 |
@sys-time.part_of_day | 字符串 | 如果输入为 this morning ,将返回两个 @sys-time 值:6:00:00 和 12:00:00 。 此外,还会返回具有 range_link 和 time-from 角色类型的 time-to 对象。 |
@sys-time.range_link | 字符串 | 对于输入 Are you open from 9AM to 11AM ,会检测到两个 @sys-time 实体。 对于检测到的每个 @sys-time 实体,其输出中都会有 range_link 属性。 如果范围是隐含的,但仅提供了一个时间值,那么仅返回一个 @sys-time 值。 对于输入 Are you open until 9PM ,会将
9PM 识别为 @sys-time 提及项,并且会为其返回类型为 time_to 的角色。 此示例中的 range_modifier 是 until 。 |
@sys-time.relative_{timeframe} | 数字 | 对于 5 hours ago ,将返回 relative_hour = -5 。 对于 in two minutes ,将返回 relative_minute = 2 。 对于 in a second ,将返回 relative_second = 1 。 |
@sys-time.second | 数字 | 如果输入提及时间 5:30:10 PM ,将返回 10 。 如果未指定秒值,那么此助手函数会返回 0 。 |
@sys-time.specific_{timeframe} | 字符串 | 对于 at 5 o'clock ,将返回 specific_hour = 5 。 对于 at 2:30 ,将返回 specific_minute = 30 。 对于 23:30:22 ,将返回 specific_second = 22 。 |
日期和时间提及项
某些用户输入中包含的信息中同时有日期和时间信息。 助手捕获到这两个值后,会将其保存为两个单独的实体提及项:一个是 @sys-date
,另一个是 @sys-time
。
日期和时间值之间的关系通过两种方式确定:
- 参与关系的每个实体都包含相同的
datetime_link
属性。 - 在输入中同时提及了日期和时间时,涵盖完整日期和时间提及项的文字串对于上述两个实体是相同的。 位置信息会附加到
datetime_link
名称。
可识别的格式
- now
- two hours from now
- on Monday at 4pm
属性
.datetime_link
:如果存在,则表明用户的输入同时提到了日期和时间,这意味着日期和时间彼此相关。 包含日期和时间的字符串的开始和结束索引值会保存为链接名称的一部分。
下表说明了每个属性从用户输入中捕获到的信息。
属性 | Type | 示例 |
---|---|---|
@sys-date.datetime_link 和 @sys-time.datetime_link |
字符串 | 如果输入的是 Are you open today at 5? ,则 today 被识别为日期提及( 2020-05-21 ),位置为 [13,18] ,而 at 5 被识别为时间提及( 05:00:00 ),位置为 [19,23] 。 同时涵盖日期和时间提及项的位置值 [13,23] 会附加到生成的 datetime_link 。 此链接会命名为 datetime_link_13_23 ,并包含在参与该关系的 @sys-date 和 @sys-time 实体的输出中。 |
时区
相对于当前时间的日期或时间的提及项会针对所选时区进行解析。 缺省情况下,时区是格林威治标准时间。 因此,在输入中提及 now
时,位于不同时区的 REST API 客户机会获得当前全球标准时间。
(可选)REST API 客户机可以将本地时区添加为上下文变量 $timezone
。 此上下文变量必须随每个客户机请求一起发送。 例如,$timezone
值可以为 America/Los_Angeles
、EST
或 UTC
。 有关受支持时区的完整列表,请参阅支持的时区。
当提供 $timezone
变量时,相对 @sys-date
和 @sys-time
提及的值将根据客户所在时区而非协调世界时进行计算。
有关处理日期和时间值的信息,请参阅日期和时间方法参考。
@sys-number 实体
@sys-number
系统实体用于在用户输入中检测数字的提及项。 数字可以用数字或文字编写。 在两种情况下,都会返回数字。
可识别的格式
- 21
- twenty one
- 3.13
属性
.literal
:输入中解释为数字的精确短语。.location
:解释为数字的文本字符串中第一个和最后一个字母的索引元素值。.numeric_value
:格式为整数或双精度值的规范数字值。.range_link
:如果提供,指示用户的输入包含数字范围。 指定范围的文本的位置值会附加到链接名称。 这提供了额外的信息,包括每个@sys-number
在范围关系中扮演的角色。 例如,开始数字的角色类型为number_from
,结束数字的角色类型为number_to
。 要检查角色值,可以使用语法@sys-number.role?.type == 'number_from'
。
下表说明了每个属性从用户输入中捕获到的信息。
属性 | Type | 示例 |
---|---|---|
@sys-number | 字符串 | 如果输入为 twenty ,将返回 20 。 如果输入为 1,234.56 ,将返回 1234.56 。 |
@sys-number.literal | 字符串 | 如果输入为 twenty ,将返回 twenty 。 如果输入为 1,234.56 ,将返回 1,234.56 。 |
@sys-number.location | 阵列 | 如果输入的是 twenty ,则返回 [0.6]。 如果输入的是 1,234.56 ,则返回 [0.8] |
@sys-number.numeric_value | 数字 | 如果输入为 twenty ,将返回 20 。 如果输入为 1,234.56 ,将返回 1234.56 。 |
@sys-number.range_link | 字符串 | 如果输入为 I'm interested in 5 to 7. 。 对于检测到的两个 @sys-number 系统实体,其输出中都会有名为 range_link 的 number_range_18_24 。 第一个 @sys-number 实体 (5 ) 具有 number_from 角色类型。
最后一个 @sys-number 实体 (7 ) 具有 number_to 角色类型。 |
@sys-number 用法提示
-
如果将 @sys-number 实体用作节点条件,并且用户将零指定为值,那么会将 0 值正确识别为数字。 但是,0 会被解释为条件的
null
值,这会导致不处理节点。 要以正确处理零的方式检查数字,还请在节点条件中使用表达式@sys-number == 0
。 要使用的完整表达式为@sys-number OR @sys-number == 0
。 -
如果使用 @sys-number 来比较条件中的数字值,请确保单独包含一项检查来确认是否存在数字本身。 如果找不到数字,@sys-number 会求值为 null。 即使没有数字,比较也可能会求值为 true。
例如,不要单独使用
@sys-number<4
,因为如果没有找到数字,@sys-number
将返回空值。 由于 null 小于 4,因此即便不存在任何数字,条件也会求值为 true。请改用
(@sys-number OR @sys-number == 0) AND @sys-number < 4
。 如果不存在任何数字,那么第一个条件求值为 false。 因此,整个条件求值为 false。
有关处理数字值的更多信息,请参阅数字方法参考。
@sys-percentage 实体
@sys-percentage
系统实体用于在用户输入中检测百分比的提及项。 在话语中百分比可能使用百分号表示或使用文字 percent
书写。 在两种情况下,都会返回数字值。
可识别的格式
- 15%
- 10 percent
属性
.literal
:输入中解释为百分比的精确短语。.location
:解释为百分比提及项的文本字符串中第一个和最后一个字母的索引元素值。.numeric_value
:格式为整数或双精度值的规范数字值。.range_link
:如果提供,指示用户的输入包含范围,例如from 2 to 3 percent
。 指定范围的文本的位置值会附加到链接名称。 这提供了额外的信息,包括每个@sys-percentage
在范围关系中扮演的角色。 例如,开始数字的角色类型为number_from
,结束数字的角色类型为number_to
。 要检查角色值,可以使用语法@sys-percentage.role?.type == 'number_from'
。
下表说明了每个属性从用户输入中捕获到的信息。
属性 | Type | 示例 |
---|---|---|
@sys-percentage | 字符串 | 如果输入包含 1,234.56% ,将返回 1234.56 。 |
@sys-percentage.literal | 字符串 | 如果输入包含 50 percent ,将返回 50 percent 。 |
@sys-percentage.location | 阵列 | 如果输入包含 from 2 to 3 percent ,将返回 [0,19] 。 |
@sys-percentage.numeric_value | 数字 | 如果输入包含 50 percent ,将返回 50 。 |
@sys-percentage.range_link | 字符串 | 如果输入包含 from 2 to 3 percent ,将返回 number_range_0_19 。 |
@sys-percentage 用法提示
-
如果您将 @sys-percentage 实体用作节点条件,且用户将
0%
指定为值,则该值会被正确识别为百分比,但条件评估结果为数字零,而非百分比 0%。 因此,条件中的null
会求值为 false,并且不会处理节点。 要以正确处理零百分比的方式检查百分比,请改为在节点条件中使用表达式@sys-percentage OR @sys-percentage == 0
。 -
如果输入像
1-2%
这样的值,那么值1%
和2%
会作为系统实体返回。
在条件中使用系统实体
在以 #Customer_Care_Store_Hours
意向为条件的节点中,可以添加使用新系统实体属性的条件响应,以根据用户的询问来提供有关门店营业时间的略有不同的回答。
您可能并不希望在实际对话中使用所有这些条件响应;此处描述这些条件响应仅仅是为了说明可以使用的条件响应。
条件响应条件语法 | 描述 | 示例响应文本 |
---|---|---|
@sys-date.festival == 'thanksgiving' |
检查客户是否特别询问感恩节的营业时间。 | 我们在感恩节 (Thanksgiving Day) 为有需要的人提供免费餐。 |
@sys-date.festival |
检查客户是否询问其他特定假日的营业时间。 | 我们在圣诞节、7 月 4 日和总统日不营业。 在其他假日,营业时间为上午 10 点到下午 5 点。 |
@sys-time.part_of_day == 'night' |
检查用户是否在输入中包含将 night 作为一天中的时间提及的任何词汇。 | 我们不会营业到很晚;大多数时候结束营业的时间为晚上 9 点。 |
@sys-date.datetime_link && input.text.contains('today') && now().sameOrAfter(@sys-time) |
检查输入是否包含 today at 8 之类的短语。 它还会检查检测到的 @sys-time 是否早于当前时间。 您可以将一个上下文变量添加到条件响应中,从而创建一个值为 <? @sys-time.plusHours(12) ?> 的 $new_time 变量。 您可以使用此方法来创建一个日期变量,该变量将捕获在中午时间询问 Are you open today at 8 的用户所表示的更可能的时间。 系统假定用户表示 8AM 而不是 8PM。 |
您是指今天 $new_time 点,对吗? |
@sys-time.range_link && entities[0].role?.type == 'time_from' && entities[1].role?.type == 'time_to' |
检查输入是否包含时间范围。 该条件还确保在将实体数组中的第一个 @sys-time 系统实体和第二个实体包含在响应中之前,第一个实体是开始时间,第二个实体是结束时间。 |
您想知道我们是否在 <? entities[0] ?> 和 <? entities[1] ?> 之间营业,是这样吗? |
@sys-time && entities.size() < 2 && entities[0].role?.type == 'time_to' |
检查输入是否包含一个具有 @sys-time 角色类型的 time_to 提及项。 如果用户输入与此条件相匹配,那么表明用户指定了开放式时间范围的结束时间。 例如,输入 Are you open until 9pm? 即可触发响应。 此输入与此条件相匹配,因为它仅在时间范围内识别到一个时间,并且该提及项具有 time_to 角色。 |
你的意思是从现在( <? now().reformatDateTime('h:mm a') ?> )到 <? @sys-time.reformatDateTime('h:mm a') ?> 吗? |
@sys-date.day_of_week == 'sunday' |
检查用户询问的特定日期是否为某个星期日。 | 我们星期日不营业。 |
@sys-date.specific_day_of_week == 'monday' && @sys-date.alternative |
检查用户是否在其查询中提及一星期中的 Monday (星期一)。 例如,Are you open Monday 。 此条件还会检查是否存储了任何备用日期。 助手不完全确定用户指的是哪个星期一时,会创建备用日期,因此还会存储备用星期一的日期。 用户指定星期几时,助手会假定用户指的是未来的日期(下一个星期一)。 可以使用检测到的备用值来添加用于复查目标日期的响应。 在本例中,备用日期是上一个星期一的日期。 |
您是指 @sys-date 还是 @sys-date.alternative ? |
true |
响应其他任何询问门店营业时间信息的请求。 | 我们的营业时间是星期一到星期六,早上 9:00 到晚上 9 点 |