Как заставить моего агента повторять любое имя - Dialogflow - PullRequest
0 голосов
/ 22 января 2019

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

У меня есть 1 объект с именем: Name.

У меня есть 1 объект с именем: RepeatName.

У меня есть 1 обучающая фраза:

"Repeat this name: {Name}"

Затем я выделил «{Имя}» и щелкнул свою сущность @ Name

Затем под этой обучающей фразой будет следующее:

Parameter Name: Name
Entity: @Name
Resolved Value: {Name}

В разделе Действия и параметры у меня есть:

Required: Checked
Parameter Name: Name
Entity: @Name
Value: $Name

В разделе Ответы у меня есть текстовый ответ:

"Ok. I'll repeat this name: $Name"

Затем я пробую его с помощью:

«Повторите это имя: Джон»

Но тогда он не устанавливает имя параметра

Однако, когда я пытаюсь:

«Повторите это имя: Имя»

Тогда я получу ожидаемый ответ:

«Хорошо. Я повторю это имя: Имя»

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

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Попробуйте это с помощью встроенной системной сущности - @sys.given-name.

То, что вы сделали, создали сущность с именем Name, затем вы включили define synonyms, которая используется для создания примеров вашей сущности.
Но тогда вы отключили allowed automated expansion, что означает, что все, кроме ваших определенных синонимов, не будет идентифицироваться как ваша сущность.
Вы определили только один синоним, то есть Name, поэтому распознается только тот, который *

Так что или попробуйте то же самое с @sys.given-name, который предварительно обучен для идентификации имен, или обучите свою пользовательскую сущность Name с максимально возможным количеством примеров после включения allowed automatic expansion (но это может привести к распознаванию неправильных значений).

repeat-name-intent

Надеюсь, это поможет.

0 голосов
/ 22 января 2019

Проблема в том, что вы используете Тип сущности разработчика , чтобы попытаться определить параметр, который вы ожидаете получить здесь. Затем вы не указываете никаких возможных значений сущности для этого типа сущности, кроме «name». Таким образом, имя "имя" является единственным, который соответствует.

У вас есть несколько вариантов.

Вы можете использовать Тип системного объекта из @sys.given-name. Это включает в себя наиболее распространенные имена определенного языка, но может быть недостаточно хорошим, если вы ожидаете других имен.

Вы можете использовать тип системного объекта @sys.any, но не рекомендуется злоупотреблять этим типом объекта, поскольку он может собирать мусор или не соответствовать фразе.

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

Чтобы выяснить, какой вариант лучше всего подходит для вас, потребуется некоторое тестирование с вашей стороны. Обычно я использую сущности, когда могу четко определить типы или псевдонимы, и использую @sys.any, когда не могу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...