Что я должен сделать, чтобы указать определенное намерение с диалогом - PullRequest
1 голос
/ 28 апреля 2019

Я создал 3intents.

Intent:lost.password.weblogin
Intent:lost.password.2step
Intent:lost.password.credit

eg)
user says: I forgot login password
->Intent:lost.password.weblogin
user says: I forgot 2 step password
->Intent:lost.password.2step
user says: I forgot Credit card PIN
->Intent:lost.password.credit

В случае, если пользователь говорит «Я забыл пароль», что я должен сделать, чтобы указать определенное намерение?

пользователь говорит: я забыл пароль. => ???

1 Ответ

2 голосов
/ 28 апреля 2019

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

Во-первых - помните, что Намерение представляет то, что пользователь говорит , а не то, как вы справляетесь с тем, что они говорят. Он представляет то, что пользователь намерен сделать.

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

Таким образом, вы можете захотеть подойти к этому, создав только один Intent с параметром, который принимает то, как они хотят войти. Вы даже можете сделать этот параметр обязательным, поэтому, если они его не предоставляют, Dialogflow запросит его специально , Это будет одно намерение вместо трех, которые вы предлагаете.

Для этого вы можете создать сущность, которая выглядит примерно так:

enter image description here

Выберите знак плюс рядом с объектами слева. Убедитесь, что вы даете типу сущности имя (я установил здесь «passwordMethod»), а затем введите три сущности, которые имеют смысл для вас. Нажмите кнопку Сохранить, когда вы закончите.

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

enter image description here

Ваш webhook будет вызываться с намерением "lost.password", а для параметра passwordMethod будет установлено одно из значений Entity: "login", "2fa" или "pin".

Теперь вы можете реагировать соответственно в зависимости от значения параметра. В имеющемся у вас обработчике намерений вы увидите, какой параметр установлен, а затем вызовете обычные функции в своем веб-крюке для его обработки. Это довольно стандартное программирование на данный момент - вам не нужно несколько Intents или Intent Handlers, просто разные функции, которые выполняют работу и отправляют ответы.

...