Чат бот как-то запутался - PullRequest
0 голосов
/ 06 сентября 2018

В чат-боте IBM Watson я создал 2 сущности, одну из которых назвали @serial_number, а другую - @material_number.

Шаблон для серийного номера (\d{7,9})-(\d{2,4})-(\d{1,3})
и шаблон для номера материала (\d{3}).(\d{3}).(\d{3}).(\d{3}).

В "приветственном" узле бот запрашивает имя пользователя, а в узле ниже, если бот распознает имя, он также ищет другие типы ввода. Я хочу, чтобы бот мог захватывать как входные данные, так и серийные номера. Поэтому я активировал режим слотов, затем добавил 2 слота с переменными $ serialnumber и $ materialnumber. Для обоих их значений я использовал функцию «literal», чтобы бот мог сохранять ввод пользователя в контекстные переменные.

Когда есть ввод, такой как «Привет, я Хенрик. У меня есть ручка. Ее серийный номер 1234567-123-12 и номер материала 123.123.123.123», ответ бота следующий :

"Хорошо, серийный номер 1234567-123-12"

«Хорошо, номер материала 1234567»

Правильно фиксирует серийный номер в соответствии с предоставленным шаблоном. Тем не менее, однако номер материала неверен. Номер материала, который он должен захватить, равен 123.123.123.123 , но он захватывает 1234567 , даже если среди предоставленных шаблонов для @material_number такого шаблона не существует.

Мне как-то нужно, чтобы бот захватил правильную вещь.

Я был бы очень рад, если бы кто-нибудь мог мне помочь с этим. Заранее спасибо.

1 Ответ

0 голосов
/ 10 сентября 2018

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

(\d{3})\.(\d{3})\.(\d{3})\.(\d{3})
...