Как заставить бот AWS Lex запрашивать последующие действия после выполнения намерения (используя Lambda)? - PullRequest
0 голосов
/ 23 января 2019

Бот не отображает последующее приглашение, даже если оно настроено в разделе «Ответ» в «Назначении».Это работает, если в качестве параметра Fulfillment выбран «ReturnParametersToClient».Когда выполнение изменяется на лямбда-функцию AWS, он больше не задает дополнительный вопрос.

Например: если мой пользователь вводит

3x10

У меня есть лямбда-функция для выполнения этого вычисления и возврата результатов в формате JSON, который ожидает Лекс.Таким образом, он отображает

30

Затем он должен представить следующий вопрос

Would you like me to do another calculation?

, на который пользователь может ответить

No

Из того, что я понимаюв разделе «Ответ» на странице редактора намерений я могу настроить вопрос «Хотите, чтобы я сделал еще один расчет?»и другое сообщение (в разделе «Ожидание ответа пользователя», если пользователь отвечает отрицательно.

1 Ответ

0 голосов
/ 24 января 2019

Да, все работает так, как задумано.

Вы можете сделать одно или другое.
Либо (1) настроить ответ в консоли Lex, когда намерение выполнено.
Или (2) создайте свой собственный ответ в Lambda, когда намерение будет выполнено.

Использование функции Lambda дает вам гораздо больший контроль над вашим ботом и позволяет вам отвечать более динамичными и адаптированными сообщениями.

Так что, если вы переходите на использование лямбды, вы должны будете сами создать этот ответ при выполнении намерения.Возможно, вы захотите использовать confirmIntent для этого типа вопросов да / нет.

Проверьте Формат ответа Lambda-Lex (подтвердите намерение на полпути вниз по странице)

ConfirmIntent - сообщает Amazon Lex, что от пользователя ожидается, что он ответит «да» или «нет» для подтверждения или отклонения текущего намерения.

Отправка этого ответа в качестве Подтверждения будет выглядеть примерно так::

"dialogAction": {
    "type": "ConfirmIntent",
    "message": {
      "contentType": "PlainText",
      "content": "Would you like me to do another calculation?"
    },
    "intentName": "intent-name",
    "slots": {
       "slot-name": "value",
       "slot-name": "value",
       "slot-name": "value"  
   },
}

Ваша лямбда должна будет обработать ответ на этот вопрос.
Ответ пользователя будет возвращен с тем же намерением, и confirmationStatus будет:
None -не подтверждено Используется
Confirmed - пользователь ответил «да» на вопрос о подтверждении
Denied - пользователь ответил «нет» на вопрос о подтверждении

Проверьте ту же ссылку выше в верхней частистраницы для формата входного события от Lex к Lambda.


Просто подсказка:

Вместо этого вы можете просто выполнить намерение с помощью сообщения close и спросить пользователячто-то вроде "Как еще я могупомочь вам? "

Тогда пользователь может сразу задать другой расчет, не сказав да или нет перед каждым вопросом расчета.

...