Как вернуться к предыдущему намерению в диалоговом потоке из текущего намерения?

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

Намерение имени пользователя (основное намерение)

Намерение телефонного номера (последующее намерение для имени пользователя, появляется после того, как пользователь вводит имя пользователя)

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

Для интанса:

Бот: Здравствуйте, введите свое имя пользователя. Пользователь: Дэвид Бот: Вы ввели Дэвид в качестве своего имени. введите -1, чтобы изменить свое имя. Введите свой номер телефона. пользователь: -1 Бот: Здравствуйте. Введите свое имя пользователя (соответствует тем же намерениям)

Мне нужно подходящее решение для ее решения. Я пробовал с предыдущим выбором при последующих действиях, но не смог найти решения.

Заранее спасибо.


person Bibek    schedule 16.12.2019    source источник


Ответы (1)


Добавьте событие в ваше enter-name намерение, чтобы вы могли вызвать его из функции выполнения, если пользователь набрал -1.

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

function getPhone(agent) {
   const phoneNumber = agent.parameters.phonenumber;
   if (phoneNumber == -1) {
      agent.add(`Okey, going back`); // This won't print as the followup intent will trigger instanty but you still need to add a response to your agent.
      return agent.setFollowupEvent('change_username');
   } else {
      return agent.add(`You entered ${phoneNumber} as your phone number.`); 
   }
}

let intentMap = new Map();
intentMap.set('enter-phonenumber', getPhone); // where 'enter-phonenumber' is the name of your intent which gathers phonenumbers
agent.handleRequest(intentMap);

введите здесь описание изображения

Включите веб-перехватчик с помощью: https://cloud.google.com/dialogflow/docs/tutorials/build-an-agent/create-fulfillment-using-webhook


В противном случае вы, вероятно, захотели бы посмотреть на что-то вроде этого: https://www.youtube.com/watch?v=xxSa9g3ripQ

Когда вы просто идете дальше и собираете необходимую информацию и имеете намерение с активным контекстом, готовым, если пользователь внезапно набирает by the way, my name is Eric и вместо этого улавливает это там.

person havokles    schedule 16.12.2019
comment
Ну, когда пользователь вводит -1, веб-перехватчик не принимает его и выдает ошибку, например, ответ не определен, потому что он не соответствует какому-либо намерению. Я тоже пробовал откатиться, но не сработает - person Bibek; 17.12.2019
comment
У вас есть настраиваемая сущность для номера телефона? В этом случае попробуйте распознать @ sys.integer. - person havokles; 17.12.2019
comment
Да, я тоже пытался сохранить sys.number, но не сработал. Выдает ту же ошибку - person Bibek; 18.12.2019
comment
Странно, я могу сопоставить -1 на @ sys.integer - person havokles; 19.12.2019