Мой Amazon Lex ElicitSlot повторяет подсказку. Как мне продолжить поток?

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

https://imgur.com/a/7Am7BSh


person PythonSmython    schedule 14.07.2020    source источник


Ответы (1)


В ответе ElicitSlot dialogAction от функции Lambda вы в настоящее время возвращаете только значение CheeseSlot. Если вы не возвращаете значения для других слотов, Lex рассматривает их как null, и, как вы заметили, ожидается, что весь поток начнется заново, поскольку слоты помечены как обязательные.

Итак, в ответе от функции Lambda верните все слоты, которые были заполнены при сбросе значения CheeseSlot.

person Paradigm    schedule 14.07.2020
comment
В настоящее время я столкнулся с той же проблемой. Означает ли это, что мне нужно возвращать несколько значений в slottoelicit? - person lakshmi; 17.07.2020
comment
@lakshmi Нет, вы должны вернуть только одно имя слота в параметре slotToElicit. Параметр slots будет содержать все значения слотов, уже взятые у пользователя, которые вы не хотите сбрасывать. - person Paradigm; 17.07.2020
comment
@lakshmi ты нашел какое-нибудь решение. или не могли бы вы поделиться своим обновленным кодом. У меня такая же проблема, и я застрял в ней. Не могли бы вы помочь? - person Tayyab; 09.11.2020
comment
@Tayyab Я просто создал отдельные намерения для каждого слота вместо того, чтобы иметь несколько слотов в одном намерении. - person lakshmi; 09.11.2020
comment
@lakshmi, я не думаю, что это хороший подход. это?? - person Tayyab; 10.11.2020
comment
Использование отдельных намерений не рекомендуется, так как это обязательно повлияет на логику сопоставления намерений ботов, и вскоре вы также столкнетесь с максимальным числом намерений на одного бота, равным 100: docs.aws.amazon.com/lex/latest/dg/gl-limits.html#gl-limits -боты - person Paradigm; 10.11.2020