IBM Watson Assistant - SpelParseException - PullRequest
0 голосов
/ 06 марта 2019

Я сгенерировал JSON-помощника IBM (чатбота) JSON и передал его в систему. Теперь, когда я набираю определенное ключевое слово, чатбот IBM должен ответить настроенным ответом Но в чате я получаю сообщение об ошибке типа

SpelParseException при оценке идентификатора диалогового узла [Node_835_210152933]. Состояние [@Product: 505466163255] не может быть разобран. Проверьте синтаксис выражения. Ошибка синтаксиса SpEL: Выражение [@Product: 505466163255] преобразовано в [(entity ['Product'] ?. содержит (505466163255))] в позиции 31: EL1035E: Значение '505466163255' не может быть проанализировано как int (и в логе еще 1065 ошибок)

Это потому, что IBM анализирует значение '505466163255' как int. Я настроил это как строку. Может кто-нибудь подсказать, как мы можем решить эту проблему.

1 Ответ

1 голос
/ 06 марта 2019

Двигатель SPEL делает то, что называется Autoboxing.Когда он видит переменную, он пытается ее привести.Поэтому ошибка в том, что он видит номер сущности и пытается привести его к типу int.

Даже если вы сконфигурируете как строку, она все равно будет делать это, если вы не заставите ее измениться на что-то другое.Например:

"" + 505466163255

Должно быть принудительно задано как строка (не подтверждено).

Для того, что вы делаете, может быть, есть лучший способ.Например, если ваша сущность представляет собой просто список кодов продуктов, может быть лучше определить, является ли шаблон действительным (сущность шаблона), а затем передать его в ваше приложение для проверки самого номера.

...