Watson Assistant:含<、>的时间条件设置及表达式失效解决
解决Watson Assistant中时间生效条件的问题
我来帮你搞定这个时间判断的问题——你遇到的核心问题是类型不匹配导致的逻辑失效,下面一步步拆解说明:
一、为什么你的表达式会识别任意时间?
你原来写的 @sys-time >'19:00:00' || @sys-time <'8:00:00' 之所以失效,是因为**@sys-time是一个实体对象,不是字符串**。Watson Assistant的表达式引擎没法直接把实体对象和字符串格式的时间做比较,这种类型不匹配会让判断逻辑直接出错,最终不管输入什么时间都会返回“有效”的结果。
二、正确设置<和>的时间生效条件
要准确判断时间范围,你得提取@sys-time实体里的具体数值属性(比如小时、分钟、秒)来做数值比较,而不是直接和字符串时间硬怼。
1. 基础版:按小时判断(适合不需要精确到分/秒的场景)
如果只需要判断时间是否在19:00之后或8:00之前,直接用小时数值对比就足够:
@sys-time.hour > 19 || @sys-time.hour < 8
2. 精确版:精确到分/秒(如果要严格卡时间点)
如果要精准判断“19:00:00之后”(比如19:00:01才算有效,19:00:00不算),就得把分钟和秒也纳入判断逻辑:
(@sys-time.hour > 19) || (@sys-time.hour == 19 && @sys-time.minute > 0) || (@sys-time.hour == 19 && @sys-time.minute == 0 && @sys-time.second > 0) || (@sys-time.hour < 8)
3. 补充:判断当前系统时间而非用户提及的时间
如果你的需求是判断当前系统时间(不是用户对话里提到的时间),就用系统上下文变量$system.time替换@sys-time,逻辑完全一致:
$system.time.hour > 19 || $system.time.hour < 8
三、测试验证
设置好表达式后,你可以用不同时间输入测试:
- 输入“晚上8点”:应该触发条件
- 输入“早上7点半”:应该触发条件
- 输入“下午3点”:应该不触发条件
这样就能确保时间条件的判断完全符合预期了。
内容的提问来源于stack exchange,提问作者Gabriel Agapio Brant de Aquino
相关产品推荐
相关产品推荐

