Слоты Watson Assistant: как разрешить пользователю повторно вводить данные, используя не словарные объекты? - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу получить следующие данные от пользователя и использую следующие объекты:

  • Имя и фамилия: используйте sys-person (я извлекаю имя и фамилию позже, используя облачное действие) .
  • Адрес электронной почты: используйте шаблон сущности, имя @contactEmail и значение шаблона "email" \ b [A-Za-z0-9 ._% + -] + @ ([A-Za-z0-9 -] +.) + [A-Za-z] {2,} \ b
  • Номер мобильного телефона: использовать шаблон сущности, имя @contactPhone и значение шаблона «mobileNumber» ^ [1-9] [0- 9] {7} [0-9] + $

Слоты

Я создал узел со слотами:

Slots

Настройка выглядит следующим образом:

Проверить:

  • Проверить: @ sys-person.literal Сохранить как $ person Если нет: введите свое имя
  • Проверьте: @ contactEmail.literal. Сохраните как $ email. Если нет: введите свой адрес электронной почты
  • Проверьте: @ contactPhone.literal. Сохраните как $ contactPhone. Если нет: введите свой мобильный.

Это все работает отлично, и я получаю имя , адрес электронной почты и номер телефона.

Задача Но я хочу, чтобы пользователь мог подтвердить, что данные верны. Итак, у меня есть намерение под названием #response_yes, которое активируется такими вещами, как «yes», «yep» и т. Д. c.

. И у меня есть четвертый слот, который проверяет # response_yes.

  • Проверьте наличие #response_yes, сохраните значение в $ подтверждается, если его нет, спросите "Got $ person, $ contactEmail, $ contactPhone, это правильно?"

Confirmation

Если #response_yes не найдено, то он отображает уже введенные значения и спрашивает, верны ли они, и ожидает ввода данных пользователем.

После ответа пользователя, если #reponse_yes намерение все еще не найдено, тогда:

Start again

Ответьте "Давайте начнем снова". Кроме того, нам нужно очистить уже введенные значения:

Clear the values

Здесь все идет не так Когда я пытаюсь запустить чат-бота, узел правильно собирает входные данные, правильно отображает значения и спрашивает, верны ли они. Я набираю «нет», намерение #response_no предсказывается правильно, и я ожидаю, что приглашение для первого слота снова появится, но это не так.

The problem

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

Что я делаю не так? Как мне снова заставить работать верхний слот?!

1 Ответ

0 голосов
/ 08 апреля 2020

Aaaaargh.

Для тех, кто заинтересован, я просто не сбрасывал значения в ноль.

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

Set the values to null!

...