Диалоговый поток: «Рекурсивный» поток интентов (повтор, редактирование, подтверждение и возврат). - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть намерение, которое срабатывает благодаря событию. Это событие устанавливает значение параметров намерения. В любом случае, в данных могут быть какие-то ошибки (или их нет, но этот случай прост и не является частью вопроса). Теперь давайте сделаем пример. Мое намерение имеет следующие параметры:

  • имя (персона типа диалога), значение: "Джон Доу"
  • день рождения (дата типа диалога), значение: "1975-12-14"
  • город (тип гео-города типа диалога), значение:" Рим "

но меня зовут Джек Доу .

confirmation flow

Изображение описывает поток лучше, чем я, но я пытаюсь объяснить:

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

Пользователь : нет

Бот :что вы хотите изменить?

Пользователь : имя

Бот : Хорошо, как вас зовут?

Пользователь : Джек Доу

В этот момент я хотел бы вернуться к цели, которая отображает всю информацию и снова запрашивает подтверждение (конечно, имя будет "Джек Доу" ввторая итерация). Пользователь может изменять значения снова и снова, пока он не подтвердит, что значения верны.

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

Есть идеи, как мне реализовать этот поток? Или вариант, который может получить тот же результат?

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

1 Ответ

2 голосов
/ 05 ноября 2019

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

enter image description here

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

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

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