IBM Watson Assistant — исключение SpelParseException

#ibm-watson #watson-conversation

#ibm-watson #watson-беседа

Вопрос:

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

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

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

Комментарии:

1. Есть ли какой-либо код, которым вы можете поделиться для своего чат-бота?

2. Как вы сгенерировали JSON? Как выглядит node JSON?

Ответ №1:

Механизм SPEL выполняет то, что называется автоматической упаковкой. Когда он видит переменную, он пытается ее преобразовать. Таким образом, ошибка заключается в том, что он видит номер объекта и пытается преобразовать в int.

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

 ""   505466163255
  

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

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