Как сохранить ввод пользователя с плохой грамматикой, не переходя к намерениям Fallback? - PullRequest
0 голосов
/ 03 ноября 2019

Я делаю систему жалоб, в которой после задания нескольких последовательных вопросов я прошу пользователя ввести свою жалобу. Теперь пользователи могут вводить любые предложения с / без грамматических ошибок. Я хотел бы сохранить это предложение жалобы, как оно есть, независимо от плохой грамматики. Здесь я сталкиваюсь с двумя проблемами:

Проблемы (1) Когда приходит плохое грамматическое предложение, оно переходит к намерению «Откат», а не к веб-крюку, который я прикрепил к намерению. (2) Если это предложение жалобы содержит какое-либо обучающее слово какого-либо другого намерения (например, «Hello» of WelcomeIntent), оно переходит к этому намерению независимо от значения контекста, которое я установил, чтобы убедиться, что оно остается в этом намерении.

То, что я пробовал до сих пор (1) Я пытался создать последующие намерения, а также сохранить все намерения на родительском уровне. Такой разницы не наблюдается. (2) Я удалил намерение Fallback по умолчанию и создал собственное намерение Fallback для намерения жалобы и прикрепил к нему Webhook. Так что теперь, когда пользователь пишет неверную грамматику с намерением Жалобы, он переходит к связанному с ним Fallback и активирует там Webhook. Но это не очень хорошее решение, потому что проблема № 2 все еще существует.

1 Ответ

0 голосов
/ 05 ноября 2019

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

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

Я предполагаю, что вы используете выполнение для сбора всей информации в разговоре. Я бы структурировал ваши намерения следующим образом:

  • Имейте резервное намерение без каких-либо установленных контекстов (аналогично заданному по умолчанию)Вы можете или не можете сделать так, чтобы это выполнялось, как вы хотите.
  • Пусть все «последовательные» вопросы имеют один и тот же входящий контекст (давайте назовем это question-context только для справки), и убедитесь, что вы установили(и продолжайте сбрасывать) срок жизни для этого контекста в каждом исходящем контексте (или в исполнении для них).
  • Когда вы просите их жалобу, очистите этот контекст (установите его срок жизни равным 0) и установите другойКонтекст (назовем его complaint-context).
  • Создать еще один Отступной Намерение с complaint-context в качестве Входящего контекста. Установите выполнение для этого, и он отправит захваченный текст.
...