Повторный запрос пользователей после неверного ввода - PullRequest
0 голосов
/ 25 марта 2019

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

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

Итак, я создал 2 параметра в намерении, которые заполняются через подсказки, после чего я выполняю проверку. Вот код:

function getPasscode(agent) {
  console.log(agent.parameters);
  if(/^\d{6}$/.test(agent.parameters.code1) && agent.parameters.code1 == agent.parameters.code2) {
    // Reset passcode call
  } else {
    return new Promise((resolve, reject) => {
      agent.add("Your codes don't match. Please try again.");
      var output = JSON.stringify({"followupEvent": {"name": "GetPasscode", "data": {}}})
      resolve(output);
    });
  }
}

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

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

В вашем случае использования вам не нужно вызывать событие согласно моему пониманию.Лучший способ сделать это:

  • Настройка, где вы спрашиваете, подтверждаете пароль и сохраняете его
  • Подтвердите это в своем веб-крюке

Вот псевдокод:

if validationPassed {
    call your api to reset password
    send reset password confirmation output to user
} 
if validationFailed {
    setup output context to ask-password intent again
    send output to user to re-enter the password
}

Как говорит @Prisoner, вы не инициируете намерение, а пользователь.Мы выполняем обработку и отправляем ответ, когда намерение инициируется.
Надеюсь, это поможет.

0 голосов
/ 25 марта 2019

Помните, что Intents представляет то, что пользователь делает , а , а не , что пытается сделать ваше действие. В общем, вы не «запускаете» намерение - пользователь делает.

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

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

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