Как заставить Dialogflow принимать любой ввод для требуемой сущности

Итак, я пытаюсь создать агент диалогового потока, который работает как своего рода интервьюер.

Например, в какой-то момент агент спрашивает: «У вас есть опыт работы в сфере общественного питания?»

Я создал объекты «предыдущая должность», «предыдущий работодатель» и «продолжительность» и пометил их как требуемые. Используя автоматическое расширение и предоставляя достаточный пример пользовательского ввода, агент без проблем назначает этим сущностям вещи, которых он раньше не видел (например, «Да, я работал X в компании X в течение X лет» или «Ага, для X лет я был X в компании X ").

Однако у меня возникают проблемы с подсказками, когда пользователь не предоставляет все необходимые сущности, что, как я предполагаю, будет довольно распространенным явлением, например, пользователь может ответить просто «да». Если пользователь не предоставит одну из этих сущностей, в приглашении будет спросить: «Какова ваша должность?» И / или «Где вы работали?» И / или «Как долго вы там проработали». Однако даже при установленном флажке «автоматическое расширение» система не будет принимать вводимые пользователем данные, которые не соответствуют одному из приведенных мной примеров («Taco Bell», «4 года», «готовить» и т. Д. ), и он просто повторяет вопрос. И, конечно, я не могу предсказать все возможные ответы.

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

Итак, есть ли способ получить подсказки для требуемых сущностей, чтобы они принимали какой-либо ввод?


person Will    schedule 12.09.2018    source источник


Ответы (1)


Было бы лучше, если бы вы могли задать вопрос, не имеющий множественных ответов. Вы должны сформулировать его таким образом, чтобы пользователь автоматически отвечал нужным образом в соответствии с вашим намерением.

Как вы задали свой вопрос: «У вас есть опыт работы в сфере общественного питания?»
Ответ будет в основном «Да» или «Нет».

Итак, я предлагаю вам поставить два следующих -up намерения захватывают YES и NO, а в YES последующем намерении захватывают другие необходимые сущности. Здесь вы должны пометить их как required.

Кроме того, в исходном родительском намерении продолжайте собирать те же объекты, но не помечайте их как required. Таким образом, вы будете автоматически фиксировать ответы пользователей вроде «Да, я проработал X в компании X в течение X лет».

Теперь, если пользователь говорит только «ДА», у вас будет последующее намерение захватить объекты, а если информация будет предоставлена ​​заранее в родительском объекте, вы можете установить продолжительность жизни контекста для последующего намерения равным «0» так что YES последующие действия не вызываются.

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

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

Диалоговое окно Design-Conversation
Общие рекомендации

person Abhinav Tyagi    schedule 12.09.2018
comment
Спасибо, в этом есть смысл! Единственная часть, с которой я борюсь, - это выяснить, как вызвать ответ «да» ТОЛЬКО в том случае, если отсутствуют какие-либо объекты? Вы упомянули об установке контекста на ноль, но как мне отличить вызов или не вызов в зависимости от того, заполняются ли сущности или нет? Соответственно, что, если две из трех сущностей заполнены первым намерением ... есть ли способ вызвать отслеживание, которое задает только соответствующие вопросы? - person Will; 12.09.2018
comment
Если вы сделаете объекты необязательными в первом намерении, ответ Да или аналогичный вызовет последующее намерение ДА. Вам нужно будет включить регистрацию слотов веб-перехватчиков для захвата объектов. Если все сущности собраны, тогда контекст может быть установлен на 0, чтобы запускать другие другие намерения, иначе вам нужно будет манипулировать контекстами, чтобы захватить все сущности из 2-х намерений. Это потребует некоторых усилий с вашей стороны, и, возможно, у вас есть 2-3 намерения захватить все сущности. - person Abhinav Tyagi; 13.09.2018
comment
Лучше начать с MVP и спланировать беседу так, чтобы пользователь понимал, о чем говорить. Если пользователь не дает правильного ответа, дайте ему подсказку. - person Abhinav Tyagi; 13.09.2018
comment
Ага! Итак, на самом деле нет способа установить контекст на 0, если все объекты собираются без использования веб-перехватчика? - person Will; 23.09.2018
comment
Вы можете установить для контекста значение 0 из Dialogflow. Но в таком случае так будет каждый раз. То, что вам нужно, основано на логике, которую лучше использовать через Webhook. - person Abhinav Tyagi; 23.09.2018