Как выбрать случайные числа в Watson Assistant? - PullRequest
0 голосов
/ 30 декабря 2018

Я использую IBM Watson Assistant для создания чат-бота.Я использую веб-интерфейс с намерениями, сущностями и диалоговым деревом | дерево (я не знаю, как оно называется, я просто называю его веб-интерфейсом).

Я бы хотел определитьмассив чисел [1,2,3,4,5].Затем один узел должен выбрать случайное число без замены из этого массива (например, 2), то есть оставшийся массив будет равен [1,3,4,5].Через некоторое время другой узел должен выбрать другое число случайным образом из массива (скажем, 4).И так далее.Как это можно реализовать?Я знаю о переменных (например, $ var), но не знаю, как представлять массивы и выбирать случайные числа.

Большое спасибо за ваши ответы заранее.И всех с новым годом.

1 Ответ

0 голосов
/ 02 января 2019

Как общее правило о том, что возможно, мы используем документ для Spring Expression Language .Исходя из этого, вы можете выбрать значение из некоторой структуры данных $some_array, например, так:

{
 "context": {
 "randomNumber": "<?  (new java.util.Random().nextInt($some_array.size())) ?>"
 }
}


После этого вы получите доступ к своему значению, используя

{
 "context": {
  "element": "<?  $some_array.get($randomNumber)  ?>",
  "shorter_array": "<?  $some_array.remove($randomNumber)  ?>"
 }
}

Теперь естьНекоторые проблемы (вероятно, ошибка, упомянутая в комментарии), так как метод удаления должен быть тот из gson JsonArray и вести себя так:

Удаляет элемент вуказанная позиция в этом массиве.Смещает любые последующие элементы влево (вычитает один из их индексов).Возвращает элемент, который был удален из массива.

Однако он возвращает массив с удаленным элементом, а не сам элемент.

1) В вашем диалоговом узлеопределить слоты slots 2) В первом из них сгенерировать случайное значение (если массив определен и не пуст) enter image description here 3) Во втором получите элемент и удалите enter image description here

Обратите внимание, что, хотя это работает, вы, вероятно, не используете его в рабочей версии вашего Chatbot.Вместо этого поместите большую часть логики в ваше приложение (включая управление диалогом).Веб-интерфейс очень сложно протестировать, и способ анализа переменных в какой-то момент может измениться.

...