Как сохранить ввод пользователя с плохой грамматикой, не переходя на резервное намерение?

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

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

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


person Hafiz Muhammad Sheharyar    schedule 03.11.2019    source источник


Ответы (1)


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

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

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

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