Watson Conversation - обработка неверных входных данных

Мы создаем приложение с использованием Watson Conversation, но у нас возникла проблема с обработкой недействительных ответов пользователей. Наш бот предназначен для бронирования отелей, а упрощенная версия диалога:

  • Узел 1: очистить контекст; спросите: «На какой день вы хотите приехать?»
  • Узел 2: Триггер @ sys-date; обновить контекст для даты; спросите "на сколько ночей вы хотите остаться"
  • Узел 3: триггер @ системный номер; обновить контекст для количества ночей; резюмируйте бронирование: «Итак, вы прибываете [ДАТА] на [КОЛИЧЕСТВО НОЧЕЙ]»

Если пользователь дает разумные ответы, тогда все работает, но если их ответ на дату регистрации «бла», он терпит неудачу, поэтому мы добавили новый узел (как родственный узел узла 2) с триггером «something_else» и вывести «извините, мы хотел свидание, попробуй еще раз ».

В идеале мы хотели бы вернуться к нашему существующему Узлу 2, чтобы триггер @ sys-date мог поймать измененный ответ пользователя, но создавал бесконечный цикл, поэтому мы являемся дочерним узлом для «something_else», который является копией Узла 2, т.е. контекст для даты и спрашивает «сколько ночей…», но теперь мы хотим поймать ответ на этот вопрос в узле 3, чтобы мы могли выбрать существующий поток, поэтому добавили переход к узлу 3. Это не удается, поскольку мы заканчиваем выходом ветвь диалога.

Если мы используем «something_else» для перехвата неверных вводимых пользователем данных, как нам снова присоединиться к существующему потоку диалога? На данный момент единственное решение, которое у нас есть, - это дублировать узлы 2 и 3, но в реальной диалоговой ветви гораздо больше узлов, поэтому такой подход нецелесообразен.


person Calum_R    schedule 11.05.2017    source источник


Ответы (1)


Вам просто нужно Jump to node (маленький шарик с 3 точками слева от узла 2). Таким образом, если пользователь вводит недопустимую дату или число, он вернется, чтобы поймать действительный ввод пользователя, и сохранит его в контексте, как вы хотели. Вы можете перейти к любому узлу вашего рабочего пространства. Вот пример json. Надеюсь, я помог тебе!

person barbs    schedule 11.05.2017
comment
Спасибо. После нескольких недель поиска решения перед тем, как опубликовать свой вопрос, я наконец понял, что мне нужно дождаться ответа пользователя перед прыжком, но я мог сделать это только путем добавления дополнительного фиктивного узла между something_else и прыжком. Воздушный шар с 3 точками решает эту проблему. - person Calum_R; 16.05.2017