Уотсон Ассистент - Spel | Обновление массива - PullRequest
1 голос
/ 09 апреля 2019

Я пытался использовать Watson Assistant JSON Editor.
Теперь это настройка

Entities
@action = eat,run,play

Context Variable
$list = [0,0]

I want to update my list if an action is detected
List[0] will be the size
List[1] will be the position[0]

Попытка этого на Spel JSON

 "$list":"<? entities['action'] != null ? $list.set(0,entities['action'].size()) and $list.set(1,entities['action'].location[0]): $list.set(0,0) and $list.set(1,0) ?>"

Если был добавлен оператор «и», возвращается «True» | $ list = True
вместо обновления моего массива до $ list ['size'] ['location']

Я могу достичь этого только путем добавления другой переменной контекста, которая содержит логическую часть

"sample": "entities['action'] != null ? $list.set(0,5) and $list.set(1,5) : $list.set(0,0) and $list.set(1,0)"

есть идеи, как получить тот же результат, используя 1 переменную?

1 Ответ

0 голосов
/ 10 апреля 2019

Причина, по которой он установил для списка значение «Истина», заключается в том, что это выражение: "$list":"<? entities['action'] != null ? $list.set(0,entities['action'].size()) and $list.set(1,entities['action'].location[0]): $list.set(0,0) and $list.set(1,0) ?>" в конце присваивает результирующее значение логической проверки переменной списка, что приводит к перезаписи изменений, сделанных выражениями.Это поведение WA по умолчанию, которое используется для обновления контекстных переменных (например, когда вы пишете "my_string" : "value of the string"

Если вы хотите изменить только массив списка, вам следует использовать второй подход, который вы предложили с другой переменной sample - это будет обновлено с результирующим значением выражения SpEL, поэтому list не будет переопределено.

...