Как общее правило о том, что возможно, мы используем документ для 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) В вашем диалоговом узлеопределить слоты 2) В первом из них сгенерировать случайное значение (если массив определен и не пуст) 3) Во втором получите элемент и удалите
Обратите внимание, что, хотя это работает, вы, вероятно, не используете его в рабочей версии вашего Chatbot.Вместо этого поместите большую часть логики в ваше приложение (включая управление диалогом).Веб-интерфейс очень сложно протестировать, и способ анализа переменных в какой-то момент может измениться.