обрабатывать несколько запросов на подтверждение - PullRequest
0 голосов
/ 13 июля 2020

Как обрабатывать несколько запросов на подтверждение: вариант использования, первое приглашение - спросить, хотите ли вы добавить больше продуктов? если да, следует повторить намерение взять больше продуктов и количества, если нет, следует запросить подтверждение - я должен разместить заказ? -> если да, оформить заказ, если нет -> отменить

1 Ответ

0 голосов
/ 24 июля 2020

Короткий ответ: используйте sessionAttributes

‐------------

Длинный ответ с подсказкой:

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

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

Допустим, у вас есть бот для заказа пиццы. Для начинки это может быть так.

Бот: Какую начинку вы хотите? Пользователь: Сыр Бот: Хотите еще топпинга? Пользователь: Да Бот: Какую начинку вы хотите? Юзер: Peppers Бот: Хотите еще топпинга? (... снова и снова, неестественно)

Так будет более естественно, если вы измените на:

Бот: Сколько начинки вы хотите? Пользователь: 3 Бот: Хорошо, а какая первая добавка? Пользователь: Сыр Бот: Понятно, а какая вторая начинка? (намного короче, естественнее)

В обоих случаях у вас будет один слот для начинки, и каждый раз, когда вы собираете 1 значение, вы копируете это значение в sessionAttributes бота и стираете слот из объекта slots, который вы возвращаете боту, когда вы ElicitSlot для того же слота.

Затем, когда пользователь подтверждает, что он закончил, выдает вам все «начинки» или продукты, которые они хотите, тогда вы можете объединить все предыдущие значения из своего sessionAttributes и выполнить намерение.

...