这只与IBM Watson Conversation用户有关。
我正在尝试将上下文变量设置为唯一的"有效"用户输入@ sys-date属性的日期。这里的有效日期是在01/01/1900之后和之前。根据SpEL定义,我应该选择.?[value > expression]
列表。其中value或#this是当前列表项。
"context": {
"date": "<? @sys-date and @sys-date.values ? @sys-date.values.?[value.after('1900-01-01') and value.before(now())] : null ?>",
"thisWorks": "<? {0,1,2,3,4}.?[false] ?>",
"thisDoesNot": "<? {0,1,2,3,4}.?[value > 1] ?>"
}
thisWorks = []
其他一切都会引发错误。
我尝试过使用#this
但是watson转换为(intent == 'this')
并且像\#this
之类的转义会在尝试保存之前抛出错误。
还有其他人在Watson Conversation中使用过集合选择并提供示例吗?
答案 0 :(得分:0)
不确定您的问题,但也许这些信息可以帮助您。
尝试将日期保存在一个context
变量中,例如:
{
"context": {
"date": <? @sys-date ?>;
},
"output": {
"text": {
"values": [
"Are you sure about this $date?"
],
"selection_policy": "sequential"
}
}
}
然后,提出你的条件......
查看$date
是否在将来使用:
if bot recognizes now().before($date) or @sys-date.before($date)
response "Ok, the date is before $date."
如果过去:
now().after($date) or @sys-date.after($date)
response "Ok, the date is after $date, in this case is one invalid date"
Obs。:您可以在条件中使用此示例。在你的情况下是使用&#39; valids&#39;日期在如果机器人识别。
答案 1 :(得分:0)
我能够过滤列表的唯一方法是将其作为对象列表。例如:
<? {1:1, 2:2, 3:3 }.?[value < 3 ].![value] ?>
希望这有帮助。